[AArch64] Add ARMv8.3 combined pointer authentication load instructions
[deliverable/binutils-gdb.git] / opcodes / aarch64-dis-2.c
index 8e85dbf2e27c66831dab69f940c8bbd1ca4d9dd5..3506cec0f3e32a8679afb9a1fef0e77d7d735b87 100644 (file)
@@ -40,7 +40,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                          10987654321098765432109876543210
                          xxxxxxxxxxxxxxxxxxxxxxxx0000xxx0
                          adr.  */
-                      return 1115;
+                      return 1148;
                     }
                   else
                     {
@@ -48,7 +48,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                          10987654321098765432109876543210
                          xxxxxxxxxxxxxxxxxxxxxxxx0000xxx1
                          adrp.  */
-                      return 1116;
+                      return 1149;
                     }
                 }
               else
@@ -115,7 +115,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx0xxxxx000x0010000
                                                  stxrb.  */
-                                              return 873;
+                                              return 906;
                                             }
                                           else
                                             {
@@ -123,7 +123,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx0xxxxx000x0010010
                                                  stxrh.  */
-                                              return 879;
+                                              return 912;
                                             }
                                         }
                                       else
@@ -132,7 +132,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx0xxxxx000x00100x1
                                              stxr.  */
-                                          return 885;
+                                          return 918;
                                         }
                                     }
                                   else
@@ -143,7 +143,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx0xxxxx100x00100x0
                                              casp.  */
-                                          return 950;
+                                          return 983;
                                         }
                                       else
                                         {
@@ -151,7 +151,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx0xxxxx100x00100x1
                                              stxp.  */
-                                          return 887;
+                                          return 920;
                                         }
                                     }
                                 }
@@ -167,7 +167,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx1xxxxx000x0010000
                                                  stlxrb.  */
-                                              return 874;
+                                              return 907;
                                             }
                                           else
                                             {
@@ -175,7 +175,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx1xxxxx000x0010010
                                                  stlxrh.  */
-                                              return 880;
+                                              return 913;
                                             }
                                         }
                                       else
@@ -184,7 +184,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx1xxxxx000x00100x1
                                              stlxr.  */
-                                          return 886;
+                                          return 919;
                                         }
                                     }
                                   else
@@ -195,7 +195,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx1xxxxx100x00100x0
                                              caspl.  */
-                                          return 952;
+                                          return 985;
                                         }
                                       else
                                         {
@@ -203,7 +203,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx1xxxxx100x00100x1
                                              stlxp.  */
-                                          return 888;
+                                          return 921;
                                         }
                                     }
                                 }
@@ -214,7 +214,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxx00x00101xx
                                  stnp.  */
-                              return 901;
+                              return 934;
                             }
                         }
                       else
@@ -231,7 +231,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx0xxxxx001x00100x0
                                              stllrb.  */
-                                          return 899;
+                                          return 932;
                                         }
                                       else
                                         {
@@ -239,7 +239,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx0xxxxx001x00100x1
                                              stllr.  */
-                                          return 898;
+                                          return 931;
                                         }
                                     }
                                   else
@@ -252,7 +252,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx0xxxxx101x0010000
                                                  casb.  */
-                                              return 938;
+                                              return 971;
                                             }
                                           else
                                             {
@@ -260,7 +260,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx0xxxxx101x0010010
                                                  cash.  */
-                                              return 939;
+                                              return 972;
                                             }
                                         }
                                       else
@@ -269,7 +269,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx0xxxxx101x00100x1
                                              cas.  */
-                                          return 940;
+                                          return 973;
                                         }
                                     }
                                 }
@@ -285,7 +285,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx1xxxxx001x0010000
                                                  stlrb.  */
-                                              return 877;
+                                              return 910;
                                             }
                                           else
                                             {
@@ -293,7 +293,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx1xxxxx001x0010010
                                                  stlrh.  */
-                                              return 883;
+                                              return 916;
                                             }
                                         }
                                       else
@@ -302,7 +302,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx1xxxxx001x00100x1
                                              stlr.  */
-                                          return 893;
+                                          return 926;
                                         }
                                     }
                                   else
@@ -315,7 +315,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx1xxxxx101x0010000
                                                  caslb.  */
-                                              return 942;
+                                              return 975;
                                             }
                                           else
                                             {
@@ -323,7 +323,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx1xxxxx101x0010010
                                                  caslh.  */
-                                              return 945;
+                                              return 978;
                                             }
                                         }
                                       else
@@ -332,7 +332,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx1xxxxx101x00100x1
                                              casl.  */
-                                          return 948;
+                                          return 981;
                                         }
                                     }
                                 }
@@ -343,7 +343,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxx01x00101xx
                                  stp.  */
-                              return 910;
+                              return 943;
                             }
                         }
                     }
@@ -365,7 +365,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx0xxxxx010x0010000
                                                  ldxrb.  */
-                                              return 875;
+                                              return 908;
                                             }
                                           else
                                             {
@@ -373,7 +373,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx0xxxxx010x0010010
                                                  ldxrh.  */
-                                              return 881;
+                                              return 914;
                                             }
                                         }
                                       else
@@ -382,7 +382,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx0xxxxx010x00100x1
                                              ldxr.  */
-                                          return 889;
+                                          return 922;
                                         }
                                     }
                                   else
@@ -393,7 +393,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx0xxxxx110x00100x0
                                              caspa.  */
-                                          return 951;
+                                          return 984;
                                         }
                                       else
                                         {
@@ -401,7 +401,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx0xxxxx110x00100x1
                                              ldxp.  */
-                                          return 891;
+                                          return 924;
                                         }
                                     }
                                 }
@@ -417,7 +417,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx1xxxxx010x0010000
                                                  ldaxrb.  */
-                                              return 876;
+                                              return 909;
                                             }
                                           else
                                             {
@@ -425,7 +425,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx1xxxxx010x0010010
                                                  ldaxrh.  */
-                                              return 882;
+                                              return 915;
                                             }
                                         }
                                       else
@@ -434,7 +434,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx1xxxxx010x00100x1
                                              ldaxr.  */
-                                          return 890;
+                                          return 923;
                                         }
                                     }
                                   else
@@ -445,7 +445,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx1xxxxx110x00100x0
                                              caspal.  */
-                                          return 953;
+                                          return 986;
                                         }
                                       else
                                         {
@@ -453,7 +453,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx1xxxxx110x00100x1
                                              ldaxp.  */
-                                          return 892;
+                                          return 925;
                                         }
                                     }
                                 }
@@ -466,7 +466,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx10x001010x
                                      ldnp.  */
-                                  return 902;
+                                  return 935;
                                 }
                               else
                                 {
@@ -474,7 +474,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx10x001011x
                                      ldpsw.  */
-                                  return 909;
+                                  return 942;
                                 }
                             }
                         }
@@ -494,7 +494,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx0xxxxx011x0010000
                                                  ldlarb.  */
-                                              return 896;
+                                              return 929;
                                             }
                                           else
                                             {
@@ -502,7 +502,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx0xxxxx011x0010010
                                                  ldlarh.  */
-                                              return 897;
+                                              return 930;
                                             }
                                         }
                                       else
@@ -511,7 +511,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx0xxxxx011x00100x1
                                              ldlar.  */
-                                          return 895;
+                                          return 928;
                                         }
                                     }
                                   else
@@ -524,7 +524,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx0xxxxx111x0010000
                                                  casab.  */
-                                              return 941;
+                                              return 974;
                                             }
                                           else
                                             {
@@ -532,7 +532,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx0xxxxx111x0010010
                                                  casah.  */
-                                              return 944;
+                                              return 977;
                                             }
                                         }
                                       else
@@ -541,7 +541,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx0xxxxx111x00100x1
                                              casa.  */
-                                          return 947;
+                                          return 980;
                                         }
                                     }
                                 }
@@ -557,7 +557,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx1xxxxx011x0010000
                                                  ldarb.  */
-                                              return 878;
+                                              return 911;
                                             }
                                           else
                                             {
@@ -565,7 +565,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx1xxxxx011x0010010
                                                  ldarh.  */
-                                              return 884;
+                                              return 917;
                                             }
                                         }
                                       else
@@ -574,7 +574,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx1xxxxx011x00100x1
                                              ldar.  */
-                                          return 894;
+                                          return 927;
                                         }
                                     }
                                   else
@@ -587,7 +587,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx1xxxxx111x0010000
                                                  casalb.  */
-                                              return 943;
+                                              return 976;
                                             }
                                           else
                                             {
@@ -595,7 +595,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx1xxxxx111x0010010
                                                  casalh.  */
-                                              return 946;
+                                              return 979;
                                             }
                                         }
                                       else
@@ -604,7 +604,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx1xxxxx111x00100x1
                                              casal.  */
-                                          return 949;
+                                          return 982;
                                         }
                                     }
                                 }
@@ -617,7 +617,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx11x001010x
                                      ldp.  */
-                                  return 911;
+                                  return 944;
                                 }
                               else
                                 {
@@ -625,7 +625,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx11x001011x
                                      ldpsw.  */
-                                  return 914;
+                                  return 947;
                                 }
                             }
                         }
@@ -643,7 +643,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxxxx000110x0
                                  ldr.  */
-                              return 915;
+                              return 948;
                             }
                           else
                             {
@@ -653,7 +653,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxxxx00011001
                                      ldrsw.  */
-                                  return 917;
+                                  return 950;
                                 }
                               else
                                 {
@@ -661,7 +661,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxxxx00011011
                                      prfm.  */
-                                  return 918;
+                                  return 951;
                                 }
                             }
                         }
@@ -685,7 +685,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx00xxxxxxxxx00000011100
                                                          sturb.  */
-                                                      return 861;
+                                                      return 892;
                                                     }
                                                   else
                                                     {
@@ -693,7 +693,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx00xxxxxxxxx00000011110
                                                          sturh.  */
-                                                      return 866;
+                                                      return 897;
                                                     }
                                                 }
                                               else
@@ -702,7 +702,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx00xxxxxxxxx000000111x1
                                                      stur.  */
-                                                  return 869;
+                                                  return 900;
                                                 }
                                             }
                                           else
@@ -715,7 +715,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx00xxxxxxxxx01000011100
                                                          ldurb.  */
-                                                      return 862;
+                                                      return 893;
                                                     }
                                                   else
                                                     {
@@ -723,7 +723,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx00xxxxxxxxx01000011110
                                                          ldurh.  */
-                                                      return 867;
+                                                      return 898;
                                                     }
                                                 }
                                               else
@@ -732,7 +732,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx00xxxxxxxxx010000111x1
                                                      ldur.  */
-                                                  return 870;
+                                                  return 901;
                                                 }
                                             }
                                         }
@@ -746,7 +746,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx00xxxxxxxxx0x100011100
                                                      ldursb.  */
-                                                  return 863;
+                                                  return 894;
                                                 }
                                               else
                                                 {
@@ -754,7 +754,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx00xxxxxxxxx0x100011101
                                                      ldursw.  */
-                                                  return 871;
+                                                  return 902;
                                                 }
                                             }
                                           else
@@ -765,7 +765,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx00xxxxxxxxx0x100011110
                                                      ldursh.  */
-                                                  return 868;
+                                                  return 899;
                                                 }
                                               else
                                                 {
@@ -773,7 +773,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx00xxxxxxxxx0x100011111
                                                      prfum.  */
-                                                  return 872;
+                                                  return 903;
                                                 }
                                             }
                                         }
@@ -800,7 +800,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000xxxxx10000011100
                                                                          ldaddb.  */
-                                                                      return 966;
+                                                                      return 999;
                                                                     }
                                                                   else
                                                                     {
@@ -808,7 +808,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000xxxxx10000011110
                                                                          ldaddh.  */
-                                                                      return 967;
+                                                                      return 1000;
                                                                     }
                                                                 }
                                                               else
@@ -817,7 +817,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx000000xxxxx100000111x1
                                                                      ldadd.  */
-                                                                  return 968;
+                                                                  return 1001;
                                                                 }
                                                             }
                                                           else
@@ -830,7 +830,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000xxxxx10100011100
                                                                          ldaddab.  */
-                                                                      return 969;
+                                                                      return 1002;
                                                                     }
                                                                   else
                                                                     {
@@ -838,7 +838,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000xxxxx10100011110
                                                                          ldaddah.  */
-                                                                      return 972;
+                                                                      return 1005;
                                                                     }
                                                                 }
                                                               else
@@ -847,7 +847,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx000000xxxxx101000111x1
                                                                      ldadda.  */
-                                                                  return 975;
+                                                                  return 1008;
                                                                 }
                                                             }
                                                         }
@@ -863,7 +863,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000xxxxx11000011100
                                                                          ldaddlb.  */
-                                                                      return 970;
+                                                                      return 1003;
                                                                     }
                                                                   else
                                                                     {
@@ -871,7 +871,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000xxxxx11000011110
                                                                          ldaddlh.  */
-                                                                      return 973;
+                                                                      return 1006;
                                                                     }
                                                                 }
                                                               else
@@ -880,7 +880,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx000000xxxxx110000111x1
                                                                      ldaddl.  */
-                                                                  return 976;
+                                                                  return 1009;
                                                                 }
                                                             }
                                                           else
@@ -893,7 +893,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000xxxxx11100011100
                                                                          ldaddalb.  */
-                                                                      return 971;
+                                                                      return 1004;
                                                                     }
                                                                   else
                                                                     {
@@ -901,7 +901,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000xxxxx11100011110
                                                                          ldaddalh.  */
-                                                                      return 974;
+                                                                      return 1007;
                                                                     }
                                                                 }
                                                               else
@@ -910,7 +910,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx000000xxxxx111000111x1
                                                                      ldaddal.  */
-                                                                  return 977;
+                                                                  return 1010;
                                                                 }
                                                             }
                                                         }
@@ -929,7 +929,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000001xxxxx10000011100
                                                                          swpb.  */
-                                                                      return 954;
+                                                                      return 987;
                                                                     }
                                                                   else
                                                                     {
@@ -937,7 +937,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000001xxxxx10000011110
                                                                          swph.  */
-                                                                      return 955;
+                                                                      return 988;
                                                                     }
                                                                 }
                                                               else
@@ -946,7 +946,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx000001xxxxx100000111x1
                                                                      swp.  */
-                                                                  return 956;
+                                                                  return 989;
                                                                 }
                                                             }
                                                           else
@@ -959,7 +959,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000001xxxxx10100011100
                                                                          swpab.  */
-                                                                      return 957;
+                                                                      return 990;
                                                                     }
                                                                   else
                                                                     {
@@ -967,7 +967,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000001xxxxx10100011110
                                                                          swpah.  */
-                                                                      return 960;
+                                                                      return 993;
                                                                     }
                                                                 }
                                                               else
@@ -976,7 +976,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx000001xxxxx101000111x1
                                                                      swpa.  */
-                                                                  return 963;
+                                                                  return 996;
                                                                 }
                                                             }
                                                         }
@@ -992,7 +992,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000001xxxxx11000011100
                                                                          swplb.  */
-                                                                      return 958;
+                                                                      return 991;
                                                                     }
                                                                   else
                                                                     {
@@ -1000,7 +1000,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000001xxxxx11000011110
                                                                          swplh.  */
-                                                                      return 961;
+                                                                      return 994;
                                                                     }
                                                                 }
                                                               else
@@ -1009,7 +1009,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx000001xxxxx110000111x1
                                                                      swpl.  */
-                                                                  return 964;
+                                                                  return 997;
                                                                 }
                                                             }
                                                           else
@@ -1022,7 +1022,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000001xxxxx11100011100
                                                                          swpalb.  */
-                                                                      return 959;
+                                                                      return 992;
                                                                     }
                                                                   else
                                                                     {
@@ -1030,7 +1030,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000001xxxxx11100011110
                                                                          swpalh.  */
-                                                                      return 962;
+                                                                      return 995;
                                                                     }
                                                                 }
                                                               else
@@ -1039,7 +1039,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx000001xxxxx111000111x1
                                                                      swpal.  */
-                                                                  return 965;
+                                                                  return 998;
                                                                 }
                                                             }
                                                         }
@@ -1059,7 +1059,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00001xxxxxx10000011100
                                                                      ldsmaxb.  */
-                                                                  return 1014;
+                                                                  return 1047;
                                                                 }
                                                               else
                                                                 {
@@ -1067,7 +1067,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00001xxxxxx10000011110
                                                                      ldsmaxh.  */
-                                                                  return 1015;
+                                                                  return 1048;
                                                                 }
                                                             }
                                                           else
@@ -1076,7 +1076,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00001xxxxxx100000111x1
                                                                  ldsmax.  */
-                                                              return 1016;
+                                                              return 1049;
                                                             }
                                                         }
                                                       else
@@ -1089,7 +1089,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00001xxxxxx10100011100
                                                                      ldsmaxab.  */
-                                                                  return 1017;
+                                                                  return 1050;
                                                                 }
                                                               else
                                                                 {
@@ -1097,7 +1097,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00001xxxxxx10100011110
                                                                      ldsmaxah.  */
-                                                                  return 1020;
+                                                                  return 1053;
                                                                 }
                                                             }
                                                           else
@@ -1106,7 +1106,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00001xxxxxx101000111x1
                                                                  ldsmaxa.  */
-                                                              return 1023;
+                                                              return 1056;
                                                             }
                                                         }
                                                     }
@@ -1122,7 +1122,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00001xxxxxx11000011100
                                                                      ldsmaxlb.  */
-                                                                  return 1018;
+                                                                  return 1051;
                                                                 }
                                                               else
                                                                 {
@@ -1130,7 +1130,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00001xxxxxx11000011110
                                                                      ldsmaxlh.  */
-                                                                  return 1021;
+                                                                  return 1054;
                                                                 }
                                                             }
                                                           else
@@ -1139,7 +1139,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00001xxxxxx110000111x1
                                                                  ldsmaxl.  */
-                                                              return 1024;
+                                                              return 1057;
                                                             }
                                                         }
                                                       else
@@ -1152,7 +1152,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00001xxxxxx11100011100
                                                                      ldsmaxalb.  */
-                                                                  return 1019;
+                                                                  return 1052;
                                                                 }
                                                               else
                                                                 {
@@ -1160,7 +1160,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00001xxxxxx11100011110
                                                                      ldsmaxalh.  */
-                                                                  return 1022;
+                                                                  return 1055;
                                                                 }
                                                             }
                                                           else
@@ -1169,7 +1169,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00001xxxxxx111000111x1
                                                                  ldsmaxal.  */
-                                                              return 1025;
+                                                              return 1058;
                                                             }
                                                         }
                                                     }
@@ -1191,7 +1191,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00010xxxxxx10000011100
                                                                      ldeorb.  */
-                                                                  return 990;
+                                                                  return 1023;
                                                                 }
                                                               else
                                                                 {
@@ -1199,7 +1199,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00010xxxxxx10000011110
                                                                      ldeorh.  */
-                                                                  return 991;
+                                                                  return 1024;
                                                                 }
                                                             }
                                                           else
@@ -1208,7 +1208,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00010xxxxxx100000111x1
                                                                  ldeor.  */
-                                                              return 992;
+                                                              return 1025;
                                                             }
                                                         }
                                                       else
@@ -1221,7 +1221,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00010xxxxxx10100011100
                                                                      ldeorab.  */
-                                                                  return 993;
+                                                                  return 1026;
                                                                 }
                                                               else
                                                                 {
@@ -1229,7 +1229,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00010xxxxxx10100011110
                                                                      ldeorah.  */
-                                                                  return 996;
+                                                                  return 1029;
                                                                 }
                                                             }
                                                           else
@@ -1238,7 +1238,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00010xxxxxx101000111x1
                                                                  ldeora.  */
-                                                              return 999;
+                                                              return 1032;
                                                             }
                                                         }
                                                     }
@@ -1254,7 +1254,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00010xxxxxx11000011100
                                                                      ldeorlb.  */
-                                                                  return 994;
+                                                                  return 1027;
                                                                 }
                                                               else
                                                                 {
@@ -1262,7 +1262,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00010xxxxxx11000011110
                                                                      ldeorlh.  */
-                                                                  return 997;
+                                                                  return 1030;
                                                                 }
                                                             }
                                                           else
@@ -1271,7 +1271,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00010xxxxxx110000111x1
                                                                  ldeorl.  */
-                                                              return 1000;
+                                                              return 1033;
                                                             }
                                                         }
                                                       else
@@ -1284,7 +1284,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00010xxxxxx11100011100
                                                                      ldeoralb.  */
-                                                                  return 995;
+                                                                  return 1028;
                                                                 }
                                                               else
                                                                 {
@@ -1292,7 +1292,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00010xxxxxx11100011110
                                                                      ldeoralh.  */
-                                                                  return 998;
+                                                                  return 1031;
                                                                 }
                                                             }
                                                           else
@@ -1301,7 +1301,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00010xxxxxx111000111x1
                                                                  ldeoral.  */
-                                                              return 1001;
+                                                              return 1034;
                                                             }
                                                         }
                                                     }
@@ -1320,7 +1320,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00011xxxxxx10000011100
                                                                      ldumaxb.  */
-                                                                  return 1038;
+                                                                  return 1071;
                                                                 }
                                                               else
                                                                 {
@@ -1328,7 +1328,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00011xxxxxx10000011110
                                                                      ldumaxh.  */
-                                                                  return 1039;
+                                                                  return 1072;
                                                                 }
                                                             }
                                                           else
@@ -1337,7 +1337,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00011xxxxxx100000111x1
                                                                  ldumax.  */
-                                                              return 1040;
+                                                              return 1073;
                                                             }
                                                         }
                                                       else
@@ -1350,7 +1350,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00011xxxxxx10100011100
                                                                      ldumaxab.  */
-                                                                  return 1041;
+                                                                  return 1074;
                                                                 }
                                                               else
                                                                 {
@@ -1358,7 +1358,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00011xxxxxx10100011110
                                                                      ldumaxah.  */
-                                                                  return 1044;
+                                                                  return 1077;
                                                                 }
                                                             }
                                                           else
@@ -1367,7 +1367,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00011xxxxxx101000111x1
                                                                  ldumaxa.  */
-                                                              return 1047;
+                                                              return 1080;
                                                             }
                                                         }
                                                     }
@@ -1383,7 +1383,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00011xxxxxx11000011100
                                                                      ldumaxlb.  */
-                                                                  return 1042;
+                                                                  return 1075;
                                                                 }
                                                               else
                                                                 {
@@ -1391,7 +1391,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00011xxxxxx11000011110
                                                                      ldumaxlh.  */
-                                                                  return 1045;
+                                                                  return 1078;
                                                                 }
                                                             }
                                                           else
@@ -1400,7 +1400,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00011xxxxxx110000111x1
                                                                  ldumaxl.  */
-                                                              return 1048;
+                                                              return 1081;
                                                             }
                                                         }
                                                       else
@@ -1413,7 +1413,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00011xxxxxx11100011100
                                                                      ldumaxalb.  */
-                                                                  return 1043;
+                                                                  return 1076;
                                                                 }
                                                               else
                                                                 {
@@ -1421,7 +1421,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00011xxxxxx11100011110
                                                                      ldumaxalh.  */
-                                                                  return 1046;
+                                                                  return 1079;
                                                                 }
                                                             }
                                                           else
@@ -1430,7 +1430,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00011xxxxxx111000111x1
                                                                  ldumaxal.  */
-                                                              return 1049;
+                                                              return 1082;
                                                             }
                                                         }
                                                     }
@@ -1455,7 +1455,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00100xxxxxx10000011100
                                                                      ldclrb.  */
-                                                                  return 978;
+                                                                  return 1011;
                                                                 }
                                                               else
                                                                 {
@@ -1463,7 +1463,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00100xxxxxx10000011110
                                                                      ldclrh.  */
-                                                                  return 979;
+                                                                  return 1012;
                                                                 }
                                                             }
                                                           else
@@ -1472,7 +1472,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00100xxxxxx100000111x1
                                                                  ldclr.  */
-                                                              return 980;
+                                                              return 1013;
                                                             }
                                                         }
                                                       else
@@ -1485,7 +1485,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00100xxxxxx10100011100
                                                                      ldclrab.  */
-                                                                  return 981;
+                                                                  return 1014;
                                                                 }
                                                               else
                                                                 {
@@ -1493,7 +1493,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00100xxxxxx10100011110
                                                                      ldclrah.  */
-                                                                  return 984;
+                                                                  return 1017;
                                                                 }
                                                             }
                                                           else
@@ -1502,7 +1502,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00100xxxxxx101000111x1
                                                                  ldclra.  */
-                                                              return 987;
+                                                              return 1020;
                                                             }
                                                         }
                                                     }
@@ -1518,7 +1518,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00100xxxxxx11000011100
                                                                      ldclrlb.  */
-                                                                  return 982;
+                                                                  return 1015;
                                                                 }
                                                               else
                                                                 {
@@ -1526,7 +1526,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00100xxxxxx11000011110
                                                                      ldclrlh.  */
-                                                                  return 985;
+                                                                  return 1018;
                                                                 }
                                                             }
                                                           else
@@ -1535,7 +1535,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00100xxxxxx110000111x1
                                                                  ldclrl.  */
-                                                              return 988;
+                                                              return 1021;
                                                             }
                                                         }
                                                       else
@@ -1548,7 +1548,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00100xxxxxx11100011100
                                                                      ldclralb.  */
-                                                                  return 983;
+                                                                  return 1016;
                                                                 }
                                                               else
                                                                 {
@@ -1556,7 +1556,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00100xxxxxx11100011110
                                                                      ldclralh.  */
-                                                                  return 986;
+                                                                  return 1019;
                                                                 }
                                                             }
                                                           else
@@ -1565,7 +1565,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00100xxxxxx111000111x1
                                                                  ldclral.  */
-                                                              return 989;
+                                                              return 1022;
                                                             }
                                                         }
                                                     }
@@ -1584,7 +1584,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00101xxxxxx10000011100
                                                                      ldsminb.  */
-                                                                  return 1026;
+                                                                  return 1059;
                                                                 }
                                                               else
                                                                 {
@@ -1592,7 +1592,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00101xxxxxx10000011110
                                                                      ldsminh.  */
-                                                                  return 1027;
+                                                                  return 1060;
                                                                 }
                                                             }
                                                           else
@@ -1601,7 +1601,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00101xxxxxx100000111x1
                                                                  ldsmin.  */
-                                                              return 1028;
+                                                              return 1061;
                                                             }
                                                         }
                                                       else
@@ -1614,7 +1614,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00101xxxxxx10100011100
                                                                      ldsminab.  */
-                                                                  return 1029;
+                                                                  return 1062;
                                                                 }
                                                               else
                                                                 {
@@ -1622,7 +1622,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00101xxxxxx10100011110
                                                                      ldsminah.  */
-                                                                  return 1032;
+                                                                  return 1065;
                                                                 }
                                                             }
                                                           else
@@ -1631,7 +1631,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00101xxxxxx101000111x1
                                                                  ldsmina.  */
-                                                              return 1035;
+                                                              return 1068;
                                                             }
                                                         }
                                                     }
@@ -1647,7 +1647,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00101xxxxxx11000011100
                                                                      ldsminlb.  */
-                                                                  return 1030;
+                                                                  return 1063;
                                                                 }
                                                               else
                                                                 {
@@ -1655,7 +1655,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00101xxxxxx11000011110
                                                                      ldsminlh.  */
-                                                                  return 1033;
+                                                                  return 1066;
                                                                 }
                                                             }
                                                           else
@@ -1664,7 +1664,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00101xxxxxx110000111x1
                                                                  ldsminl.  */
-                                                              return 1036;
+                                                              return 1069;
                                                             }
                                                         }
                                                       else
@@ -1677,7 +1677,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00101xxxxxx11100011100
                                                                      ldsminalb.  */
-                                                                  return 1031;
+                                                                  return 1064;
                                                                 }
                                                               else
                                                                 {
@@ -1685,7 +1685,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00101xxxxxx11100011110
                                                                      ldsminalh.  */
-                                                                  return 1034;
+                                                                  return 1067;
                                                                 }
                                                             }
                                                           else
@@ -1694,7 +1694,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00101xxxxxx111000111x1
                                                                  ldsminal.  */
-                                                              return 1037;
+                                                              return 1070;
                                                             }
                                                         }
                                                     }
@@ -1716,7 +1716,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00110xxxxxx10000011100
                                                                      ldsetb.  */
-                                                                  return 1002;
+                                                                  return 1035;
                                                                 }
                                                               else
                                                                 {
@@ -1724,7 +1724,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00110xxxxxx10000011110
                                                                      ldseth.  */
-                                                                  return 1003;
+                                                                  return 1036;
                                                                 }
                                                             }
                                                           else
@@ -1733,7 +1733,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00110xxxxxx100000111x1
                                                                  ldset.  */
-                                                              return 1004;
+                                                              return 1037;
                                                             }
                                                         }
                                                       else
@@ -1746,7 +1746,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00110xxxxxx10100011100
                                                                      ldsetab.  */
-                                                                  return 1005;
+                                                                  return 1038;
                                                                 }
                                                               else
                                                                 {
@@ -1754,7 +1754,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00110xxxxxx10100011110
                                                                      ldsetah.  */
-                                                                  return 1008;
+                                                                  return 1041;
                                                                 }
                                                             }
                                                           else
@@ -1763,7 +1763,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00110xxxxxx101000111x1
                                                                  ldseta.  */
-                                                              return 1011;
+                                                              return 1044;
                                                             }
                                                         }
                                                     }
@@ -1779,7 +1779,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00110xxxxxx11000011100
                                                                      ldsetlb.  */
-                                                                  return 1006;
+                                                                  return 1039;
                                                                 }
                                                               else
                                                                 {
@@ -1787,7 +1787,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00110xxxxxx11000011110
                                                                      ldsetlh.  */
-                                                                  return 1009;
+                                                                  return 1042;
                                                                 }
                                                             }
                                                           else
@@ -1796,7 +1796,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00110xxxxxx110000111x1
                                                                  ldsetl.  */
-                                                              return 1012;
+                                                              return 1045;
                                                             }
                                                         }
                                                       else
@@ -1809,7 +1809,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00110xxxxxx11100011100
                                                                      ldsetalb.  */
-                                                                  return 1007;
+                                                                  return 1040;
                                                                 }
                                                               else
                                                                 {
@@ -1817,7 +1817,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00110xxxxxx11100011110
                                                                      ldsetalh.  */
-                                                                  return 1010;
+                                                                  return 1043;
                                                                 }
                                                             }
                                                           else
@@ -1826,7 +1826,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00110xxxxxx111000111x1
                                                                  ldsetal.  */
-                                                              return 1013;
+                                                              return 1046;
                                                             }
                                                         }
                                                     }
@@ -1845,7 +1845,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00111xxxxxx10000011100
                                                                      lduminb.  */
-                                                                  return 1050;
+                                                                  return 1083;
                                                                 }
                                                               else
                                                                 {
@@ -1853,7 +1853,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00111xxxxxx10000011110
                                                                      lduminh.  */
-                                                                  return 1051;
+                                                                  return 1084;
                                                                 }
                                                             }
                                                           else
@@ -1862,7 +1862,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00111xxxxxx100000111x1
                                                                  ldumin.  */
-                                                              return 1052;
+                                                              return 1085;
                                                             }
                                                         }
                                                       else
@@ -1875,7 +1875,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00111xxxxxx10100011100
                                                                      lduminab.  */
-                                                                  return 1053;
+                                                                  return 1086;
                                                                 }
                                                               else
                                                                 {
@@ -1883,7 +1883,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00111xxxxxx10100011110
                                                                      lduminah.  */
-                                                                  return 1056;
+                                                                  return 1089;
                                                                 }
                                                             }
                                                           else
@@ -1892,7 +1892,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00111xxxxxx101000111x1
                                                                  ldumina.  */
-                                                              return 1059;
+                                                              return 1092;
                                                             }
                                                         }
                                                     }
@@ -1908,7 +1908,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00111xxxxxx11000011100
                                                                      lduminlb.  */
-                                                                  return 1054;
+                                                                  return 1087;
                                                                 }
                                                               else
                                                                 {
@@ -1916,7 +1916,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00111xxxxxx11000011110
                                                                      lduminlh.  */
-                                                                  return 1057;
+                                                                  return 1090;
                                                                 }
                                                             }
                                                           else
@@ -1925,7 +1925,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00111xxxxxx110000111x1
                                                                  lduminl.  */
-                                                              return 1060;
+                                                              return 1093;
                                                             }
                                                         }
                                                       else
@@ -1938,7 +1938,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00111xxxxxx11100011100
                                                                      lduminalb.  */
-                                                                  return 1055;
+                                                                  return 1088;
                                                                 }
                                                               else
                                                                 {
@@ -1946,7 +1946,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx00111xxxxxx11100011110
                                                                      lduminalh.  */
-                                                                  return 1058;
+                                                                  return 1091;
                                                                 }
                                                             }
                                                           else
@@ -1955,7 +1955,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx00111xxxxxx111000111x1
                                                                  lduminal.  */
-                                                              return 1061;
+                                                              return 1094;
                                                             }
                                                         }
                                                     }
@@ -1980,7 +1980,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx01xxxxxxxxx00000011100
                                                          sttrb.  */
-                                                      return 852;
+                                                      return 883;
                                                     }
                                                   else
                                                     {
@@ -1988,7 +1988,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx01xxxxxxxxx00000011110
                                                          sttrh.  */
-                                                      return 855;
+                                                      return 886;
                                                     }
                                                 }
                                               else
@@ -1997,7 +1997,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx000000111x1
                                                      sttr.  */
-                                                  return 858;
+                                                  return 889;
                                                 }
                                             }
                                           else
@@ -2010,7 +2010,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx01xxxxxxxxx01000011100
                                                          ldtrb.  */
-                                                      return 853;
+                                                      return 884;
                                                     }
                                                   else
                                                     {
@@ -2018,7 +2018,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx01xxxxxxxxx01000011110
                                                          ldtrh.  */
-                                                      return 856;
+                                                      return 887;
                                                     }
                                                 }
                                               else
@@ -2027,7 +2027,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx010000111x1
                                                      ldtr.  */
-                                                  return 859;
+                                                  return 890;
                                                 }
                                             }
                                         }
@@ -2041,7 +2041,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx0x100011100
                                                      ldtrsb.  */
-                                                  return 854;
+                                                  return 885;
                                                 }
                                               else
                                                 {
@@ -2049,7 +2049,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx0x100011101
                                                      ldtrsw.  */
-                                                  return 860;
+                                                  return 891;
                                                 }
                                             }
                                           else
@@ -2058,7 +2058,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxx01xxxxxxxxx0x10001111x
                                                  ldtrsh.  */
-                                              return 857;
+                                              return 888;
                                             }
                                         }
                                     }
@@ -2076,7 +2076,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx01xxxxxxxxx10000011100
                                                          strb.  */
-                                                      return 840;
+                                                      return 871;
                                                     }
                                                   else
                                                     {
@@ -2084,7 +2084,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx01xxxxxxxxx10000011110
                                                          strh.  */
-                                                      return 845;
+                                                      return 876;
                                                     }
                                                 }
                                               else
@@ -2093,7 +2093,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx100000111x1
                                                      str.  */
-                                                  return 848;
+                                                  return 879;
                                                 }
                                             }
                                           else
@@ -2106,7 +2106,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx01xxxxxxxxx11000011100
                                                          ldrb.  */
-                                                      return 841;
+                                                      return 872;
                                                     }
                                                   else
                                                     {
@@ -2114,7 +2114,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx01xxxxxxxxx11000011110
                                                          ldrh.  */
-                                                      return 846;
+                                                      return 877;
                                                     }
                                                 }
                                               else
@@ -2123,7 +2123,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx110000111x1
                                                      ldr.  */
-                                                  return 849;
+                                                  return 880;
                                                 }
                                             }
                                         }
@@ -2137,7 +2137,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx1x100011100
                                                      ldrsb.  */
-                                                  return 842;
+                                                  return 873;
                                                 }
                                               else
                                                 {
@@ -2145,7 +2145,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx1x100011101
                                                      ldrsw.  */
-                                                  return 850;
+                                                  return 881;
                                                 }
                                             }
                                           else
@@ -2156,7 +2156,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx1x100011110
                                                      ldrsh.  */
-                                                  return 847;
+                                                  return 878;
                                                 }
                                               else
                                                 {
@@ -2164,7 +2164,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx1x100011111
                                                      prfm.  */
-                                                  return 851;
+                                                  return 882;
                                                 }
                                             }
                                         }
@@ -2173,97 +2173,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
+                                                     xxxxxxxxxx1xxxxxxxxxx00000011100
+                                                     strb.  */
+                                                  return 848;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx1xxxxxxxxxx00000011110
+                                                     strh.  */
+                                                  return 853;
+                                                }
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx1xxxxxxxxxxx0000011110
-                                                 strh.  */
-                                              return 822;
+                                                 xxxxxxxxxx1xxxxxxxxxx000000111x1
+                                                 str.  */
+                                              return 856;
                                             }
                                         }
                                       else
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx1xxxxxxxxxxx00000111x1
-                                             str.  */
-                                          return 825;
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx1xxxxxxxxxx01000011100
+                                                     ldrb.  */
+                                                  return 849;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx1xxxxxxxxxx01000011110
+                                                     ldrh.  */
+                                                  return 854;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxx1xxxxxxxxxx010000111x1
+                                                 ldr.  */
+                                              return 857;
+                                            }
                                         }
                                     }
                                   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;
+                                                 xxxxxxxxxx1xxxxxxxxxx0x100011100
+                                                 ldrsb.  */
+                                              return 850;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx1xxxxxxxxxxx1000011110
-                                                 ldrh.  */
-                                              return 823;
+                                                 xxxxxxxxxx1xxxxxxxxxx0x100011101
+                                                 ldrsw.  */
+                                              return 858;
                                             }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxx1xxxxxxxxxxx10000111x1
-                                             ldr.  */
-                                          return 826;
+                                             xxxxxxxxxx1xxxxxxxxxx0x10001111x
+                                             ldrsh.  */
+                                          return 855;
                                         }
                                     }
                                 }
                               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
+                                         xxxxxxxxxx1xxxxxxxxxx1x0000111xx
+                                         ldraa.  */
+                                      return 904;
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxx1xxxxxxxxxxxx10001111x
-                                         ldrsh.  */
-                                      return 824;
+                                         xxxxxxxxxx1xxxxxxxxxx1x1000111xx
+                                         ldrab.  */
+                                      return 905;
                                     }
                                 }
                             }
@@ -2283,7 +2305,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxxxxxxxxx0010011x00
                                          strb.  */
-                                      return 828;
+                                      return 859;
                                     }
                                   else
                                     {
@@ -2291,7 +2313,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxxxxxxxxx0010011x10
                                          strh.  */
-                                      return 833;
+                                      return 864;
                                     }
                                 }
                               else
@@ -2300,7 +2322,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx0010011xx1
                                      str.  */
-                                  return 836;
+                                  return 867;
                                 }
                             }
                           else
@@ -2313,7 +2335,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxxxxxxxxx1010011x00
                                          ldrb.  */
-                                      return 829;
+                                      return 860;
                                     }
                                   else
                                     {
@@ -2321,7 +2343,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxxxxxxxxx1010011x10
                                          ldrh.  */
-                                      return 834;
+                                      return 865;
                                     }
                                 }
                               else
@@ -2330,7 +2352,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx1010011xx1
                                      ldr.  */
-                                  return 837;
+                                  return 868;
                                 }
                             }
                         }
@@ -2344,7 +2366,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxxx110011x00
                                      ldrsb.  */
-                                  return 830;
+                                  return 861;
                                 }
                               else
                                 {
@@ -2352,7 +2374,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxxx110011x01
                                      ldrsw.  */
-                                  return 838;
+                                  return 869;
                                 }
                             }
                           else
@@ -2363,7 +2385,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxxx110011x10
                                      ldrsh.  */
-                                  return 835;
+                                  return 866;
                                 }
                               else
                                 {
@@ -2371,7 +2393,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxxx110011x11
                                      prfm.  */
-                                  return 839;
+                                  return 870;
                                 }
                             }
                         }
@@ -2395,7 +2417,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxxx00100x00x
                                  and.  */
-                              return 919;
+                              return 952;
                             }
                           else
                             {
@@ -2403,7 +2425,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxxx00100x01x
                                  eor.  */
-                              return 923;
+                              return 956;
                             }
                         }
                       else
@@ -2414,7 +2436,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxxx00100x10x
                                  orr.  */
-                              return 921;
+                              return 954;
                             }
                           else
                             {
@@ -2422,7 +2444,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxxx00100x11x
                                  ands.  */
-                              return 924;
+                              return 957;
                             }
                         }
                     }
@@ -2436,7 +2458,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxxx10100x00x
                                  movn.  */
-                              return 1110;
+                              return 1143;
                             }
                           else
                             {
@@ -2444,7 +2466,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxxx10100x01x
                                  movz.  */
-                              return 1112;
+                              return 1145;
                             }
                         }
                       else
@@ -2453,7 +2475,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              xxxxxxxxxxxxxxxxxxxxxxx10100x1xx
                              movk.  */
-                          return 1114;
+                          return 1147;
                         }
                     }
                 }
@@ -2471,7 +2493,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxx0xx0101000x
                                      and.  */
-                                  return 926;
+                                  return 959;
                                 }
                               else
                                 {
@@ -2479,7 +2501,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxx0xx0101001x
                                      eor.  */
-                                  return 933;
+                                  return 966;
                                 }
                             }
                           else
@@ -2490,7 +2512,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxx0xx0101010x
                                      orr.  */
-                                  return 928;
+                                  return 961;
                                 }
                               else
                                 {
@@ -2498,7 +2520,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxx0xx0101011x
                                      ands.  */
-                                  return 935;
+                                  return 968;
                                 }
                             }
                         }
@@ -2559,7 +2581,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxx00xxxxxxxxx00101011x0x
                                                  csel.  */
-                                              return 641;
+                                              return 653;
                                             }
                                           else
                                             {
@@ -2567,7 +2589,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxx00xxxxxxxxx00101011x1x
                                                  csinv.  */
-                                              return 645;
+                                              return 657;
                                             }
                                         }
                                     }
@@ -2581,7 +2603,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxx00xxxxxxxxx01001011x0x
                                                  ccmn.  */
-                                              return 639;
+                                              return 651;
                                             }
                                           else
                                             {
@@ -2589,7 +2611,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxx00xxxxxxxxx01001011x1x
                                                  ccmp.  */
-                                              return 640;
+                                              return 652;
                                             }
                                         }
                                       else
@@ -2599,48 +2621,114 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                               if (((word >> 13) & 0x1) == 0)
                                                 {
                                                   if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx00000x0xxxx01101011xxx
+                                                             rbit.  */
+                                                          return 676;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx00000x1xxxx01101011xxx
+                                                             pacia.  */
+                                                          return 684;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx00001xxxxxx01101011x0x
+                                                             crc32b.  */
+                                                          return 713;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx00001xxxxxx01101011x1x
+                                                             xpaci.  */
+                                                          return 700;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 30) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx00000xxxxxx01101011xxx
-                                                         rbit.  */
-                                                      return 664;
+                                                         xxxxxxxxxx0001xxxxxxx01101011x0x
+                                                         lslv.  */
+                                                      return 704;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx00001xxxxxx01101011xxx
-                                                         crc32b.  */
-                                                      return 682;
+                                                         xxxxxxxxxx0001xxxxxxx01101011x1x
+                                                         paciza.  */
+                                                      return 692;
                                                     }
                                                 }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx0001xxxxxxx01101011xxx
-                                                     lslv.  */
-                                                  return 674;
-                                                }
                                             }
                                           else
                                             {
-                                              if (((word >> 14) & 0x1) == 0)
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx001x0xxxxxx01101011xxx
-                                                     clz.  */
-                                                  return 669;
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx00100x0xxxx01101011xxx
+                                                             clz.  */
+                                                          return 681;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx00100x1xxxx01101011xxx
+                                                             autia.  */
+                                                          return 688;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx00101xxxxxx01101011xxx
+                                                         crc32cb.  */
+                                                      return 717;
+                                                    }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx001x1xxxxxx01101011xxx
-                                                     crc32cb.  */
-                                                  return 686;
+                                                  if (((word >> 30) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx0011xxxxxxx01101011x0x
+                                                         pacga.  */
+                                                      return 712;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx0011xxxxxxx01101011x1x
+                                                         autiza.  */
+                                                      return 696;
+                                                    }
                                                 }
                                             }
                                         }
@@ -2656,7 +2744,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxx01xxxxxxxxx0x001011x0x
                                              ccmn.  */
-                                          return 637;
+                                          return 649;
                                         }
                                       else
                                         {
@@ -2664,7 +2752,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxx01xxxxxxxxx0x001011x1x
                                              ccmp.  */
-                                          return 638;
+                                          return 650;
                                         }
                                     }
                                   else
@@ -2681,25 +2769,36 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx01000xxxxxx0x101011x0x
                                                          udiv.  */
-                                                      return 672;
+                                                      return 702;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 31) & 0x1) == 0)
+                                                      if (((word >> 16) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx01000xxxxxx0x101011x10
-                                                             rev.  */
-                                                          return 666;
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx01000x0xxxx0x101011x10
+                                                                 rev.  */
+                                                              return 678;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx01000x0xxxx0x101011x11
+                                                                 rev32.  */
+                                                              return 683;
+                                                            }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx01000xxxxxx0x101011x11
-                                                             rev32.  */
-                                                          return 671;
+                                                             xxxxxxxxxx01000x1xxxx0x101011x1x
+                                                             pacda.  */
+                                                          return 686;
                                                         }
                                                     }
                                                 }
@@ -2709,25 +2808,58 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01001xxxxxx0x101011xxx
                                                      crc32w.  */
-                                                  return 684;
+                                                  return 715;
                                                 }
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx0101xxxxxxx0x101011xxx
-                                                 asrv.  */
-                                              return 678;
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx0101xxxxxxx0x101011x0x
+                                                     asrv.  */
+                                                  return 708;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx0101xxxxxxx0x101011x1x
+                                                     pacdza.  */
+                                                  return 694;
+                                                }
                                             }
                                         }
                                       else
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx011xxxxxxxx0x101011xxx
-                                             crc32cw.  */
-                                          return 688;
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx01100xxxxxx0x101011xxx
+                                                     autda.  */
+                                                  return 690;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx01101xxxxxx0x101011xxx
+                                                     crc32cw.  */
+                                                  return 719;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxx0111xxxxxxx0x101011xxx
+                                                 autdza.  */
+                                              return 698;
+                                            }
                                         }
                                     }
                                 }
@@ -2744,7 +2876,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxx10xxxxxxxxx00x01011x0x
                                              csinc.  */
-                                          return 642;
+                                          return 654;
                                         }
                                       else
                                         {
@@ -2752,7 +2884,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxx10xxxxxxxxx00x01011x1x
                                              csneg.  */
-                                          return 648;
+                                          return 660;
                                         }
                                     }
                                   else
@@ -2763,47 +2895,102 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx10000xxxxxx01x01011xxx
-                                                     rev16.  */
-                                                  return 665;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx10001xxxxxx01x01011xxx
-                                                     crc32h.  */
-                                                  return 683;
+                                                  if (((word >> 16) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx10000x0xxxx01x01011xxx
+                                                         rev16.  */
+                                                      return 677;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx10000x1xxxx01x01011xxx
+                                                         pacib.  */
+                                                      return 685;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 30) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx10001xxxxxx01x01011x0x
+                                                         crc32h.  */
+                                                      return 714;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx10001xxxxxx01x01011x1x
+                                                         xpacd.  */
+                                                      return 701;
+                                                    }
                                                 }
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx1001xxxxxxx01x01011xxx
-                                                 lsrv.  */
-                                              return 676;
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx1001xxxxxxx01x01011x0x
+                                                     lsrv.  */
+                                                  return 706;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx1001xxxxxxx01x01011x1x
+                                                     pacizb.  */
+                                                  return 693;
+                                                }
                                             }
                                         }
                                       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
+                                                         xxxxxxxxxx10100x0xxxx01x01011xxx
+                                                         cls.  */
+                                                      return 682;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx10100x1xxxx01x01011xxx
+                                                         autib.  */
+                                                      return 689;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx10101xxxxxx01x01011xxx
+                                                     crc32ch.  */
+                                                  return 718;
+                                                }
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx101x1xxxxxx01x01011xxx
-                                                 crc32ch.  */
-                                              return 687;
+                                                 xxxxxxxxxx1011xxxxxxx01x01011xxx
+                                                 autizb.  */
+                                              return 697;
                                             }
                                         }
                                     }
@@ -2822,15 +3009,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx11000xxxxxx0xx01011x0x
                                                      sdiv.  */
-                                                  return 673;
+                                                  return 703;
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx11000xxxxxx0xx01011x1x
-                                                     rev.  */
-                                                  return 667;
+                                                  if (((word >> 16) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx11000x0xxxx0xx01011x1x
+                                                         rev.  */
+                                                      return 679;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx11000x1xxxx0xx01011x1x
+                                                         pacdb.  */
+                                                      return 687;
+                                                    }
                                                 }
                                             }
                                           else
@@ -2839,25 +3037,58 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxx11001xxxxxx0xx01011xxx
                                                  crc32x.  */
-                                              return 685;
+                                              return 716;
                                             }
                                         }
                                       else
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx1101xxxxxxx0xx01011xxx
-                                             rorv.  */
-                                          return 680;
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxx1101xxxxxxx0xx01011x0x
+                                                 rorv.  */
+                                              return 710;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxx1101xxxxxxx0xx01011x1x
+                                                 pacdzb.  */
+                                              return 695;
+                                            }
                                         }
                                     }
                                   else
                                     {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxxxxxxx111xxxxxxxx0xx01011xxx
-                                         crc32cx.  */
-                                      return 689;
+                                      if (((word >> 13) & 0x1) == 0)
+                                        {
+                                          if (((word >> 14) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxx11100xxxxxx0xx01011xxx
+                                                 autdb.  */
+                                              return 691;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxx11101xxxxxx0xx01011xxx
+                                                 crc32cx.  */
+                                              return 720;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxx1111xxxxxxx0xx01011xxx
+                                             autdzb.  */
+                                          return 699;
+                                        }
                                     }
                                 }
                             }
@@ -2873,7 +3104,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxx1xx0101x00x
                                  bic.  */
-                              return 927;
+                              return 960;
                             }
                           else
                             {
@@ -2881,7 +3112,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxx1xx0101x01x
                                  eon.  */
-                              return 934;
+                              return 967;
                             }
                         }
                       else
@@ -2892,7 +3123,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxx1xx0101x10x
                                  orn.  */
-                              return 931;
+                              return 964;
                             }
                           else
                             {
@@ -2900,7 +3131,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxx1xx0101x11x
                                  bics.  */
-                              return 937;
+                              return 970;
                             }
                         }
                     }
@@ -2946,7 +3177,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                          10987654321098765432109876543210
                          xxxxxxxxxxxxxxxxxxxxxxx11100xxxx
                          extr.  */
-                      return 712;
+                      return 743;
                     }
                 }
               else
@@ -3004,7 +3235,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxx0xxxxx00x11011xxx
                                      madd.  */
-                                  return 690;
+                                  return 721;
                                 }
                               else
                                 {
@@ -3014,7 +3245,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxx0xxxxx01011011xxx
                                          smulh.  */
-                                      return 698;
+                                      return 729;
                                     }
                                   else
                                     {
@@ -3022,7 +3253,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxx0xxxxx01111011xxx
                                          umulh.  */
-                                      return 703;
+                                      return 734;
                                     }
                                 }
                             }
@@ -3032,7 +3263,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxx1xxxxx0xx11011xxx
                                  msub.  */
-                              return 692;
+                              return 723;
                             }
                         }
                     }
@@ -3089,7 +3320,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxx0xxxxx1x011011xxx
                                      smaddl.  */
-                                  return 694;
+                                  return 725;
                                 }
                               else
                                 {
@@ -3097,7 +3328,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxx1xxxxx1x011011xxx
                                      smsubl.  */
-                                  return 696;
+                                  return 727;
                                 }
                             }
                         }
@@ -3109,7 +3340,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxx0xxxxx1x11101xxxx
                                  umaddl.  */
-                              return 699;
+                              return 730;
                             }
                           else
                             {
@@ -3117,7 +3348,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxx1xxxxx1x11101xxxx
                                  umsubl.  */
-                              return 701;
+                              return 732;
                             }
                         }
                     }
@@ -3129,124 +3360,8019 @@ aarch64_opcode_lookup_1 (uint32_t word)
     {
       if (((word >> 27) & 0x1) == 0)
         {
-          if (((word >> 29) & 0x1) == 0)
+          if (((word >> 28) & 0x1) == 0)
             {
-              if (((word >> 30) & 0x1) == 0)
-                {
-                  if (((word >> 31) & 0x1) == 0)
-                    {
-                      /* 33222222222211111111110000000000
-                         10987654321098765432109876543210
-                         xxxxxxxxxxxxxxxxxxxxxxxxxx10x000
-                         b.  */
-                      return 627;
-                    }
-                  else
-                    {
-                      /* 33222222222211111111110000000000
-                         10987654321098765432109876543210
-                         xxxxxxxxxxxxxxxxxxxxxxxxxx10x001
-                         bl.  */
-                      return 628;
-                    }
-                }
-              else
+              if (((word >> 24) & 0x1) == 0)
                 {
-                  if (((word >> 24) & 0x1) == 0)
+                  if (((word >> 13) & 0x1) == 0)
                     {
-                      if (((word >> 25) & 0x1) == 0)
+                      if (((word >> 29) & 0x1) == 0)
                         {
-                          if (((word >> 31) & 0x1) == 0)
-                            {
-                              /* 33222222222211111111110000000000
-                                 10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxxxxx0010x010
-                                 b.c.  */
-                              return 636;
-                            }
-                          else
+                          if (((word >> 14) & 0x1) == 0)
                             {
-                              if (((word >> 0) & 0x1) == 0)
+                              if (((word >> 15) & 0x1) == 0)
+                                {
+                                  if (((word >> 21) & 0x1) == 0)
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              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
+                                                                     xxxxxxxxxxxxx000000000xx0x100000
+                                                                     add.  */
+                                                                  return 1225;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx000000010xx0x100000
+                                                                     mul.  */
+                                                                  return 1651;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx000000100xx0x100000
+                                                                     smax.  */
+                                                                  return 1724;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx000000110xx0x100000
+                                                                     orr.  */
+                                                                  return 1662;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0000010x0xx0x100000
+                                                                 sdiv.  */
+                                                              return 1718;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0000011x0xx0x100000
+                                                                 sabd.  */
+                                                              return 1712;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0000100x0xx0x100000
+                                                                 smulh.  */
+                                                              return 1729;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx000010100xx0x100000
+                                                                     smin.  */
+                                                                  return 1727;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx000010110xx0x100000
+                                                                     and.  */
+                                                                  return 1233;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx000011xx0xx0x100000
+                                                             sdivr.  */
+                                                          return 1719;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 17) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0001000x0xx0x100000
+                                                                 sub.  */
+                                                              return 1845;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx000100100xx0x100000
+                                                                     umax.  */
+                                                                  return 1867;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx000100110xx0x100000
+                                                                     eor.  */
+                                                                  return 1320;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0001010x0xx0x100000
+                                                                 udiv.  */
+                                                              return 1864;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0001011x0xx0x100000
+                                                                 uabd.  */
+                                                              return 1858;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx000110000xx0x100000
+                                                                     subr.  */
+                                                                  return 1847;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx000110010xx0x100000
+                                                                     umulh.  */
+                                                                  return 1872;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx000110100xx0x100000
+                                                                     umin.  */
+                                                                  return 1870;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx000110110xx0x100000
+                                                                     bic.  */
+                                                                  return 1245;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx000111xx0xx0x100000
+                                                             udivr.  */
+                                                          return 1865;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx000xxxxx0x00x100001
+                                                     ld1sb.  */
+                                                  return 1480;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx000xxxxx0x10x100001
+                                                     ld1sh.  */
+                                                  return 1491;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx000xxxxx0x00x10001x
+                                                 ld1sb.  */
+                                              return 1484;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx000xxxxx0x10x10001x
+                                                 ld1sh.  */
+                                              return 1495;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 10) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx000000xxxxx1xx0x100000
+                                                             add.  */
+                                                          return 1223;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx001000xxxxx1xx0x100000
+                                                             sqadd.  */
+                                                          return 1731;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx01x000xxxxx1xx0x100000
+                                                         sqsub.  */
+                                                      return 1761;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx100000xxxxx1xx0x100000
+                                                             sub.  */
+                                                          return 1843;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx101000xxxxx1xx0x100000
+                                                             uqadd.  */
+                                                          return 1873;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx11x000xxxxx1xx0x100000
+                                                         uqsub.  */
+                                                      return 1903;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx000xxxxx1x00x100001
+                                                     prfb.  */
+                                                  return 1670;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx000xxxxx1x10x100001
+                                                     ld1sh.  */
+                                                  return 1492;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx000xxxxx1x00x10001x
+                                                 prfb.  */
+                                              return 1671;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx000xxxxx1x10x10001x
+                                                 ld1sh.  */
+                                              return 1496;
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 30) & 0x1) == 0)
+                                    {
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          if (((word >> 21) & 0x1) == 0)
+                                            {
+                                              if (((word >> 16) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 18) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0010x0000xx0x100000
+                                                                 asr.  */
+                                                              return 1241;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0010x0010xx0x100000
+                                                                 asr.  */
+                                                              return 1239;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx0010x01x0xx0x100000
+                                                             asr.  */
+                                                          return 1240;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx0010x1x00xx0x100000
+                                                             asrd.  */
+                                                          return 1242;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx0010x1x10xx0x100000
+                                                             asrr.  */
+                                                          return 1243;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 17) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx001100000xx0x100000
+                                                                     lsr.  */
+                                                                  return 1642;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx001100010xx0x100000
+                                                                     lsr.  */
+                                                                  return 1640;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0011001x0xx0x100000
+                                                                 lsr.  */
+                                                              return 1641;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx001101xx0xx0x100000
+                                                             lsrr.  */
+                                                          return 1643;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx001110000xx0x100000
+                                                                     lsl.  */
+                                                                  return 1636;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx001110010xx0x100000
+                                                                     lsl.  */
+                                                                  return 1634;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0011101x0xx0x100000
+                                                                 lsl.  */
+                                                              return 1635;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx001111xx0xx0x100000
+                                                             lslr.  */
+                                                          return 1637;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 10) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 12) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx0x0001xxxxx1xx0x100000
+                                                         asr.  */
+                                                      return 1237;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx0x1001xxxxx1xx0x100000
+                                                         asr.  */
+                                                      return 1238;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx100001xxxxx1xx0x100000
+                                                             lsr.  */
+                                                          return 1638;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx101001xxxxx1xx0x100000
+                                                             lsr.  */
+                                                          return 1639;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx110001xxxxx1xx0x100000
+                                                             lsl.  */
+                                                          return 1632;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx111001xxxxx1xx0x100000
+                                                             lsl.  */
+                                                          return 1633;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx001xxxxxx000x100001
+                                                     ld1sb.  */
+                                                  return 1486;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx001xxxxxx010x100001
+                                                     ld1sh.  */
+                                                  return 1499;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx001xxxxxx100x100001
+                                                     ld1rb.  */
+                                                  return 1464;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx001xxxxxx110x100001
+                                                     ld1rsw.  */
+                                                  return 1477;
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx001xxxxx0x00x10001x
+                                                 ld1sb.  */
+                                              return 1485;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx001xxxxx0x10x10001x
+                                                 ld1sh.  */
+                                              return 1497;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx001xxxxx1000x10001x
+                                                     ld1sb.  */
+                                                  return 1490;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx001xxxxx1010x10001x
+                                                     ld1sh.  */
+                                                  return 1502;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx001xxxxx1100x10001x
+                                                     prfb.  */
+                                                  return 1672;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx001xxxxx1110x10001x
+                                                     ld1sh.  */
+                                                  return 1498;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 15) & 0x1) == 0)
+                                {
+                                  if (((word >> 21) & 0x1) == 0)
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx010xxxxx0xx0x100000
+                                                 mla.  */
+                                              return 1645;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxx0x00x100001
+                                                     ld1b.  */
+                                                  return 1430;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxx0x10x100001
+                                                     ld1h.  */
+                                                  return 1450;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx010xxxxx0x00x10001x
+                                                 ld1b.  */
+                                              return 1435;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx010xxxxx0x10x10001x
+                                                 ld1h.  */
+                                              return 1455;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 11) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 12) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 10) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx000010xxxxx1xx0x100000
+                                                             index.  */
+                                                          return 1421;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx100010xxxxx1xx0x100000
+                                                             index.  */
+                                                          return 1422;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxx01010xxxxx1000x100000
+                                                                 addvl.  */
+                                                              return 1227;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxx01010xxxxx1010x100000
+                                                                 rdvl.  */
+                                                              return 1706;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxx01010xxxxx11x0x100000
+                                                             addpl.  */
+                                                          return 1226;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 10) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx01x010xxxxx1xx0x100000
+                                                         index.  */
+                                                      return 1423;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx11x010xxxxx1xx0x100000
+                                                         index.  */
+                                                      return 1420;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxx1x00x100001
+                                                     prfw.  */
+                                                  return 1690;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxx1x10x100001
+                                                     ld1h.  */
+                                                  return 1451;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx010xxxxx1x00x10001x
+                                                 prfw.  */
+                                              return 1692;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx010xxxxx1x10x10001x
+                                                 ld1h.  */
+                                              return 1456;
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 30) & 0x1) == 0)
+                                    {
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          if (((word >> 21) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx011xxxxx0xx0x100000
+                                                 mad.  */
+                                              return 1644;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 10) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00x011xxxx010x0x100000
+                                                                 sqincw.  */
+                                                              return 1758;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00x011xxxx01100x100000
+                                                                     sqinch.  */
+                                                                  return 1752;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00x011xxxx01110x100000
+                                                                     sqincd.  */
+                                                                  return 1749;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00x011xxxx110x0x100000
+                                                                 incw.  */
+                                                              return 1418;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00x011xxxx11100x100000
+                                                                     inch.  */
+                                                                  return 1414;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00x011xxxx11110x100000
+                                                                     incd.  */
+                                                                  return 1412;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx01x011xxxxx10x0x100000
+                                                             sqdecw.  */
+                                                          return 1744;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx01x011xxxxx1100x100000
+                                                                 sqdech.  */
+                                                              return 1738;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx01x011xxxxx1110x100000
+                                                                 sqdecd.  */
+                                                              return 1735;
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx10x011xxxx010x0x100000
+                                                                 uqincw.  */
+                                                              return 1900;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx10x011xxxx01100x100000
+                                                                     uqinch.  */
+                                                                  return 1894;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx10x011xxxx01110x100000
+                                                                     uqincd.  */
+                                                                  return 1891;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx10x011xxxx110x0x100000
+                                                                 decw.  */
+                                                              return 1312;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx10x011xxxx11100x100000
+                                                                     dech.  */
+                                                                  return 1308;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx10x011xxxx11110x100000
+                                                                     decd.  */
+                                                                  return 1306;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx11x011xxxxx10x0x100000
+                                                             uqdecw.  */
+                                                          return 1886;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx11x011xxxxx1100x100000
+                                                                 uqdech.  */
+                                                              return 1880;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx11x011xxxxx1110x100000
+                                                                 uqdecd.  */
+                                                              return 1877;
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx0000x100001
+                                                         prfb.  */
+                                                      return 1669;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx0010x100001
+                                                         prfh.  */
+                                                      return 1684;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx1000x100001
+                                                         ld1b.  */
+                                                      return 1437;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx1010x100001
+                                                         ld1h.  */
+                                                      return 1459;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx011xxxxxx100x100001
+                                                     ld1rb.  */
+                                                  return 1466;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx011xxxxxx110x100001
+                                                     ld1rh.  */
+                                                  return 1470;
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx011xxxxx0x00x10001x
+                                                 ld1b.  */
+                                              return 1436;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx011xxxxx0x10x10001x
+                                                 ld1h.  */
+                                              return 1457;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx011xxxxx1000x10001x
+                                                     ld1b.  */
+                                                  return 1442;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx011xxxxx1010x10001x
+                                                     ld1h.  */
+                                                  return 1463;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx011xxxxx1100x10001x
+                                                     prfw.  */
+                                                  return 1693;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx011xxxxx1110x10001x
+                                                     ld1h.  */
+                                                  return 1458;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                      else
+                        {
+                          if (((word >> 21) & 0x1) == 0)
+                            {
+                              if (((word >> 15) & 0x1) == 0)
+                                {
+                                  if (((word >> 14) & 0x1) == 0)
+                                    {
+                                      if (((word >> 4) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxx0xxxxxxxx000xxxxx0xx0x1001xx
+                                             cmphs.  */
+                                          return 1278;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxx1xxxxxxxx000xxxxx0xx0x1001xx
+                                             cmphi.  */
+                                          return 1275;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxx0xxxxxxxx010xxxxx0xx0x100100
+                                                     cmpge.  */
+                                                  return 1269;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxx1xxxxxxxx010xxxxx0xx0x100100
+                                                     cmpgt.  */
+                                                  return 1272;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx010xxxxx0000x100101
+                                                         ld1b.  */
+                                                      return 1431;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx010xxxxx0010x100101
+                                                         ld1sw.  */
+                                                      return 1503;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx010xxxxx0100x100101
+                                                         ld1b.  */
+                                                      return 1433;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx010xxxxx0110x100101
+                                                         ld1h.  */
+                                                      return 1453;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx010xxxxx00x0x10011x
+                                                 st1b.  */
+                                              return 1763;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxx0100x10011x
+                                                     st1b.  */
+                                                  return 1767;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxx0110x10011x
+                                                     st1h.  */
+                                                  return 1788;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 30) & 0x1) == 0)
+                                    {
+                                      if (((word >> 14) & 0x1) == 0)
+                                        {
+                                          if (((word >> 4) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxx0xxxxxxxx001xxxxx0xx0x10010x
+                                                 cmpge.  */
+                                              return 1270;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxx1xxxxxxxx001xxxxx0xx0x10010x
+                                                 cmpgt.  */
+                                              return 1273;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxx0xxxxxxxx011xxxxx0xx0x100100
+                                                     cmphs.  */
+                                                  return 1279;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxx1xxxxxxxx011xxxxx0xx0x100100
+                                                     cmphi.  */
+                                                  return 1276;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx0000x100101
+                                                         ldnt1b.  */
+                                                      return 1622;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx0010x100101
+                                                         ldnt1h.  */
+                                                      return 1626;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx0100x100101
+                                                         ld3b.  */
+                                                      return 1530;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx0110x100101
+                                                         ld3h.  */
+                                                      return 1534;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 22) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx0x1xxxxx0000x10011x
+                                                 st1b.  */
+                                              return 1764;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx0x1xxxxx0010x10011x
+                                                 st1h.  */
+                                              return 1783;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx0x1xxxxx0100x10011x
+                                                 st1b.  */
+                                              return 1768;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx0x1xxxxx0110x10011x
+                                                 st1h.  */
+                                              return 1789;
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 30) & 0x1) == 0)
+                                {
+                                  if (((word >> 31) & 0x1) == 0)
+                                    {
+                                      if (((word >> 4) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxx0xxxxxxxx0xxxxxxx1xx0x100100
+                                             cmphs.  */
+                                          return 1280;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxx1xxxxxxxx0xxxxxxx1xx0x100100
+                                             cmphi.  */
+                                          return 1277;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 15) & 0x1) == 0)
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx0x0xxxxx1000x100101
+                                                     ld1b.  */
+                                                  return 1432;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx0x0xxxxx1010x100101
+                                                     ld1h.  */
+                                                  return 1452;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx0x0xxxxx1100x100101
+                                                     ld1b.  */
+                                                  return 1434;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx0x0xxxxx1110x100101
+                                                     ld1h.  */
+                                                  return 1454;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx0x1xxxxx1000x100101
+                                                     ld2b.  */
+                                                  return 1522;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx0x1xxxxx1010x100101
+                                                     ld2h.  */
+                                                  return 1526;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx0x1xxxxx1100x100101
+                                                     ld4b.  */
+                                                  return 1538;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx0x1xxxxx1110x100101
+                                                     ld4h.  */
+                                                  return 1542;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 15) & 0x1) == 0)
+                                    {
+                                      if (((word >> 22) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx0x0xxxxx1000x10011x
+                                                 st1b.  */
+                                              return 1766;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx0x0xxxxx1010x10011x
+                                                 st1h.  */
+                                              return 1785;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx0x0xxxxx1100x10011x
+                                                 st1b.  */
+                                              return 1769;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx0x0xxxxx1110x10011x
+                                                 st1h.  */
+                                              return 1790;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 22) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxx0x1xxxxx10x0x10011x
+                                             st1h.  */
+                                          return 1786;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxx0x1xxxxx11x0x10011x
+                                             st1h.  */
+                                          return 1791;
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                  else
+                    {
+                      if (((word >> 29) & 0x1) == 0)
+                        {
+                          if (((word >> 14) & 0x1) == 0)
+                            {
+                              if (((word >> 15) & 0x1) == 0)
+                                {
+                                  if (((word >> 21) & 0x1) == 0)
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 17) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 19) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx10000x000xx0x100000
+                                                                 saddv.  */
+                                                              return 1713;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx10010x000xx0x100000
+                                                                 uaddv.  */
+                                                              return 1859;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx100x0x010xx0x100000
+                                                             movprfx.  */
+                                                          return 1648;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx10000x100xx0x100000
+                                                                 smaxv.  */
+                                                              return 1725;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx10000x110xx0x100000
+                                                                 orv.  */
+                                                              return 1665;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx10010x100xx0x100000
+                                                                 umaxv.  */
+                                                              return 1868;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx10010x110xx0x100000
+                                                                 eorv.  */
+                                                              return 1323;
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 16) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx10001xx00xx0x100000
+                                                             sminv.  */
+                                                          return 1728;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx10001xx10xx0x100000
+                                                             andv.  */
+                                                          return 1236;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx10011xxx0xx0x100000
+                                                         uminv.  */
+                                                      return 1871;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx100xxxxx0x00x100001
+                                                     ldff1sb.  */
+                                                  return 1572;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx100xxxxx0x10x100001
+                                                     ldff1sh.  */
+                                                  return 1580;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx100xxxxx0x00x10001x
+                                                 ldff1sb.  */
+                                              return 1576;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx100xxxxx0x10x10001x
+                                                 ldff1sh.  */
+                                              return 1584;
+                                            }
+                                        }
+                                    }
+                                  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 1231;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx100xxxxx1100x100000
+                                                         orr.  */
+                                                      return 1660;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx100xxxxx1x00x100001
+                                                     prfh.  */
+                                                  return 1683;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx100xxxxx1x00x10001x
+                                                 prfh.  */
+                                              return 1685;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx100xxxxx1010x100000
+                                                         eor.  */
+                                                      return 1318;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx100xxxxx1110x100000
+                                                         bic.  */
+                                                      return 1244;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx100xxxxx1x10x100001
+                                                     ldff1sh.  */
+                                                  return 1581;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx100xxxxx1x10x10001x
+                                                 ldff1sh.  */
+                                              return 1585;
+                                            }
+                                        }
+                                    }
+                                }
+                              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 1850;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx1010001x0xx0x100000
+                                                                 cls.  */
+                                                              return 1264;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx1010010x0xx0x100000
+                                                                 sxtw.  */
+                                                              return 1852;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx1010011x0xx0x100000
+                                                                 fabs.  */
+                                                              return 1326;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx1010100x0xx0x100000
+                                                                 sxth.  */
+                                                              return 1851;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx1010101x0xx0x100000
+                                                                 cnt.  */
+                                                              return 1293;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx1010110x0xx0x100000
+                                                                 abs.  */
+                                                              return 1222;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx1010111x0xx0x100000
+                                                                 not.  */
+                                                              return 1657;
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 17) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx1011000x0xx0x100000
+                                                                 uxtb.  */
+                                                              return 1907;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx1011001x0xx0x100000
+                                                                 clz.  */
+                                                              return 1265;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx1011010x0xx0x100000
+                                                                 uxtw.  */
+                                                              return 1909;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx1011011x0xx0x100000
+                                                                 fneg.  */
+                                                              return 1384;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx1011100x0xx0x100000
+                                                                 uxth.  */
+                                                              return 1908;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx1011101x0xx0x100000
+                                                                 cnot.  */
+                                                              return 1292;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx101111xx0xx0x100000
+                                                             neg.  */
+                                                          return 1654;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 12) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxx0101xxxxx1000x100000
+                                                             adr.  */
+                                                          return 1228;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxx0101xxxxx1100x100000
+                                                             adr.  */
+                                                          return 1229;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxx0101xxxxx1x10x100000
+                                                         adr.  */
+                                                      return 1230;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 10) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 11) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx001101xxxxx1xx0x100000
+                                                             ftssel.  */
+                                                          return 1410;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx011101xxxxx1xx0x100000
+                                                             fexpa.  */
+                                                          return 1363;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx1x1101xxxxx1xx0x100000
+                                                         movprfx.  */
+                                                      return 1647;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxxx000x100001
+                                                     ldff1sb.  */
+                                                  return 1578;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxxx010x100001
+                                                     ldff1sh.  */
+                                                  return 1588;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxxx100x100001
+                                                     ld1rb.  */
+                                                  return 1465;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxxx110x100001
+                                                     ld1rh.  */
+                                                  return 1469;
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx101xxxxx0x00x10001x
+                                                 ldff1sb.  */
+                                              return 1577;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx101xxxxx0x10x10001x
+                                                 ldff1sh.  */
+                                              return 1586;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxx1000x10001x
+                                                     ldff1sb.  */
+                                                  return 1579;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxx1010x10001x
+                                                     ldff1sh.  */
+                                                  return 1589;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxx1100x10001x
+                                                     prfh.  */
+                                                  return 1686;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxx1110x10001x
+                                                     ldff1sh.  */
+                                                  return 1587;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 15) & 0x1) == 0)
+                                {
+                                  if (((word >> 21) & 0x1) == 0)
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx110xxxxx0xx0x100000
+                                                 mls.  */
+                                              return 1646;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx0x00x100001
+                                                     ldff1b.  */
+                                                  return 1546;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx0x10x100001
+                                                     ldff1h.  */
+                                                  return 1561;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx110xxxxx0x00x10001x
+                                                 ldff1b.  */
+                                              return 1551;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx110xxxxx0x10x10001x
+                                                 ldff1h.  */
+                                              return 1566;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 23) & 0x1) == 0)
+                                        {
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx110xxxxx1x00x10000x
+                                                 prfd.  */
+                                              return 1676;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx110xxxxx1x00x10001x
+                                                 prfd.  */
+                                              return 1678;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx110xxxxx1x10x10000x
+                                                 ldff1h.  */
+                                              return 1562;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx110xxxxx1x10x10001x
+                                                 ldff1h.  */
+                                              return 1567;
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 30) & 0x1) == 0)
+                                    {
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          if (((word >> 21) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx111xxxxx0xx0x100000
+                                                 msb.  */
+                                              return 1649;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 10) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000111xxxx01000x100000
+                                                                         cntb.  */
+                                                                      return 1294;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000111xxxx01010x100000
+                                                                         cntw.  */
+                                                                      return 1298;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000111xxxx01100x100000
+                                                                         cnth.  */
+                                                                      return 1296;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000111xxxx01110x100000
+                                                                         cntd.  */
+                                                                      return 1295;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000111xxxx11000x100000
+                                                                         incb.  */
+                                                                      return 1411;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000111xxxx11010x100000
+                                                                         incw.  */
+                                                                      return 1419;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000111xxxx11100x100000
+                                                                         inch.  */
+                                                                      return 1415;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000111xxxx11110x100000
+                                                                         incd.  */
+                                                                      return 1413;
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx001111xxxx01000x100000
+                                                                         sqincb.  */
+                                                                      return 1748;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx001111xxxx01010x100000
+                                                                         sqincw.  */
+                                                                      return 1760;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx001111xxxx01100x100000
+                                                                         sqinch.  */
+                                                                      return 1754;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx001111xxxx01110x100000
+                                                                         sqincd.  */
+                                                                      return 1751;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx001111xxxx11000x100000
+                                                                         sqincb.  */
+                                                                      return 1747;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx001111xxxx11010x100000
+                                                                         sqincw.  */
+                                                                      return 1759;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx001111xxxx11100x100000
+                                                                         sqinch.  */
+                                                                      return 1753;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx001111xxxx11110x100000
+                                                                         sqincd.  */
+                                                                      return 1750;
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx01x111xxxx01000x100000
+                                                                     sqdecb.  */
+                                                                  return 1734;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx01x111xxxx01010x100000
+                                                                     sqdecw.  */
+                                                                  return 1746;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx01x111xxxx01100x100000
+                                                                     sqdech.  */
+                                                                  return 1740;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx01x111xxxx01110x100000
+                                                                     sqdecd.  */
+                                                                  return 1737;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx01x111xxxx11000x100000
+                                                                     sqdecb.  */
+                                                                  return 1733;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx01x111xxxx11010x100000
+                                                                     sqdecw.  */
+                                                                  return 1745;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx01x111xxxx11100x100000
+                                                                     sqdech.  */
+                                                                  return 1739;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx01x111xxxx11110x100000
+                                                                     sqdecd.  */
+                                                                  return 1736;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx100111xxxxx1000x100000
+                                                                     decb.  */
+                                                                  return 1305;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx100111xxxxx1010x100000
+                                                                     decw.  */
+                                                                  return 1313;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx100111xxxxx1100x100000
+                                                                     dech.  */
+                                                                  return 1309;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx100111xxxxx1110x100000
+                                                                     decd.  */
+                                                                  return 1307;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx101111xxxx01000x100000
+                                                                         uqincb.  */
+                                                                      return 1889;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx101111xxxx01010x100000
+                                                                         uqincw.  */
+                                                                      return 1901;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx101111xxxx01100x100000
+                                                                         uqinch.  */
+                                                                      return 1895;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx101111xxxx01110x100000
+                                                                         uqincd.  */
+                                                                      return 1892;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx101111xxxx11000x100000
+                                                                         uqincb.  */
+                                                                      return 1890;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx101111xxxx11010x100000
+                                                                         uqincw.  */
+                                                                      return 1902;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx101111xxxx11100x100000
+                                                                         uqinch.  */
+                                                                      return 1896;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx101111xxxx11110x100000
+                                                                         uqincd.  */
+                                                                      return 1893;
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx11x111xxxx01000x100000
+                                                                     uqdecb.  */
+                                                                  return 1875;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx11x111xxxx01010x100000
+                                                                     uqdecw.  */
+                                                                  return 1887;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx11x111xxxx01100x100000
+                                                                     uqdech.  */
+                                                                  return 1881;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx11x111xxxx01110x100000
+                                                                     uqdecd.  */
+                                                                  return 1878;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx11x111xxxx11000x100000
+                                                                     uqdecb.  */
+                                                                  return 1876;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx11x111xxxx11010x100000
+                                                                     uqdecw.  */
+                                                                  return 1888;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx11x111xxxx11100x100000
+                                                                     uqdech.  */
+                                                                  return 1882;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx11x111xxxx11110x100000
+                                                                     uqdecd.  */
+                                                                  return 1879;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx0000x100001
+                                                         prfb.  */
+                                                      return 1673;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx0010x100001
+                                                         prfh.  */
+                                                      return 1687;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx1000x100001
+                                                         ldff1b.  */
+                                                      return 1553;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx1010x100001
+                                                         ldff1h.  */
+                                                      return 1570;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxxx100x100001
+                                                     ld1rb.  */
+                                                  return 1467;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxxx110x100001
+                                                     ld1rh.  */
+                                                  return 1471;
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx0000x10001x
+                                                     prfb.  */
+                                                  return 1675;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx0010x10001x
+                                                     prfh.  */
+                                                  return 1689;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx0100x10001x
+                                                     ldff1b.  */
+                                                  return 1552;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx0110x10001x
+                                                     ldff1h.  */
+                                                  return 1568;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx1000x10001x
+                                                     ldff1b.  */
+                                                  return 1554;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx1010x10001x
+                                                     ldff1h.  */
+                                                  return 1571;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx1100x10001x
+                                                     prfd.  */
+                                                  return 1679;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx1110x10001x
+                                                     ldff1h.  */
+                                                  return 1569;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                      else
+                        {
+                          if (((word >> 21) & 0x1) == 0)
+                            {
+                              if (((word >> 14) & 0x1) == 0)
+                                {
+                                  if (((word >> 15) & 0x1) == 0)
+                                    {
+                                      if (((word >> 4) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxx0xxxxxxxx100xxxxx0xx0x1001xx
+                                             cmpeq.  */
+                                          return 1266;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxx1xxxxxxxx100xxxxx0xx0x1001xx
+                                             cmpne.  */
+                                          return 1289;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxx0xxxxxxxx101xxxxx0xx0x100100
+                                                     cmpeq.  */
+                                                  return 1267;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxx1xxxxxxxx101xxxxx0xx0x100100
+                                                     cmpne.  */
+                                                  return 1290;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 20) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx101xxxx00000x100101
+                                                             ld1b.  */
+                                                          return 1438;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx101xxxx00010x100101
+                                                             ld1sw.  */
+                                                          return 1508;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx101xxxx00100x100101
+                                                             ld1b.  */
+                                                          return 1440;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx101xxxx00110x100101
+                                                             ld1h.  */
+                                                          return 1461;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx101xxxx10000x100101
+                                                             ldnf1b.  */
+                                                          return 1606;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx101xxxx10010x100101
+                                                             ldnf1sw.  */
+                                                          return 1619;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx101xxxx10100x100101
+                                                             ldnf1b.  */
+                                                          return 1608;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx101xxxx10110x100101
+                                                             ldnf1h.  */
+                                                          return 1612;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxx0000x10011x
+                                                     st1b.  */
+                                                  return 1765;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxx0010x10011x
+                                                     st1h.  */
+                                                  return 1784;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxx0100x10011x
+                                                     st1b.  */
+                                                  return 1772;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxx0110x10011x
+                                                     st1h.  */
+                                                  return 1793;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 15) & 0x1) == 0)
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxx0xxxxxxxx110xxxxx0xx0x100100
+                                                     cmplt.  */
+                                                  return 1287;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxx1xxxxxxxx110xxxxx0xx0x100100
+                                                     cmple.  */
+                                                  return 1281;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx110xxxxx0000x100101
+                                                         ldff1b.  */
+                                                      return 1547;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx110xxxxx0010x100101
+                                                         ldff1sw.  */
+                                                      return 1590;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx110xxxxx0100x100101
+                                                         ldff1b.  */
+                                                      return 1549;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx110xxxxx0110x100101
+                                                         ldff1h.  */
+                                                      return 1564;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx0000x10011x
+                                                     stnt1b.  */
+                                                  return 1833;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx0010x10011x
+                                                     stnt1h.  */
+                                                  return 1837;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx0100x10011x
+                                                     st3b.  */
+                                                  return 1817;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx0110x10011x
+                                                     st3h.  */
+                                                  return 1821;
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxx0xxxxxxxx111xxxxx0xx0x100100
+                                                     cmplo.  */
+                                                  return 1283;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxx1xxxxxxxx111xxxxx0xx0x100100
+                                                     cmpls.  */
+                                                  return 1285;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx0000x100101
+                                                         ldnt1b.  */
+                                                      return 1623;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx0010x100101
+                                                         ldnt1h.  */
+                                                      return 1627;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx0100x100101
+                                                         ld3b.  */
+                                                      return 1531;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx0110x100101
+                                                         ld3h.  */
+                                                      return 1535;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 20) & 0x1) == 0)
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxx000x0x10011x
+                                                     st1b.  */
+                                                  return 1770;
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx00100x10011x
+                                                         st1b.  */
+                                                      return 1773;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx00110x10011x
+                                                         st1h.  */
+                                                      return 1794;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx10000x10011x
+                                                         stnt1b.  */
+                                                      return 1834;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx10010x10011x
+                                                         stnt1h.  */
+                                                      return 1838;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx10100x10011x
+                                                         st3b.  */
+                                                      return 1818;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx10110x10011x
+                                                         st3h.  */
+                                                      return 1822;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 30) & 0x1) == 0)
+                                {
+                                  if (((word >> 31) & 0x1) == 0)
+                                    {
+                                      if (((word >> 4) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxx0xxxxxxxx1xxxxxxx1xx0x100100
+                                             cmplo.  */
+                                          return 1284;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxx1xxxxxxxx1xxxxxxx1xx0x100100
+                                             cmpls.  */
+                                          return 1286;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 14) & 0x1) == 0)
+                                        {
+                                          if (((word >> 20) & 0x1) == 0)
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx10xxxxx01000x100101
+                                                         ld1b.  */
+                                                      return 1439;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx10xxxxx01010x100101
+                                                         ld1h.  */
+                                                      return 1460;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx10xxxxx01100x100101
+                                                         ld1b.  */
+                                                      return 1441;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx10xxxxx01110x100101
+                                                         ld1h.  */
+                                                      return 1462;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx10xxxxx11000x100101
+                                                         ldnf1b.  */
+                                                      return 1607;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx10xxxxx11010x100101
+                                                         ldnf1h.  */
+                                                      return 1611;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx10xxxxx11100x100101
+                                                         ldnf1b.  */
+                                                      return 1609;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx10xxxxx11110x100101
+                                                         ldnf1h.  */
+                                                      return 1613;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 15) & 0x1) == 0)
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx110xxxxx1000x100101
+                                                         ldff1b.  */
+                                                      return 1548;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx110xxxxx1010x100101
+                                                         ldff1h.  */
+                                                      return 1563;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx110xxxxx1100x100101
+                                                         ldff1b.  */
+                                                      return 1550;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx110xxxxx1110x100101
+                                                         ldff1h.  */
+                                                      return 1565;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx1000x100101
+                                                         ld2b.  */
+                                                      return 1523;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx1010x100101
+                                                         ld2h.  */
+                                                      return 1527;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx1100x100101
+                                                         ld4b.  */
+                                                      return 1539;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx1110x100101
+                                                         ld4h.  */
+                                                      return 1543;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 14) & 0x1) == 0)
+                                    {
+                                      if (((word >> 22) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxx10xxxxxx10x0x10011x
+                                             st1h.  */
+                                          return 1787;
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx10xxxxxx1100x10011x
+                                                 st1b.  */
+                                              return 1774;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx10xxxxxx1110x10011x
+                                                 st1h.  */
+                                              return 1795;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 15) & 0x1) == 0)
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx1000x10011x
+                                                     st2b.  */
+                                                  return 1809;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx1010x10011x
+                                                     st2h.  */
+                                                  return 1813;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx1100x10011x
+                                                     st4b.  */
+                                                  return 1825;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx1110x10011x
+                                                     st4h.  */
+                                                  return 1829;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 20) & 0x1) == 0)
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx01000x10011x
+                                                         st1b.  */
+                                                      return 1771;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx01010x10011x
+                                                         st1h.  */
+                                                      return 1792;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx01100x10011x
+                                                         st1b.  */
+                                                      return 1775;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx01110x10011x
+                                                         st1h.  */
+                                                      return 1796;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx11000x10011x
+                                                         st2b.  */
+                                                      return 1810;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx11010x10011x
+                                                         st2h.  */
+                                                      return 1814;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx11100x10011x
+                                                         st4b.  */
+                                                      return 1826;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx11110x10011x
+                                                         st4h.  */
+                                                      return 1830;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+              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 1661;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxxxxxxxx00011x100000
+                                                 and.  */
+                                              return 1232;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxxxxxxxx00101x100000
+                                                 eor.  */
+                                              return 1319;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxxxxxxxx00111x100000
+                                                 dupm.  */
+                                              return 1317;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 15) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx0xxxx10xx1x100000
+                                             cpy.  */
+                                          return 1302;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx1xxxx10xx1x100000
+                                             fcpy.  */
+                                          return 1345;
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 14) & 0x1) == 0)
+                                    {
+                                      if (((word >> 13) & 0x1) == 0)
+                                        {
+                                          if (((word >> 15) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx000xxxxx1xx1x100000
+                                                 ext.  */
+                                              return 1324;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 16) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 17) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0010000x1xx1x100000
+                                                                 cpy.  */
+                                                              return 1300;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0010001x1xx1x100000
+                                                                 clasta.  */
+                                                              return 1258;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0010010x1xx1x100000
+                                                                 revb.  */
+                                                              return 1709;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0010011x1xx1x100000
+                                                                 splice.  */
+                                                              return 1730;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0010100x1xx1x100000
+                                                                 lasta.  */
+                                                              return 1427;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0010101x1xx1x100000
+                                                                 clasta.  */
+                                                              return 1259;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx001011xx1xx1x100000
+                                                             revw.  */
+                                                          return 1711;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 17) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0011000x1xx1x100000
+                                                                 compact.  */
+                                                              return 1299;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0011001x1xx1x100000
+                                                                 clastb.  */
+                                                              return 1261;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx001101xx1xx1x100000
+                                                             revh.  */
+                                                          return 1710;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0011100x1xx1x100000
+                                                                 lastb.  */
+                                                              return 1429;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxx0011101x1xx1x100000
+                                                                 clastb.  */
+                                                              return 1262;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx001111xx1xx1x100000
+                                                             rbit.  */
+                                                          return 1702;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 15) & 0x1) == 0)
+                                            {
+                                              if (((word >> 11) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 12) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxx00100xxxxx1xx1x100000
+                                                         dup.  */
+                                                      return 1315;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxx01100xxxxx1xx1x100000
+                                                         tbl.  */
+                                                      return 1853;
+                                                    }
+                                                }
+                                              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
+                                                                         xxxxxxxxxxx1x100000001xx1x100000
+                                                                         dup.  */
+                                                                      return 1314;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxx1x100000011xx1x100000
+                                                                         sunpklo.  */
+                                                                      return 1849;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxx1x1000001x1xx1x100000
+                                                                     rev.  */
+                                                                  return 1708;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxx1x100001x01xx1x100000
+                                                                     insr.  */
+                                                                  return 1424;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxx1x100001x11xx1x100000
+                                                                     insr.  */
+                                                                  return 1425;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxx1x10001xxx1xx1x100000
+                                                             uunpklo.  */
+                                                          return 1906;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 17) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxx1x10010xxx1xx1x100000
+                                                             sunpkhi.  */
+                                                          return 1848;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxx1x10011xxx1xx1x100000
+                                                             uunpkhi.  */
+                                                          return 1905;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 16) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 19) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx1010xx001xx1x100000
+                                                             lasta.  */
+                                                          return 1426;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx1010xx011xx1x100000
+                                                             clasta.  */
+                                                          return 1260;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx1010xx1x1xx1x100000
+                                                         cpy.  */
+                                                      return 1301;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 20) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx1011xxx01xx1x100000
+                                                         lastb.  */
+                                                      return 1428;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx1011xxx11xx1x100000
+                                                         clastb.  */
+                                                      return 1263;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                  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
+                                                                 xxxxxxxxxx000010xxxx01xx1x100000
+                                                                 zip1.  */
+                                                              return 1923;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 16) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 18) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx0000100x0x11xx1x100000
+                                                                         punpklo.  */
+                                                                      return 1701;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx0000100x1x11xx1x100000
+                                                                         rev.  */
+                                                                      return 1707;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx0000101xxx11xx1x100000
+                                                                     punpkhi.  */
+                                                                  return 1700;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx000110xxxxx1xx1x100000
+                                                             zip1.  */
+                                                          return 1924;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 13) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx001010xxxxx1xx1x100000
+                                                             trn1.  */
+                                                          return 1854;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx001110xxxxx1xx1x100000
+                                                             trn1.  */
+                                                          return 1855;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 13) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx01x010xxxxx1xx1x100000
+                                                         uzp1.  */
+                                                      return 1910;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx01x110xxxxx1xx1x100000
+                                                         uzp1.  */
+                                                      return 1911;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 11) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 12) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 13) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx100010xxxxx1xx1x100000
+                                                             zip2.  */
+                                                          return 1925;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx100110xxxxx1xx1x100000
+                                                             zip2.  */
+                                                          return 1926;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 13) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx101010xxxxx1xx1x100000
+                                                             trn2.  */
+                                                          return 1856;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx101110xxxxx1xx1x100000
+                                                             trn2.  */
+                                                          return 1857;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 13) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx11x010xxxxx1xx1x100000
+                                                         uzp2.  */
+                                                      return 1912;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx11x110xxxxx1xx1x100000
+                                                         uzp2.  */
+                                                      return 1913;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxx11xxxxx1xx1x100000
+                                             sel.  */
+                                          return 1720;
+                                        }
+                                    }
+                                }
+                            }
+                          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 1630;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx000xxxxxx1x1x100001
+                                                 prfb.  */
+                                              return 1674;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx001xxxxxxx01x100001
+                                                 ld1rsh.  */
+                                              return 1475;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx001xxxxxxx11x100001
+                                                 ld1rsb.  */
+                                              return 1472;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 15) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxx0x01x100001
+                                                     ld1w.  */
+                                                  return 1510;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxx1x01x100001
+                                                     ld1w.  */
+                                                  return 1511;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxxx011x100001
+                                                     ldr.  */
+                                                  return 1631;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxxx111x100001
+                                                     prfw.  */
+                                                  return 1695;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx0001x100001
+                                                         prfw.  */
+                                                      return 1691;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx0011x100001
+                                                         prfd.  */
+                                                      return 1677;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx011xxxxx10x1x100001
+                                                     ld1w.  */
+                                                  return 1518;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx011xxxxxx101x100001
+                                                     ld1rw.  */
+                                                  return 1478;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx011xxxxxx111x100001
+                                                     ld1rsb.  */
+                                                  return 1474;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 14) & 0x1) == 0)
+                                    {
+                                      if (((word >> 15) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxx100xxxxxxxx1x100001
+                                             prfh.  */
+                                          return 1688;
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx101xxxxxxx01x100001
+                                                 ld1rsh.  */
+                                              return 1476;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx101xxxxxxx11x100001
+                                                 ld1rsb.  */
+                                              return 1473;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 15) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx0x01x100001
+                                                     ldff1w.  */
+                                                  return 1596;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx1x01x100001
+                                                     ldff1w.  */
+                                                  return 1597;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx110xxxxxxx11x100001
+                                                 prfd.  */
+                                              return 1681;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx0001x100001
+                                                         prfw.  */
+                                                      return 1694;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx0011x100001
+                                                         prfd.  */
+                                                      return 1680;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx10x1x100001
+                                                     ldff1w.  */
+                                                  return 1604;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxxx101x100001
+                                                     ld1rw.  */
+                                                  return 1479;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxxx111x100001
+                                                     ld1rd.  */
+                                                  return 1468;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                      else
+                        {
+                          if (((word >> 13) & 0x1) == 0)
+                            {
+                              if (((word >> 14) & 0x1) == 0)
+                                {
+                                  if (((word >> 15) & 0x1) == 0)
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxx000xxxxx0xx1x10001x
+                                             ld1sw.  */
+                                          return 1504;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxx000xxxxx1xx1x10001x
+                                             ld1sw.  */
+                                          return 1505;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxx001xxxxx0xx1x10001x
+                                             ld1sw.  */
+                                          return 1506;
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx001xxxxx10x1x10001x
+                                                 ld1sw.  */
+                                              return 1509;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx001xxxxx11x1x10001x
+                                                 ld1sw.  */
+                                              return 1507;
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 15) & 0x1) == 0)
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx010xxxxx0x01x10001x
+                                                 ld1w.  */
+                                              return 1514;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx010xxxxx0x11x10001x
+                                                 ld1d.  */
+                                              return 1444;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx010xxxxx1x01x10001x
+                                                 ld1w.  */
+                                              return 1515;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx010xxxxx1x11x10001x
+                                                 ld1d.  */
+                                              return 1445;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx011xxxxx0x01x10001x
+                                                 ld1w.  */
+                                              return 1516;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx011xxxxx0x11x10001x
+                                                 ld1d.  */
+                                              return 1446;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx011xxxxx1001x10001x
+                                                     ld1w.  */
+                                                  return 1521;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx011xxxxx1011x10001x
+                                                     ld1d.  */
+                                                  return 1449;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx011xxxxx1101x10001x
+                                                     ld1w.  */
+                                                  return 1517;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx011xxxxx1111x10001x
+                                                     ld1d.  */
+                                                  return 1447;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 14) & 0x1) == 0)
+                                {
+                                  if (((word >> 15) & 0x1) == 0)
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxx100xxxxx0xx1x10001x
+                                             ldff1sw.  */
+                                          return 1591;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxx100xxxxx1xx1x10001x
+                                             ldff1sw.  */
+                                          return 1592;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxx101xxxxx0xx1x10001x
+                                             ldff1sw.  */
+                                          return 1593;
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx101xxxxx10x1x10001x
+                                                 ldff1sw.  */
+                                              return 1595;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx101xxxxx11x1x10001x
+                                                 ldff1sw.  */
+                                              return 1594;
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 15) & 0x1) == 0)
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx110xxxxx0x01x10001x
+                                                 ldff1w.  */
+                                              return 1600;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx110xxxxx0x11x10001x
+                                                 ldff1d.  */
+                                              return 1556;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx110xxxxx1x01x10001x
+                                                 ldff1w.  */
+                                              return 1601;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx110xxxxx1x11x10001x
+                                                 ldff1d.  */
+                                              return 1557;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx0001x10001x
+                                                     prfw.  */
+                                                  return 1696;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx0011x10001x
+                                                     prfd.  */
+                                                  return 1682;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx0101x10001x
+                                                     ldff1w.  */
+                                                  return 1602;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx0111x10001x
+                                                     ldff1d.  */
+                                                  return 1558;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx1001x10001x
+                                                     ldff1w.  */
+                                                  return 1605;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx1011x10001x
+                                                     ldff1d.  */
+                                                  return 1560;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx1101x10001x
+                                                     ldff1w.  */
+                                                  return 1603;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx1111x10001x
+                                                     ldff1d.  */
+                                                  return 1559;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                  else
+                    {
+                      if (((word >> 15) & 0x1) == 0)
+                        {
+                          if (((word >> 14) & 0x1) == 0)
+                            {
+                              if (((word >> 13) & 0x1) == 0)
+                                {
+                                  if (((word >> 30) & 0x1) == 0)
+                                    {
+                                      if (((word >> 4) & 0x1) == 0)
+                                        {
+                                          if (((word >> 21) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxx0xxxxxxxx000xxxxx0xx1x10010x
+                                                 cmpge.  */
+                                              return 1271;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 11) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 12) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxx0xxxxxx00000xxxxx1xx1x10010x
+                                                         whilelt.  */
+                                                      return 1920;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxx0xxxxxx01000xxxxx1xx1x10010x
+                                                         whilelt.  */
+                                                      return 1921;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 12) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxx0xxxxxx10000xxxxx1xx1x10010x
+                                                         whilelo.  */
+                                                      return 1916;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxx0xxxxxx11000xxxxx1xx1x10010x
+                                                         whilelo.  */
+                                                      return 1917;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 21) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxx1xxxxxxxx000xxxxx0xx1x10010x
+                                                 cmpgt.  */
+                                              return 1274;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 11) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 12) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxx1xxxxxx00000xxxxx1xx1x10010x
+                                                         whilele.  */
+                                                      return 1914;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxx1xxxxxx01000xxxxx1xx1x10010x
+                                                         whilele.  */
+                                                      return 1915;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 12) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxx1xxxxxx10000xxxxx1xx1x10010x
+                                                         whilels.  */
+                                                      return 1918;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxx1xxxxxx11000xxxxx1xx1x10010x
+                                                         whilels.  */
+                                                      return 1919;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          if (((word >> 21) & 0x1) == 0)
+                                            {
+                                              if (((word >> 10) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx00x000xxxxx0xx1x100110
+                                                         fadd.  */
+                                                      return 1329;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx010000xxxxx0xx1x100110
+                                                             fmul.  */
+                                                          return 1380;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx011000xxxxx0xx1x100110
+                                                             frecps.  */
+                                                          return 1390;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx10x000xxxxx0xx1x100110
+                                                         fsub.  */
+                                                      return 1403;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx110000xxxxx0xx1x100110
+                                                             ftsmul.  */
+                                                          return 1409;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx111000xxxxx0xx1x100110
+                                                             frsqrts.  */
+                                                          return 1400;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx000xxxxx1xx1x100110
+                                                 fmla.  */
+                                              return 1377;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxx000xxxxxxxx1x100111
+                                             str.  */
+                                          return 1841;
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 21) & 0x1) == 0)
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 4) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxx0xxxxxxxx100xxxxx0xx1x10010x
+                                                 cmplt.  */
+                                              return 1288;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxx1xxxxxxxx100xxxxx0xx1x10010x
+                                                 cmple.  */
+                                              return 1282;
+                                            }
+                                        }
+                                      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
+                                                                 xxxxxxxxxxxxx100000000xx1x10011x
+                                                                 faddv.  */
+                                                              return 1333;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 4) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxx0xxxxxxxx100000010xx1x10011x
+                                                                     fcmge.  */
+                                                                  return 1336;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxx1xxxxxxxx100000010xx1x10011x
+                                                                     fcmgt.  */
+                                                                  return 1338;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx1000001x0xx1x10011x
+                                                             fadda.  */
+                                                          return 1332;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx100001xx0xx1x10011x
+                                                         fmaxnmv.  */
+                                                      return 1369;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 18) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx100010xx0xx1x10011x
+                                                         fcmeq.  */
+                                                      return 1334;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx1000110x0xx1x10011x
+                                                             fmaxv.  */
+                                                          return 1370;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx1000111x0xx1x10011x
+                                                             frecpe.  */
+                                                          return 1389;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 17) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 18) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 4) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxx0xxxxxxxx100100xx0xx1x10011x
+                                                             fcmlt.  */
+                                                          return 1341;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxx1xxxxxxxx100100xx0xx1x10011x
+                                                             fcmle.  */
+                                                          return 1340;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx100101xx0xx1x10011x
+                                                         fminnmv.  */
+                                                      return 1375;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 18) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx100110xx0xx1x10011x
+                                                         fcmne.  */
+                                                      return 1342;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx1001110x0xx1x10011x
+                                                             fminv.  */
+                                                          return 1376;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx1001111x0xx1x10011x
+                                                             frsqrte.  */
+                                                          return 1399;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 4) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxx0xxxxxxxx100xxxxx1xx1x10010x
+                                                 ctermeq.  */
+                                              return 1303;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxx1xxxxxxxx100xxxxx1xx1x10010x
+                                                 ctermne.  */
+                                              return 1304;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxx100xxxxx1xx1x10011x
+                                             fmls.  */
+                                          return 1378;
+                                        }
+                                    }
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 23) & 0x1) == 0)
+                                {
+                                  if (((word >> 21) & 0x1) == 0)
+                                    {
+                                      if (((word >> 22) & 0x1) == 0)
+                                        {
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 9) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 4) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxx0xxxx0xxxx10xxxx00001x100100
+                                                                 and.  */
+                                                              return 1234;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxx1xxxx0xxxx10xxxx00001x100100
+                                                                 bic.  */
+                                                              return 1246;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxx0xxxx10xxx010001x100100
+                                                                 brka.  */
+                                                              return 1248;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxx0xxxx10xxx110001x100100
+                                                                 brkn.  */
+                                                              return 1252;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 4) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxx0xxxx1xxxx10xxxxx0001x100100
+                                                             eor.  */
+                                                          return 1321;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxx1xxxx1xxxx10xxxxx0001x100100
+                                                             sel.  */
+                                                          return 1721;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 13) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx010xxxxx0001x100101
+                                                         ld1sh.  */
+                                                      return 1493;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx110xxxxx0001x100101
+                                                         ldff1sh.  */
+                                                      return 1582;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxx10xxxxx0001x10011x
+                                                 stnt1w.  */
+                                              return 1839;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 4) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 9) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxx0xxxx0xxxx10xxxx00101x100100
+                                                                 ands.  */
+                                                              return 1235;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxx0xxxx0xxxx10xxx010101x100100
+                                                                     brkas.  */
+                                                                  return 1249;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxx0xxxx0xxxx10xxx110101x100100
+                                                                     brkns.  */
+                                                                  return 1253;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxx0xxxx1xxxx10xxxxx0101x100100
+                                                             eors.  */
+                                                          return 1322;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxx1xxxxxxxxx10xxxxx0101x100100
+                                                         bics.  */
+                                                      return 1247;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 13) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx010xxxxx0101x100101
+                                                         ld1w.  */
+                                                      return 1512;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx110xxxxx0101x100101
+                                                         ldff1w.  */
+                                                      return 1598;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 13) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxx0101x10011x
+                                                     st1w.  */
+                                                  return 1801;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx0101x10011x
+                                                     st3w.  */
+                                                  return 1823;
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 13) & 0x1) == 0)
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx010xxxxx1001x1001xx
+                                                 ld1sh.  */
+                                              return 1494;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxx1101x10010x
+                                                     ld1w.  */
+                                                  return 1513;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxx1101x10011x
+                                                     st1w.  */
+                                                  return 1803;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx1001x10010x
+                                                     ldff1sh.  */
+                                                  return 1583;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx1001x10011x
+                                                     st2w.  */
+                                                  return 1815;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx1101x10010x
+                                                     ldff1w.  */
+                                                  return 1599;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx1101x10011x
+                                                     st4w.  */
+                                                  return 1831;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 30) & 0x1) == 0)
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 9) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 4) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxx0xxxx0xxxx10xxxx00011x100100
+                                                                 orr.  */
+                                                              return 1663;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxx1xxxx0xxxx10xxxx00011x100100
+                                                                 orn.  */
+                                                              return 1658;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxx0xxxx10xxxx10011x100100
+                                                             brkb.  */
+                                                          return 1250;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 4) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxx0xxxx1xxxx10xxxxx0011x100100
+                                                             nor.  */
+                                                          return 1655;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxx1xxxx1xxxx10xxxxx0011x100100
+                                                             nand.  */
+                                                          return 1652;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 13) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx010xxxxx0011x100101
+                                                         ld1sb.  */
+                                                      return 1481;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx110xxxxx0011x100101
+                                                         ldff1sb.  */
+                                                      return 1573;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 4) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 9) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxx0xxxx0xxxx10xxxx00111x100100
+                                                                 orrs.  */
+                                                              return 1664;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxx0xxxx0xxxx10xxxx10111x100100
+                                                                 brkbs.  */
+                                                              return 1251;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxx0xxxx1xxxx10xxxxx0111x100100
+                                                             nors.  */
+                                                          return 1656;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 9) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxx1xxxx0xxxx10xxxxx0111x100100
+                                                             orns.  */
+                                                          return 1659;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxx1xxxx1xxxx10xxxxx0111x100100
+                                                             nands.  */
+                                                          return 1653;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 13) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx010xxxxx0111x100101
+                                                         ld1sb.  */
+                                                      return 1483;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx110xxxxx0111x100101
+                                                         ldff1sb.  */
+                                                      return 1575;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxx1011x10010x
+                                                     ld1sb.  */
+                                                  return 1482;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxx1111x10010x
+                                                     ld1d.  */
+                                                  return 1443;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx1011x10010x
+                                                     ldff1sb.  */
+                                                  return 1574;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx1111x10010x
+                                                     ldff1d.  */
+                                                  return 1555;
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 13) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 4) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxx0xxxxxxxx010xxxxx0x11x100110
+                                                         fcmge.  */
+                                                      return 1337;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxx1xxxxxxxx010xxxxx0x11x100110
+                                                         fcmgt.  */
+                                                      return 1339;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxx1x11x100110
+                                                     fnmla.  */
+                                                  return 1386;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxxx011x100111
+                                                     str.  */
+                                                  return 1842;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx010xxxxxx111x100111
+                                                     st1d.  */
+                                                  return 1780;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 21) & 0x1) == 0)
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 4) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxx0xxxxxxxx110xxxxx0x11x100110
+                                                         fcmeq.  */
+                                                      return 1335;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxx1xxxxxxxx110xxxxx0x11x100110
+                                                         fcmne.  */
+                                                      return 1343;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx110xxxxx0011x100111
+                                                         stnt1d.  */
+                                                      return 1835;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx110xxxxx0111x100111
+                                                         st3d.  */
+                                                      return 1819;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx110xxxxx1x11x100110
+                                                     fnmls.  */
+                                                  return 1387;
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx110xxxxx1011x100111
+                                                         st2d.  */
+                                                      return 1811;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx110xxxxx1111x100111
+                                                         st4d.  */
+                                                      return 1827;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                      else
+                        {
+                          if (((word >> 21) & 0x1) == 0)
+                            {
+                              if (((word >> 30) & 0x1) == 0)
+                                {
+                                  if (((word >> 14) & 0x1) == 0)
+                                    {
+                                      if (((word >> 13) & 0x1) == 0)
+                                        {
+                                          if (((word >> 4) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxx0xxxxxxxx001xxxxx0xx1x10010x
+                                                 cmpeq.  */
+                                              return 1268;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxx1xxxxxxxx001xxxxx0xx1x10010x
+                                                 cmpne.  */
+                                              return 1291;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 20) & 0x1) == 0)
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx101xxxx00001x10010x
+                                                         ld1sh.  */
+                                                      return 1500;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx101xxxx00011x10010x
+                                                         ld1sb.  */
+                                                      return 1487;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx101xxxx00101x10010x
+                                                         ld1w.  */
+                                                      return 1519;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx101xxxx00111x10010x
+                                                         ld1sb.  */
+                                                      return 1489;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx101xxxx10001x10010x
+                                                         ldnf1sh.  */
+                                                      return 1617;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx101xxxx10011x10010x
+                                                         ldnf1sb.  */
+                                                      return 1614;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx101xxxx10101x10010x
+                                                         ldnf1w.  */
+                                                      return 1620;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx101xxxx10111x10010x
+                                                         ldnf1sb.  */
+                                                      return 1616;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          if (((word >> 4) & 0x1) == 0)
+                                            {
+                                              if (((word >> 20) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxx0xxxxxxxxx11xxxx000x1x100100
+                                                         brkpa.  */
+                                                      return 1254;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxx0xxxxxxxxx11xxxx001x1x100100
+                                                         brkpas.  */
+                                                      return 1255;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 16) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxx0xxxxxxxxx110xx010xx1x100100
+                                                             ptest.  */
+                                                          return 1697;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 10) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 12) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 13) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxx0xxxxx0x00110xx110xx1x100100
+                                                                         pfirst.  */
+                                                                      return 1667;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxx0xxxxx0x01110xx110xx1x100100
+                                                                         ptrue.  */
+                                                                      return 1698;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 22) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxx0xxxxx0x1x110xx1100x1x100100
+                                                                         rdffr.  */
+                                                                      return 1704;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxx0xxxxx0x1x110xx1101x1x100100
+                                                                         rdffrs.  */
+                                                                      return 1705;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxx0xxxxx1xxx110xx110xx1x100100
+                                                                 pfalse.  */
+                                                              return 1666;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 10) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxx0xxxxx0x0x111xxx10xx1x100100
+                                                                 ptrues.  */
+                                                              return 1699;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxx0xxxxx0x1x111xxx10xx1x100100
+                                                                 rdffr.  */
+                                                              return 1703;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxx0xxxxx1xxx111xxx10xx1x100100
+                                                             pnext.  */
+                                                          return 1668;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxx1xxxxxxxxx11xxxxx00x1x100100
+                                                     brkpb.  */
+                                                  return 1256;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxx1xxxxxxxxx11xxxxx01x1x100100
+                                                     brkpbs.  */
+                                                  return 1257;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx0001x100101
+                                                         ldnt1w.  */
+                                                      return 1628;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx0011x100101
+                                                         ldnt1d.  */
+                                                      return 1624;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx0101x100101
+                                                         ld3w.  */
+                                                      return 1536;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx0111x100101
+                                                         ld3d.  */
+                                                      return 1532;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx0001x100101
+                                                         ldnt1w.  */
+                                                      return 1629;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx0011x100101
+                                                         ldnt1d.  */
+                                                      return 1625;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx0101x100101
+                                                         ld3w.  */
+                                                      return 1537;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx0111x100101
+                                                         ld3d.  */
+                                                      return 1533;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 13) & 0x1) == 0)
+                                    {
+                                      if (((word >> 23) & 0x1) == 0)
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx0x1xxxxx0001x10011x
+                                                 st1w.  */
+                                              return 1797;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx0x1xxxxx0101x10011x
+                                                 st1w.  */
+                                              return 1802;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 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 1330;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx001001000x11x100110
+                                                                         fmaxnm.  */
+                                                                      return 1367;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 18) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx001010000x11x100110
+                                                                         fmul.  */
+                                                                      return 1381;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx001011000x11x100110
+                                                                         fmax.  */
+                                                                      return 1365;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 17) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 18) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx001100000x11x100110
+                                                                         fsub.  */
+                                                                      return 1404;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx001101000x11x100110
+                                                                         fminnm.  */
+                                                                      return 1373;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 18) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx001110000x11x100110
+                                                                         fsubr.  */
+                                                                      return 1406;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx001111000x11x100110
+                                                                         fmin.  */
+                                                                      return 1371;
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx001xxx010x11x100110
+                                                             ftmad.  */
+                                                          return 1408;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 17) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 18) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx001000100x11x100110
+                                                                         fabd.  */
+                                                                      return 1325;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx001000110x11x100110
+                                                                         fadd.  */
+                                                                      return 1331;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx001001100x11x100110
+                                                                         fdivr.  */
+                                                                      return 1361;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx001001110x11x100110
+                                                                         fmaxnm.  */
+                                                                      return 1368;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 18) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx001010100x11x100110
+                                                                         fmulx.  */
+                                                                      return 1383;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx001010110x11x100110
+                                                                         fmul.  */
+                                                                      return 1382;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx0010111x0x11x100110
+                                                                     fmax.  */
+                                                                  return 1366;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 17) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 18) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx001100100x11x100110
+                                                                         fscale.  */
+                                                                      return 1401;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx001100110x11x100110
+                                                                         fsub.  */
+                                                                      return 1405;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx001101100x11x100110
+                                                                         fdiv.  */
+                                                                      return 1360;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx001101110x11x100110
+                                                                         fminnm.  */
+                                                                      return 1374;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 18) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx0011101x0x11x100110
+                                                                     fsubr.  */
+                                                                  return 1407;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx0011111x0x11x100110
+                                                                     fmin.  */
+                                                                  return 1372;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 4) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxx0xxxxxxxx011xxxxx0x11x100110
+                                                         fcmuo.  */
+                                                      return 1344;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxx1xxxxxxxx011xxxxx0x11x100110
+                                                         facge.  */
+                                                      return 1327;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx0x1xxxxx0x11x100111
+                                                 st1d.  */
+                                              return 1776;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 14) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxx0001x10011x
+                                                     st1w.  */
+                                                  return 1798;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxx0101x10011x
+                                                     st1w.  */
+                                                  return 1805;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  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
+                                                                         xxxxxxxxxxxxx101000000x11x100110
+                                                                         frintn.  */
+                                                                      return 1395;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx101000010x11x100110
+                                                                         scvtf.  */
+                                                                      return 1715;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                    {
+                                                                      if (((word >> 22) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             xxxxxxxxxxxxx101000100011x100110
+                                                                             fcvt.  */
+                                                                          return 1346;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             xxxxxxxxxxxxx101000100111x100110
+                                                                             fcvt.  */
+                                                                          return 1348;
+                                                                        }
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx101000110x11x100110
+                                                                         fcvtzs.  */
+                                                                      return 1353;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx101001000x11x100110
+                                                                         frinta.  */
+                                                                      return 1392;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      if (((word >> 22) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             xxxxxxxxxxxxx101001010011x100110
+                                                                             scvtf.  */
+                                                                          return 1714;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             xxxxxxxxxxxxx101001010111x100110
+                                                                             scvtf.  */
+                                                                          return 1716;
+                                                                        }
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx101001100x11x100110
+                                                                         frecpx.  */
+                                                                      return 1391;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      if (((word >> 22) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             xxxxxxxxxxxxx101001110011x100110
+                                                                             fcvtzs.  */
+                                                                          return 1352;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             xxxxxxxxxxxxx101001110111x100110
+                                                                             fcvtzs.  */
+                                                                          return 1354;
+                                                                        }
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 18) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx1010100x0x11x100110
+                                                                     frintm.  */
+                                                                  return 1394;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx1010101x0x11x100110
+                                                                     fcvt.  */
+                                                                  return 1350;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx101011000x11x100110
+                                                                         frintx.  */
+                                                                      return 1397;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx101011010x11x100110
+                                                                         scvtf.  */
+                                                                      return 1717;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx1010111x0x11x100110
+                                                                     fcvtzs.  */
+                                                                  return 1355;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 17) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 18) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx101100000x11x100110
+                                                                         frintp.  */
+                                                                      return 1396;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx101100010x11x100110
+                                                                         ucvtf.  */
+                                                                      return 1861;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                    {
+                                                                      if (((word >> 22) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             xxxxxxxxxxxxx101100100011x100110
+                                                                             fcvt.  */
+                                                                          return 1347;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             xxxxxxxxxxxxx101100100111x100110
+                                                                             fcvt.  */
+                                                                          return 1349;
+                                                                        }
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx101100110x11x100110
+                                                                         fcvtzu.  */
+                                                                      return 1357;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 22) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx1011010x0011x100110
+                                                                         ucvtf.  */
+                                                                      return 1860;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx1011010x0111x100110
+                                                                         ucvtf.  */
+                                                                      return 1862;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx101101100x11x100110
+                                                                         fsqrt.  */
+                                                                      return 1402;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      if (((word >> 22) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             xxxxxxxxxxxxx101101110011x100110
+                                                                             fcvtzu.  */
+                                                                          return 1356;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             xxxxxxxxxxxxx101101110111x100110
+                                                                             fcvtzu.  */
+                                                                          return 1358;
+                                                                        }
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 18) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx1011100x0x11x100110
+                                                                     frintz.  */
+                                                                  return 1398;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx1011101x0x11x100110
+                                                                     fcvt.  */
+                                                                  return 1351;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx101111000x11x100110
+                                                                         frinti.  */
+                                                                      return 1393;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxxxxx101111010x11x100110
+                                                                         ucvtf.  */
+                                                                      return 1863;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxxxx1011111x0x11x100110
+                                                                     fcvtzu.  */
+                                                                  return 1359;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx101xxxxx0011x100111
+                                                         st1d.  */
+                                                      return 1777;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx101xxxxx0111x100111
+                                                         st1d.  */
+                                                      return 1781;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              if (((word >> 20) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxx00x01x10011x
+                                                     st1w.  */
+                                                  return 1806;
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx10001x10011x
+                                                         stnt1w.  */
+                                                      return 1840;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx10101x10011x
+                                                         st3w.  */
+                                                      return 1824;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx0x11x100110
+                                                     facgt.  */
+                                                  return 1328;
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx0011x100111
+                                                         stnt1d.  */
+                                                      return 1836;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx0111x100111
+                                                         st3d.  */
+                                                      return 1820;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 30) & 0x1) == 0)
+                                {
+                                  if (((word >> 14) & 0x1) == 0)
+                                    {
+                                      if (((word >> 20) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 16) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 17) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxxx01000001xx1x100100
+                                                                 cntp.  */
+                                                              return 1297;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 10) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 11) & 0x1) == 0)
+                                                                    {
+                                                                      if (((word >> 12) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             xxxxxxxxxx000x01000101xx1x100100
+                                                                             sqincp.  */
+                                                                          return 1755;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             xxxxxxxxxx001x01000101xx1x100100
+                                                                             wrffr.  */
+                                                                          return 1922;
+                                                                        }
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx01xx01000101xx1x100100
+                                                                         sqincp.  */
+                                                                      return 1757;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx1xxx01000101xx1x100100
+                                                                     sqincp.  */
+                                                                  return 1756;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 11) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 12) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxx00x01001x01xx1x100100
+                                                                     incp.  */
+                                                                  return 1416;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxxx01x01001x01xx1x100100
+                                                                     setffr.  */
+                                                                  return 1722;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxx1xx01001x01xx1x100100
+                                                                 incp.  */
+                                                              return 1417;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 10) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 11) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00xx0101xx01xx1x100100
+                                                                 sqdecp.  */
+                                                              return 1741;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx01xx0101xx01xx1x100100
+                                                                 sqdecp.  */
+                                                              return 1743;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx1xxx0101xx01xx1x100100
+                                                             sqdecp.  */
+                                                          return 1742;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 10) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 11) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 17) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 18) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00xx01100x01xx1x100100
+                                                                     uqincp.  */
+                                                                  return 1897;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00xx01101x01xx1x100100
+                                                                     decp.  */
+                                                                  return 1310;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00xx0111xx01xx1x100100
+                                                                 uqdecp.  */
+                                                              return 1883;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 17) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 18) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx01xx01100x01xx1x100100
+                                                                     uqincp.  */
+                                                                  return 1898;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx01xx01101x01xx1x100100
+                                                                     decp.  */
+                                                                  return 1311;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx01xx0111xx01xx1x100100
+                                                                 uqdecp.  */
+                                                              return 1884;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 17) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx1xxx0110xx01xx1x100100
+                                                             uqincp.  */
+                                                          return 1899;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx1xxx0111xx01xx1x100100
+                                                             uqdecp.  */
+                                                          return 1885;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxxx01xxxx01001x100101
+                                                         ld1sh.  */
+                                                      return 1501;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxxx01xxxx01011x100101
+                                                         ld1sb.  */
+                                                      return 1488;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxxx01xxxx01101x100101
+                                                         ld1w.  */
+                                                      return 1520;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxxx01xxxx01111x100101
+                                                         ld1d.  */
+                                                      return 1448;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxxx01xxxx11001x10010x
+                                                     ldnf1sh.  */
+                                                  return 1618;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxxx01xxxx11011x10010x
+                                                     ldnf1sb.  */
+                                                  return 1615;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxxx01xxxx11101x10010x
+                                                     ldnf1w.  */
+                                                  return 1621;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxxx01xxxx11111x10010x
+                                                     ldnf1d.  */
+                                                  return 1610;
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          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
+                                                                 xxxxxxxxxxxxxx11000001xx1x100100
+                                                                 add.  */
+                                                              return 1224;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxxx11000011xx1x100100
+                                                                 mul.  */
+                                                              return 1650;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxxx11000101xx1x100100
+                                                                 smax.  */
+                                                              return 1723;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxxx11000111xx1x100100
+                                                                 dup.  */
+                                                              return 1316;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxxx11001xx1xx1x100100
+                                                         sqadd.  */
+                                                      return 1732;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 18) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxxx11010xx1xx1x100100
+                                                         smin.  */
+                                                      return 1726;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxxx11011xx1xx1x100100
+                                                         sqsub.  */
+                                                      return 1762;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 17) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 18) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxxx111000x1xx1x100100
+                                                             sub.  */
+                                                          return 1844;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxxx11100101xx1x100100
+                                                                 umax.  */
+                                                              return 1866;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxxxxxx11100111xx1x100100
+                                                                 fdup.  */
+                                                              return 1362;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxxx11101xx1xx1x100100
+                                                         uqadd.  */
+                                                      return 1874;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 18) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxxx111100x1xx1x100100
+                                                             subr.  */
+                                                          return 1846;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxxx111101x1xx1x100100
+                                                             umin.  */
+                                                          return 1869;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxxx11111xx1xx1x100100
+                                                         uqsub.  */
+                                                      return 1904;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx1001x100101
+                                                         ld2w.  */
+                                                      return 1528;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx1011x100101
+                                                         ld2d.  */
+                                                      return 1524;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx1101x100101
+                                                         ld4w.  */
+                                                      return 1544;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx011xxxxx1111x100101
+                                                         ld4d.  */
+                                                      return 1540;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx1001x100101
+                                                         ld2w.  */
+                                                      return 1529;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx1011x100101
+                                                         ld2d.  */
+                                                      return 1525;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx1101x100101
+                                                         ld4w.  */
+                                                      return 1545;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxxx1111x100101
+                                                         ld4d.  */
+                                                      return 1541;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 13) & 0x1) == 0)
+                                    {
+                                      if (((word >> 23) & 0x1) == 0)
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx0x1xxxxx1001x10011x
+                                                 st1w.  */
+                                              return 1799;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx0x1xxxxx1101x10011x
+                                                 st1w.  */
+                                              return 1804;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx001xxxxx1x11x100110
+                                                     fmad.  */
+                                                  return 1364;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx011xxxxx1x11x100110
+                                                     fnmad.  */
+                                                  return 1385;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxx0x1xxxxx1x11x100111
+                                                 st1d.  */
+                                              return 1778;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 14) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxx1001x10011x
+                                                     st1w.  */
+                                                  return 1800;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxx1101x10011x
+                                                     st1w.  */
+                                                  return 1807;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxx1x11x100110
+                                                     fmsb.  */
+                                                  return 1379;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx101xxxxx1x11x100111
+                                                     st1d.  */
+                                                  return 1779;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              if (((word >> 20) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxx01x01x10011x
+                                                     st1w.  */
+                                                  return 1808;
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx11001x10011x
+                                                         st2w.  */
+                                                      return 1816;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx11101x10011x
+                                                         st4w.  */
+                                                      return 1832;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxxxxx111xxxxx1x11x100110
+                                                     fnmsb.  */
+                                                  return 1388;
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 20) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxxxxx111xxxx01x11x100111
+                                                         st1d.  */
+                                                      return 1782;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx111xxxx11011x100111
+                                                             st2d.  */
+                                                          return 1812;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxxxxx111xxxx11111x100111
+                                                             st4d.  */
+                                                          return 1828;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+          else
+            {
+              if (((word >> 29) & 0x1) == 0)
+                {
+                  if (((word >> 30) & 0x1) == 0)
+                    {
+                      if (((word >> 31) & 0x1) == 0)
+                        {
+                          /* 33222222222211111111110000000000
+                             10987654321098765432109876543210
+                             xxxxxxxxxxxxxxxxxxxxxxxxxx101000
+                             b.  */
+                          return 627;
+                        }
+                      else
+                        {
+                          /* 33222222222211111111110000000000
+                             10987654321098765432109876543210
+                             xxxxxxxxxxxxxxxxxxxxxxxxxx101001
+                             bl.  */
+                          return 628;
+                        }
+                    }
+                  else
+                    {
+                      if (((word >> 24) & 0x1) == 0)
+                        {
+                          if (((word >> 4) & 0x1) == 0)
+                            {
+                              if (((word >> 25) & 0x1) == 0)
+                                {
+                                  if (((word >> 31) & 0x1) == 0)
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         xxxx0xxxxxxxxxxxxxxxxxxx00101010
+                                         b.c.  */
+                                      return 648;
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 0) & 0x1) == 0)
+                                        {
+                                          if (((word >> 1) & 0x1) == 0)
+                                            {
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     00xx0xxxxxxxxxxxxxxxx0xx00101011
+                                                     hlt.  */
+                                                  return 739;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     00xx0xxxxxxxxxxxxxxxx1xx00101011
+                                                     brk.  */
+                                                  return 738;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     01xx0xxxxxxxxxxxxxxxx0xx00101011
+                                                     hvc.  */
+                                                  return 736;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     01xx0xxxxxxxxxxxxxxxx1xx00101011
+                                                     dcps2.  */
+                                                  return 741;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 1) & 0x1) == 0)
+                                            {
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     10xx0xxxxxxxxxxxxxxxx0xx00101011
+                                                     svc.  */
+                                                  return 735;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     10xx0xxxxxxxxxxxxxxxx1xx00101011
+                                                     dcps1.  */
+                                                  return 740;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     11xx0xxxxxxxxxxxxxxxx0xx00101011
+                                                     smc.  */
+                                                  return 737;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     11xx0xxxxxxxxxxxxxxxx1xx00101011
+                                                     dcps3.  */
+                                                  return 742;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                              else
                                 {
-                                  if (((word >> 1) & 0x1) == 0)
+                                  if (((word >> 21) & 0x1) == 0)
                                     {
-                                      if (((word >> 21) & 0x1) == 0)
+                                      if (((word >> 22) & 0x1) == 0)
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             00xxxxxxxxxxxxxxxxxxx0xx0010x011
-                                             hlt.  */
-                                          return 708;
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxx0xxxxxxxxxxxxxxxx0000110101x
+                                                 br.  */
+                                              return 629;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxx0xxxxxxxxxxxxxxxx0010110101x
+                                                 eret.  */
+                                              return 632;
+                                            }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             00xxxxxxxxxxxxxxxxxxx1xx0010x011
-                                             brk.  */
-                                          return 707;
+                                             xxxx0xxxxxxxxxxxxxxxx01x0110101x
+                                             ret.  */
+                                          return 631;
                                         }
                                     }
                                   else
                                     {
-                                      if (((word >> 21) & 0x1) == 0)
+                                      if (((word >> 23) & 0x1) == 0)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             01xxxxxxxxxxxxxxxxxxx0xx0010x011
-                                             hvc.  */
-                                          return 705;
+                                             xxxx0xxxxxxxxxxxxxxxx1x00110101x
+                                             blr.  */
+                                          return 630;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             01xxxxxxxxxxxxxxxxxxx1xx0010x011
-                                             dcps2.  */
-                                          return 710;
+                                             xxxx0xxxxxxxxxxxxxxxx1x10110101x
+                                             drps.  */
+                                          return 633;
                                         }
                                     }
                                 }
-                              else
+                            }
+                          else
+                            {
+                              if (((word >> 10) & 0x1) == 0)
                                 {
-                                  if (((word >> 1) & 0x1) == 0)
+                                  if (((word >> 21) & 0x1) == 0)
                                     {
-                                      if (((word >> 21) & 0x1) == 0)
+                                      if (((word >> 22) & 0x1) == 0)
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             10xxxxxxxxxxxxxxxxxxx0xx0010x011
-                                             svc.  */
-                                          return 704;
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxx1xxxxx0xxxxxxxxxx0000x10101x
+                                                 braaz.  */
+                                              return 638;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxx1xxxxx0xxxxxxxxxx0010x10101x
+                                                 eretaa.  */
+                                              return 644;
+                                            }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             10xxxxxxxxxxxxxxxxxxx1xx0010x011
-                                             dcps1.  */
-                                          return 709;
+                                             xxxx1xxxxx0xxxxxxxxxx01x0x10101x
+                                             retaa.  */
+                                          return 642;
                                         }
                                     }
                                   else
                                     {
-                                      if (((word >> 21) & 0x1) == 0)
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         xxxx1xxxxx0xxxxxxxxxx1xx0x10101x
+                                         blraaz.  */
+                                      return 640;
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 21) & 0x1) == 0)
+                                    {
+                                      if (((word >> 22) & 0x1) == 0)
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             11xxxxxxxxxxxxxxxxxxx0xx0010x011
-                                             smc.  */
-                                          return 706;
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxx1xxxxx1xxxxxxxxxx0000x10101x
+                                                 brabz.  */
+                                              return 639;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxx1xxxxx1xxxxxxxxxx0010x10101x
+                                                 eretab.  */
+                                              return 645;
+                                            }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             11xxxxxxxxxxxxxxxxxxx1xx0010x011
-                                             dcps3.  */
-                                          return 711;
+                                             xxxx1xxxxx1xxxxxxxxxx01x0x10101x
+                                             retab.  */
+                                          return 643;
                                         }
                                     }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         xxxx1xxxxx1xxxxxxxxxx1xx0x10101x
+                                         blrabz.  */
+                                      return 641;
+                                    }
                                 }
                             }
                         }
@@ -3254,114 +11380,106 @@ aarch64_opcode_lookup_1 (uint32_t word)
                         {
                           if (((word >> 21) & 0x1) == 0)
                             {
-                              if (((word >> 22) & 0x1) == 0)
+                              if (((word >> 25) & 0x1) == 0)
                                 {
-                                  if (((word >> 23) & 0x1) == 0)
+                                  /* 33222222222211111111110000000000
+                                     10987654321098765432109876543210
+                                     xxxxxxxxxxxxxxxxxxxxx0xx1010101x
+                                     msr.  */
+                                  return 1150;
+                                }
+                              else
+                                {
+                                  if (((word >> 10) & 0x1) == 0)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxx0000110x01x
-                                         br.  */
-                                      return 629;
+                                         xxxxxxxxxx0xxxxxxxxxx0xx1110101x
+                                         braa.  */
+                                      return 634;
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxx0010110x01x
-                                         eret.  */
-                                      return 632;
+                                         xxxxxxxxxx1xxxxxxxxxx0xx1110101x
+                                         brab.  */
+                                      return 635;
                                     }
                                 }
-                              else
-                                {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxx01x0110x01x
-                                     ret.  */
-                                  return 631;
-                                }
                             }
                           else
                             {
-                              if (((word >> 23) & 0x1) == 0)
+                              if (((word >> 25) & 0x1) == 0)
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxx1x00110x01x
-                                     blr.  */
-                                  return 630;
+                                     xxxxxxxxxxxxxxxxxxxxx1xx1010101x
+                                     sysl.  */
+                                  return 1175;
                                 }
                               else
                                 {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxx1x10110x01x
-                                     drps.  */
-                                  return 633;
+                                  if (((word >> 10) & 0x1) == 0)
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         xxxxxxxxxx0xxxxxxxxxx1xx1110101x
+                                         blraa.  */
+                                      return 636;
+                                    }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         xxxxxxxxxx1xxxxxxxxxx1xx1110101x
+                                         blrab.  */
+                                      return 637;
+                                    }
                                 }
                             }
                         }
                     }
-                  else
+                }
+              else
+                {
+                  if (((word >> 24) & 0x1) == 0)
                     {
-                      if (((word >> 21) & 0x1) == 0)
+                      if (((word >> 25) & 0x1) == 0)
                         {
                           /* 33222222222211111111110000000000
                              10987654321098765432109876543210
-                             xxxxxxxxxxxxxxxxxxxxx0xx1x10x01x
-                             msr.  */
-                          return 1117;
+                             xxxxxxxxxxxxxxxxxxxxxxxx001011xx
+                             cbz.  */
+                          return 646;
                         }
                       else
                         {
                           /* 33222222222211111111110000000000
                              10987654321098765432109876543210
-                             xxxxxxxxxxxxxxxxxxxxx1xx1x10x01x
-                             sysl.  */
-                          return 1137;
+                             xxxxxxxxxxxxxxxxxxxxxxxx011011xx
+                             tbz.  */
+                          return 1185;
                         }
                     }
-                }
-            }
-          else
-            {
-              if (((word >> 24) & 0x1) == 0)
-                {
-                  if (((word >> 25) & 0x1) == 0)
-                    {
-                      /* 33222222222211111111110000000000
-                         10987654321098765432109876543210
-                         xxxxxxxxxxxxxxxxxxxxxxxx0010x1xx
-                         cbz.  */
-                      return 634;
-                    }
-                  else
-                    {
-                      /* 33222222222211111111110000000000
-                         10987654321098765432109876543210
-                         xxxxxxxxxxxxxxxxxxxxxxxx0110x1xx
-                         tbz.  */
-                      return 1139;
-                    }
-                }
-              else
-                {
-                  if (((word >> 25) & 0x1) == 0)
-                    {
-                      /* 33222222222211111111110000000000
-                         10987654321098765432109876543210
-                         xxxxxxxxxxxxxxxxxxxxxxxx1010x1xx
-                         cbnz.  */
-                      return 635;
-                    }
                   else
                     {
-                      /* 33222222222211111111110000000000
-                         10987654321098765432109876543210
-                         xxxxxxxxxxxxxxxxxxxxxxxx1110x1xx
-                         tbnz.  */
-                      return 1140;
+                      if (((word >> 25) & 0x1) == 0)
+                        {
+                          /* 33222222222211111111110000000000
+                             10987654321098765432109876543210
+                             xxxxxxxxxxxxxxxxxxxxxxxx101011xx
+                             cbnz.  */
+                          return 647;
+                        }
+                      else
+                        {
+                          /* 33222222222211111111110000000000
+                             10987654321098765432109876543210
+                             xxxxxxxxxxxxxxxxxxxxxxxx111011xx
+                             tbnz.  */
+                          return 1186;
+                        }
                     }
                 }
             }
@@ -3392,7 +11510,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx00001101xx
                                      stnp.  */
-                                  return 903;
+                                  return 936;
                                 }
                             }
                           else
@@ -3444,7 +11562,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx00101101xx
                                      stp.  */
-                                  return 907;
+                                  return 940;
                                 }
                             }
                         }
@@ -3508,7 +11626,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxx01x01101xx
                                  stp.  */
-                              return 912;
+                              return 945;
                             }
                         }
                     }
@@ -3532,7 +11650,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx10001101xx
                                      ldnp.  */
-                                  return 904;
+                                  return 937;
                                 }
                             }
                           else
@@ -3584,7 +11702,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx10101101xx
                                      ldp.  */
-                                  return 908;
+                                  return 941;
                                 }
                             }
                         }
@@ -3648,7 +11766,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxx11x01101xx
                                  ldp.  */
-                              return 913;
+                              return 946;
                             }
                         }
                     }
@@ -3663,7 +11781,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              xxxxxxxxxxxxxxxxxxxxxxxx001110xx
                              ldr.  */
-                          return 916;
+                          return 949;
                         }
                       else
                         {
@@ -3677,7 +11795,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxx00xxxxxxxxxx0x001111xx
                                          stur.  */
-                                      return 864;
+                                      return 895;
                                     }
                                   else
                                     {
@@ -3685,7 +11803,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxx00xxxxxxxxxx1x001111xx
                                          ldur.  */
-                                      return 865;
+                                      return 896;
                                     }
                                 }
                               else
@@ -3696,7 +11814,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxx01xxxxxxxxxx0x001111xx
                                          str.  */
-                                      return 843;
+                                      return 874;
                                     }
                                   else
                                     {
@@ -3704,7 +11822,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxx01xxxxxxxxxx1x001111xx
                                          ldr.  */
-                                      return 844;
+                                      return 875;
                                     }
                                 }
                             }
@@ -3716,7 +11834,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxx1xxxxxxxxxxx0x001111xx
                                      str.  */
-                                  return 820;
+                                  return 851;
                                 }
                               else
                                 {
@@ -3724,7 +11842,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxx1xxxxxxxxxxx1x001111xx
                                      ldr.  */
-                                  return 821;
+                                  return 852;
                                 }
                             }
                         }
@@ -3737,7 +11855,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              xxxxxxxxxxxxxxxxxxxxxx0x10111xxx
                              str.  */
-                          return 831;
+                          return 862;
                         }
                       else
                         {
@@ -3745,7 +11863,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              xxxxxxxxxxxxxxxxxxxxxx1x10111xxx
                              ldr.  */
-                          return 832;
+                          return 863;
                         }
                     }
                 }
@@ -4218,7 +12336,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxxx00xxx0xx0111100x
                                              fcvtzs.  */
-                                          return 718;
+                                          return 749;
                                         }
                                       else
                                         {
@@ -4226,7 +12344,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxxx01xxx0xx0111100x
                                              scvtf.  */
-                                          return 714;
+                                          return 745;
                                         }
                                     }
                                   else
@@ -4237,7 +12355,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxxx10xxx0xx0111100x
                                              fcvtzu.  */
-                                          return 720;
+                                          return 751;
                                         }
                                       else
                                         {
@@ -4245,7 +12363,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxxx11xxx0xx0111100x
                                              ucvtf.  */
-                                          return 716;
+                                          return 747;
                                         }
                                     }
                                 }
@@ -4263,7 +12381,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx0x000xxxxxx0xx0111101x
                                                      sha1c.  */
-                                                  return 657;
+                                                  return 669;
                                                 }
                                               else
                                                 {
@@ -4271,7 +12389,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx0x001xxxxxx0xx0111101x
                                                      sha256h.  */
-                                                  return 661;
+                                                  return 673;
                                                 }
                                             }
                                           else
@@ -4282,7 +12400,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx0x010xxxxxx0xx0111101x
                                                      sha1m.  */
-                                                  return 659;
+                                                  return 671;
                                                 }
                                               else
                                                 {
@@ -4290,7 +12408,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx0x011xxxxxx0xx0111101x
                                                      sha256su1.  */
-                                                  return 663;
+                                                  return 675;
                                                 }
                                             }
                                         }
@@ -4304,7 +12422,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx0x100xxxxxx0xx0111101x
                                                      sha1p.  */
-                                                  return 658;
+                                                  return 670;
                                                 }
                                               else
                                                 {
@@ -4312,7 +12430,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx0x101xxxxxx0xx0111101x
                                                      sha256h2.  */
-                                                  return 662;
+                                                  return 674;
                                                 }
                                             }
                                           else
@@ -4321,7 +12439,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxx0x11xxxxxxx0xx0111101x
                                                  sha1su0.  */
-                                              return 660;
+                                              return 672;
                                             }
                                         }
                                     }
@@ -4526,7 +12644,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000000001xx01111xxx
                                                                          fcvtns.  */
-                                                                      return 722;
+                                                                      return 753;
                                                                     }
                                                                   else
                                                                     {
@@ -4534,7 +12652,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000000011xx01111xxx
                                                                          fcvtms.  */
-                                                                      return 742;
+                                                                      return 773;
                                                                     }
                                                                 }
                                                               else
@@ -4545,7 +12663,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000000101xx01111xxx
                                                                          fcvtps.  */
-                                                                      return 738;
+                                                                      return 769;
                                                                     }
                                                                   else
                                                                     {
@@ -4553,7 +12671,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000000111xx01111xxx
                                                                          fcvtzs.  */
-                                                                      return 746;
+                                                                      return 777;
                                                                     }
                                                                 }
                                                             }
@@ -4563,7 +12681,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000000001xx1xx01111xxx
                                                                  fcvtas.  */
-                                                              return 730;
+                                                              return 761;
                                                             }
                                                         }
                                                       else
@@ -4574,7 +12692,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000000010xx1xx01111xxx
                                                                  scvtf.  */
-                                                              return 726;
+                                                              return 757;
                                                             }
                                                           else
                                                             {
@@ -4584,7 +12702,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx0000000110x1xx01111xxx
                                                                      fmov.  */
-                                                                  return 734;
+                                                                  return 765;
                                                                 }
                                                               else
                                                                 {
@@ -4592,7 +12710,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx0000000111x1xx01111xxx
                                                                      fmov.  */
-                                                                  return 750;
+                                                                  return 781;
                                                                 }
                                                             }
                                                         }
@@ -4611,7 +12729,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000100001xx01111xxx
                                                                          fcvtnu.  */
-                                                                      return 724;
+                                                                      return 755;
                                                                     }
                                                                   else
                                                                     {
@@ -4619,7 +12737,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000100011xx01111xxx
                                                                          fcvtmu.  */
-                                                                      return 744;
+                                                                      return 775;
                                                                     }
                                                                 }
                                                               else
@@ -4630,7 +12748,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000100101xx01111xxx
                                                                          fcvtpu.  */
-                                                                      return 740;
+                                                                      return 771;
                                                                     }
                                                                   else
                                                                     {
@@ -4638,7 +12756,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000100111xx01111xxx
                                                                          fcvtzu.  */
-                                                                      return 748;
+                                                                      return 779;
                                                                     }
                                                                 }
                                                             }
@@ -4648,7 +12766,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000000101xx1xx01111xxx
                                                                  fcvtau.  */
-                                                              return 732;
+                                                              return 763;
                                                             }
                                                         }
                                                       else
@@ -4659,7 +12777,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000000110xx1xx01111xxx
                                                                  ucvtf.  */
-                                                              return 728;
+                                                              return 759;
                                                             }
                                                           else
                                                             {
@@ -4669,7 +12787,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx0000001110x1xx01111xxx
                                                                      fmov.  */
-                                                                  return 736;
+                                                                  return 767;
                                                                 }
                                                               else
                                                                 {
@@ -4677,7 +12795,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx0000001111x1xx01111xxx
                                                                      fmov.  */
-                                                                  return 751;
+                                                                  return 782;
                                                                 }
                                                             }
                                                         }
@@ -4827,7 +12945,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000010000xx1xx01111xxx
                                                                  fmov.  */
-                                                              return 764;
+                                                              return 795;
                                                             }
                                                           else
                                                             {
@@ -4835,7 +12953,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000010001xx1xx01111xxx
                                                                  frintn.  */
-                                                              return 773;
+                                                              return 804;
                                                             }
                                                         }
                                                       else
@@ -4846,7 +12964,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000010100xx1xx01111xxx
                                                                  fneg.  */
-                                                              return 768;
+                                                              return 799;
                                                             }
                                                           else
                                                             {
@@ -4854,7 +12972,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000010101xx1xx01111xxx
                                                                  frintm.  */
-                                                              return 777;
+                                                              return 808;
                                                             }
                                                         }
                                                     }
@@ -4868,7 +12986,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000011000xx1xx01111xxx
                                                                  fabs.  */
-                                                              return 766;
+                                                              return 797;
                                                             }
                                                           else
                                                             {
@@ -4876,7 +12994,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000011001xx1xx01111xxx
                                                                  frintp.  */
-                                                              return 775;
+                                                              return 806;
                                                             }
                                                         }
                                                       else
@@ -4887,7 +13005,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000011100xx1xx01111xxx
                                                                  fsqrt.  */
-                                                              return 770;
+                                                              return 801;
                                                             }
                                                           else
                                                             {
@@ -4895,7 +13013,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000011101xx1xx01111xxx
                                                                  frintz.  */
-                                                              return 779;
+                                                              return 810;
                                                             }
                                                         }
                                                     }
@@ -4908,7 +13026,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx00001xx10xx1xx01111xxx
                                                          fcvt.  */
-                                                      return 772;
+                                                      return 803;
                                                     }
                                                   else
                                                     {
@@ -4920,7 +13038,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000010011xx1xx01111xxx
                                                                  frinta.  */
-                                                              return 781;
+                                                              return 812;
                                                             }
                                                           else
                                                             {
@@ -4928,7 +13046,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000010111xx1xx01111xxx
                                                                  frintx.  */
-                                                              return 783;
+                                                              return 814;
                                                             }
                                                         }
                                                       else
@@ -4937,7 +13055,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxxxxxxxxx000011x11xx1xx01111xxx
                                                              frinti.  */
-                                                          return 785;
+                                                          return 816;
                                                         }
                                                     }
                                                 }
@@ -5001,7 +13119,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx00xxxxx000100xxxxx1xx01111xxx
                                                              fcmp.  */
-                                                          return 756;
+                                                          return 787;
                                                         }
                                                       else
                                                         {
@@ -5009,7 +13127,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx01xxxxx000100xxxxx1xx01111xxx
                                                              fcmpe.  */
-                                                          return 758;
+                                                          return 789;
                                                         }
                                                     }
                                                   else
@@ -5020,7 +13138,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx10xxxxx000100xxxxx1xx01111xxx
                                                              fcmp.  */
-                                                          return 760;
+                                                          return 791;
                                                         }
                                                       else
                                                         {
@@ -5028,7 +13146,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx11xxxxx000100xxxxx1xx01111xxx
                                                              fcmpe.  */
-                                                          return 762;
+                                                          return 793;
                                                         }
                                                     }
                                                 }
@@ -5411,7 +13529,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxx001xxxxxxxx1xx01111x0x
                                              fmov.  */
-                                          return 813;
+                                          return 844;
                                         }
                                       else
                                         {
@@ -5483,7 +13601,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx010000xxxxx1xx01111x0x
                                                          fmul.  */
-                                                      return 787;
+                                                      return 818;
                                                     }
                                                   else
                                                     {
@@ -5491,7 +13609,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx010000xxxxx1xx01111x1x
                                                          sha1h.  */
-                                                      return 654;
+                                                      return 666;
                                                     }
                                                 }
                                             }
@@ -5592,7 +13710,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxxxxxxxxx010001xxxxx1xx0111100x
                                                              fnmul.  */
-                                                          return 803;
+                                                          return 834;
                                                         }
                                                       else
                                                         {
@@ -5647,7 +13765,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxxxxxxxxx0100100xx1x1xx01110xxx
                                                              aese.  */
-                                                          return 650;
+                                                          return 662;
                                                         }
                                                     }
                                                   else
@@ -5702,7 +13820,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxxxxxxxxx010010xxxxx1xx0111100x
                                                              fmax.  */
-                                                          return 795;
+                                                          return 826;
                                                         }
                                                       else
                                                         {
@@ -6087,7 +14205,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxxxxxxxxx010100xxxxx1xx0111100x
                                                              fadd.  */
-                                                          return 791;
+                                                          return 822;
                                                         }
                                                       else
                                                         {
@@ -6095,7 +14213,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxxxxxxxxx010100xxxxx1xx0111101x
                                                              sha256su0.  */
-                                                          return 656;
+                                                          return 668;
                                                         }
                                                     }
                                                   else
@@ -6381,7 +14499,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxxxxxxxxx0101100xx1x1xx01110xxx
                                                              aesmc.  */
-                                                          return 652;
+                                                          return 664;
                                                         }
                                                     }
                                                   else
@@ -6434,7 +14552,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx010110xxxxx1xx011110xx
                                                          fmaxnm.  */
-                                                      return 799;
+                                                      return 830;
                                                     }
                                                   else
                                                     {
@@ -6514,7 +14632,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx011000xxxxx1xx01111x0x
                                                          fdiv.  */
-                                                      return 789;
+                                                      return 820;
                                                     }
                                                   else
                                                     {
@@ -6522,7 +14640,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx011000xxxxx1xx01111x1x
                                                          sha1su1.  */
-                                                      return 655;
+                                                      return 667;
                                                     }
                                                 }
                                             }
@@ -6698,7 +14816,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx011010xxx1x1xx01110xxx
                                                          aesd.  */
-                                                      return 651;
+                                                      return 663;
                                                     }
                                                 }
                                               else
@@ -6707,7 +14825,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx011010xxxxx1xx01111xxx
                                                      fmin.  */
-                                                  return 797;
+                                                  return 828;
                                                 }
                                             }
                                           else
@@ -7074,7 +15192,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxxxxxxxxx011100xxxxx1xx0111100x
                                                              fsub.  */
-                                                          return 793;
+                                                          return 824;
                                                         }
                                                       else
                                                         {
@@ -7368,7 +15486,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxxxxxxxxx0111100xx1x1xx01110xxx
                                                              aesimc.  */
-                                                          return 653;
+                                                          return 665;
                                                         }
                                                     }
                                                   else
@@ -7401,7 +15519,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxxxxxxxxx011110xxxxx1xx0111100x
                                                              fminnm.  */
-                                                          return 801;
+                                                          return 832;
                                                         }
                                                       else
                                                         {
@@ -8042,7 +16160,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxx0xxxxx10xxxxxxxxx1xx0111100x
                                                  fccmp.  */
-                                              return 752;
+                                              return 783;
                                             }
                                           else
                                             {
@@ -8050,7 +16168,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxx1xxxxx10xxxxxxxxx1xx0111100x
                                                  fccmpe.  */
-                                              return 754;
+                                              return 785;
                                             }
                                         }
                                       else
@@ -8631,7 +16749,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxx11xxxxxxxxx1xx0111100x
                                              fcsel.  */
-                                          return 815;
+                                          return 846;
                                         }
                                       else
                                         {
@@ -9075,7 +17193,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxx0xxxxx0xx1111100x
                                          fmadd.  */
-                                      return 805;
+                                      return 836;
                                     }
                                   else
                                     {
@@ -9083,7 +17201,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxx0xxxxx1xx1111100x
                                          fnmadd.  */
-                                      return 809;
+                                      return 840;
                                     }
                                 }
                               else
@@ -9699,7 +17817,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxx1xxxxx0xx1111100x
                                          fmsub.  */
-                                      return 807;
+                                      return 838;
                                     }
                                   else
                                     {
@@ -9707,7 +17825,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxx1xxxxx1xx1111100x
                                          fnmsub.  */
-                                      return 811;
+                                      return 842;
                                     }
                                 }
                               else
@@ -9939,22 +18057,22 @@ 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 = 1127; break;    /* hint --> clrex.  */
-    case 1127: value = 1128; break;    /* clrex --> dsb.  */
-    case 1128: value = 1129; break;    /* dsb --> dmb.  */
-    case 1129: value = 1130; break;    /* dmb --> isb.  */
-    case 1130: value = 1131; break;    /* isb --> sys.  */
-    case 1131: value = 1136; break;    /* sys --> msr.  */
-    case 1136: return NULL;            /* msr --> NULL.  */
-    case 1137: value = 1138; break;    /* sysl --> mrs.  */
-    case 1138: return NULL;            /* mrs --> NULL.  */
+    case 934: value = 938; break;      /* stnp --> stp.  */
+    case 938: return NULL;             /* stp --> NULL.  */
+    case 932: value = 933; break;      /* stllrb --> stllrh.  */
+    case 933: return NULL;             /* stllrh --> NULL.  */
+    case 935: value = 939; break;      /* ldnp --> ldp.  */
+    case 939: return NULL;             /* ldp --> NULL.  */
+    case 1150: value = 1151; break;    /* msr --> hint.  */
+    case 1151: value = 1165; break;    /* hint --> clrex.  */
+    case 1165: value = 1166; break;    /* clrex --> dsb.  */
+    case 1166: value = 1167; break;    /* dsb --> dmb.  */
+    case 1167: value = 1168; break;    /* dmb --> isb.  */
+    case 1168: value = 1169; break;    /* isb --> sys.  */
+    case 1169: value = 1174; break;    /* sys --> msr.  */
+    case 1174: return NULL;            /* msr --> NULL.  */
+    case 1175: value = 1176; break;    /* sysl --> mrs.  */
+    case 1176: 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.  */
@@ -9987,98 +18105,98 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode)
     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 749: value = 750; break;      /* fcvtzs --> fcvtzs.  */
+    case 750: return NULL;             /* fcvtzs --> NULL.  */
+    case 745: value = 746; break;      /* scvtf --> scvtf.  */
+    case 746: return NULL;             /* scvtf --> NULL.  */
+    case 751: value = 752; break;      /* fcvtzu --> fcvtzu.  */
+    case 752: return NULL;             /* fcvtzu --> NULL.  */
+    case 747: value = 748; break;      /* ucvtf --> ucvtf.  */
+    case 748: return NULL;             /* ucvtf --> NULL.  */
+    case 753: value = 754; break;      /* fcvtns --> fcvtns.  */
+    case 754: return NULL;             /* fcvtns --> NULL.  */
+    case 773: value = 774; break;      /* fcvtms --> fcvtms.  */
+    case 774: return NULL;             /* fcvtms --> NULL.  */
+    case 769: value = 770; break;      /* fcvtps --> fcvtps.  */
+    case 770: return NULL;             /* fcvtps --> NULL.  */
+    case 777: value = 778; break;      /* fcvtzs --> fcvtzs.  */
+    case 778: return NULL;             /* fcvtzs --> NULL.  */
+    case 761: value = 762; break;      /* fcvtas --> fcvtas.  */
+    case 762: return NULL;             /* fcvtas --> NULL.  */
+    case 757: value = 758; break;      /* scvtf --> scvtf.  */
+    case 758: return NULL;             /* scvtf --> NULL.  */
+    case 765: value = 766; break;      /* fmov --> fmov.  */
+    case 766: return NULL;             /* fmov --> NULL.  */
+    case 755: value = 756; break;      /* fcvtnu --> fcvtnu.  */
+    case 756: return NULL;             /* fcvtnu --> NULL.  */
+    case 775: value = 776; break;      /* fcvtmu --> fcvtmu.  */
+    case 776: return NULL;             /* fcvtmu --> NULL.  */
+    case 771: value = 772; break;      /* fcvtpu --> fcvtpu.  */
+    case 772: return NULL;             /* fcvtpu --> NULL.  */
+    case 779: value = 780; break;      /* fcvtzu --> fcvtzu.  */
+    case 780: return NULL;             /* fcvtzu --> NULL.  */
+    case 763: value = 764; break;      /* fcvtau --> fcvtau.  */
+    case 764: return NULL;             /* fcvtau --> NULL.  */
+    case 759: value = 760; break;      /* ucvtf --> ucvtf.  */
+    case 760: return NULL;             /* ucvtf --> NULL.  */
+    case 767: value = 768; break;      /* fmov --> fmov.  */
+    case 768: return NULL;             /* fmov --> NULL.  */
+    case 795: value = 796; break;      /* fmov --> fmov.  */
+    case 796: return NULL;             /* fmov --> NULL.  */
+    case 804: value = 805; break;      /* frintn --> frintn.  */
+    case 805: return NULL;             /* frintn --> NULL.  */
+    case 799: value = 800; break;      /* fneg --> fneg.  */
+    case 800: return NULL;             /* fneg --> NULL.  */
+    case 808: value = 809; break;      /* frintm --> frintm.  */
+    case 809: return NULL;             /* frintm --> NULL.  */
+    case 797: value = 798; break;      /* fabs --> fabs.  */
+    case 798: return NULL;             /* fabs --> NULL.  */
+    case 806: value = 807; break;      /* frintp --> frintp.  */
+    case 807: return NULL;             /* frintp --> NULL.  */
+    case 801: value = 802; break;      /* fsqrt --> fsqrt.  */
+    case 802: return NULL;             /* fsqrt --> NULL.  */
+    case 810: value = 811; break;      /* frintz --> frintz.  */
+    case 811: return NULL;             /* frintz --> NULL.  */
+    case 812: value = 813; break;      /* frinta --> frinta.  */
+    case 813: return NULL;             /* frinta --> NULL.  */
+    case 814: value = 815; break;      /* frintx --> frintx.  */
+    case 815: return NULL;             /* frintx --> NULL.  */
+    case 816: value = 817; break;      /* frinti --> frinti.  */
+    case 817: return NULL;             /* frinti --> NULL.  */
+    case 787: value = 788; break;      /* fcmp --> fcmp.  */
+    case 788: return NULL;             /* fcmp --> NULL.  */
+    case 789: value = 790; break;      /* fcmpe --> fcmpe.  */
+    case 790: return NULL;             /* fcmpe --> 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 844: value = 845; break;      /* fmov --> fmov.  */
+    case 845: return NULL;             /* fmov --> NULL.  */
+    case 818: value = 819; break;      /* fmul --> fmul.  */
+    case 819: return NULL;             /* fmul --> NULL.  */
+    case 834: value = 835; break;      /* fnmul --> fnmul.  */
+    case 835: return NULL;             /* fnmul --> NULL.  */
+    case 826: value = 827; break;      /* fmax --> fmax.  */
+    case 827: return NULL;             /* fmax --> NULL.  */
+    case 822: value = 823; break;      /* fadd --> fadd.  */
+    case 823: return NULL;             /* fadd --> NULL.  */
+    case 830: value = 831; break;      /* fmaxnm --> fmaxnm.  */
+    case 831: return NULL;             /* fmaxnm --> NULL.  */
+    case 820: value = 821; break;      /* fdiv --> fdiv.  */
+    case 821: return NULL;             /* fdiv --> NULL.  */
+    case 828: value = 829; break;      /* fmin --> fmin.  */
+    case 829: return NULL;             /* fmin --> NULL.  */
+    case 824: value = 825; break;      /* fsub --> fsub.  */
+    case 825: return NULL;             /* fsub --> NULL.  */
+    case 832: value = 833; break;      /* fminnm --> fminnm.  */
+    case 833: return NULL;             /* fminnm --> NULL.  */
+    case 783: value = 784; break;      /* fccmp --> fccmp.  */
+    case 784: return NULL;             /* fccmp --> NULL.  */
+    case 785: value = 786; break;      /* fccmpe --> fccmpe.  */
+    case 786: return NULL;             /* fccmpe --> NULL.  */
+    case 846: value = 847; break;      /* fcsel --> fcsel.  */
+    case 847: return NULL;             /* fcsel --> NULL.  */
     case 130: value = 365; break;      /* movi --> sshr.  */
     case 365: value = 367; break;      /* sshr --> srshr.  */
     case 367: return NULL;             /* srshr --> NULL.  */
@@ -10097,10 +18215,10 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode)
     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 836: value = 837; break;      /* fmadd --> fmadd.  */
+    case 837: return NULL;             /* fmadd --> NULL.  */
+    case 840: value = 841; break;      /* fnmadd --> fnmadd.  */
+    case 841: 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.  */
@@ -10129,10 +18247,10 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode)
     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 838: value = 839; break;      /* fmsub --> fmsub.  */
+    case 839: return NULL;             /* fmsub --> NULL.  */
+    case 842: value = 843; break;      /* fnmsub --> fnmsub.  */
+    case 843: return NULL;             /* fnmsub --> NULL.  */
     case 589: value = 590; break;      /* scvtf --> scvtf.  */
     case 590: return NULL;             /* scvtf --> NULL.  */
     case 591: value = 592; break;      /* fcvtzs --> fcvtzs.  */
@@ -10178,79 +18296,108 @@ aarch64_find_alias_opcode (const aarch64_opcode *opcode)
     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 = 1126; break;    /* hint --> psb.  */
-    case 1131: value = 1135; break;    /* sys --> tlbi.  */
+    case 654: value = 656; break;      /* csinc --> cset.  */
+    case 657: value = 659; break;      /* csinv --> csetm.  */
+    case 660: value = 661; break;      /* csneg --> cneg.  */
+    case 679: value = 679; break;      /* rev --> rev.  */
+    case 704: value = 705; break;      /* lslv --> lsl.  */
+    case 706: value = 707; break;      /* lsrv --> lsr.  */
+    case 708: value = 709; break;      /* asrv --> asr.  */
+    case 710: value = 711; break;      /* rorv --> ror.  */
+    case 721: value = 722; break;      /* madd --> mul.  */
+    case 723: value = 724; break;      /* msub --> mneg.  */
+    case 725: value = 726; break;      /* smaddl --> smull.  */
+    case 727: value = 728; break;      /* smsubl --> smnegl.  */
+    case 730: value = 731; break;      /* umaddl --> umull.  */
+    case 732: value = 733; break;      /* umsubl --> umnegl.  */
+    case 743: value = 744; break;      /* extr --> ror.  */
+    case 952: value = 953; break;      /* and --> bic.  */
+    case 954: value = 955; break;      /* orr --> mov.  */
+    case 957: value = 958; break;      /* ands --> tst.  */
+    case 961: value = 963; break;      /* orr --> uxtw.  */
+    case 964: value = 965; break;      /* orn --> mvn.  */
+    case 968: value = 969; break;      /* ands --> tst.  */
+    case 999: value = 1095; break;     /* ldaddb --> staddb.  */
+    case 1000: value = 1096; break;    /* ldaddh --> staddh.  */
+    case 1001: value = 1097; break;    /* ldadd --> stadd.  */
+    case 1003: value = 1098; break;    /* ldaddlb --> staddlb.  */
+    case 1006: value = 1099; break;    /* ldaddlh --> staddlh.  */
+    case 1009: value = 1100; break;    /* ldaddl --> staddl.  */
+    case 1011: value = 1101; break;    /* ldclrb --> stclrb.  */
+    case 1012: value = 1102; break;    /* ldclrh --> stclrh.  */
+    case 1013: value = 1103; break;    /* ldclr --> stclr.  */
+    case 1015: value = 1104; break;    /* ldclrlb --> stclrlb.  */
+    case 1018: value = 1105; break;    /* ldclrlh --> stclrlh.  */
+    case 1021: value = 1106; break;    /* ldclrl --> stclrl.  */
+    case 1023: value = 1107; break;    /* ldeorb --> steorb.  */
+    case 1024: value = 1108; break;    /* ldeorh --> steorh.  */
+    case 1025: value = 1109; break;    /* ldeor --> steor.  */
+    case 1027: value = 1110; break;    /* ldeorlb --> steorlb.  */
+    case 1030: value = 1111; break;    /* ldeorlh --> steorlh.  */
+    case 1033: value = 1112; break;    /* ldeorl --> steorl.  */
+    case 1035: value = 1113; break;    /* ldsetb --> stsetb.  */
+    case 1036: value = 1114; break;    /* ldseth --> stseth.  */
+    case 1037: value = 1115; break;    /* ldset --> stset.  */
+    case 1039: value = 1116; break;    /* ldsetlb --> stsetlb.  */
+    case 1042: value = 1117; break;    /* ldsetlh --> stsetlh.  */
+    case 1045: value = 1118; break;    /* ldsetl --> stsetl.  */
+    case 1047: value = 1119; break;    /* ldsmaxb --> stsmaxb.  */
+    case 1048: value = 1120; break;    /* ldsmaxh --> stsmaxh.  */
+    case 1049: value = 1121; break;    /* ldsmax --> stsmax.  */
+    case 1051: value = 1122; break;    /* ldsmaxlb --> stsmaxlb.  */
+    case 1054: value = 1123; break;    /* ldsmaxlh --> stsmaxlh.  */
+    case 1057: value = 1124; break;    /* ldsmaxl --> stsmaxl.  */
+    case 1059: value = 1125; break;    /* ldsminb --> stsminb.  */
+    case 1060: value = 1126; break;    /* ldsminh --> stsminh.  */
+    case 1061: value = 1127; break;    /* ldsmin --> stsmin.  */
+    case 1063: value = 1128; break;    /* ldsminlb --> stsminlb.  */
+    case 1066: value = 1129; break;    /* ldsminlh --> stsminlh.  */
+    case 1069: value = 1130; break;    /* ldsminl --> stsminl.  */
+    case 1071: value = 1131; break;    /* ldumaxb --> stumaxb.  */
+    case 1072: value = 1132; break;    /* ldumaxh --> stumaxh.  */
+    case 1073: value = 1133; break;    /* ldumax --> stumax.  */
+    case 1075: value = 1134; break;    /* ldumaxlb --> stumaxlb.  */
+    case 1078: value = 1135; break;    /* ldumaxlh --> stumaxlh.  */
+    case 1081: value = 1136; break;    /* ldumaxl --> stumaxl.  */
+    case 1083: value = 1137; break;    /* lduminb --> stuminb.  */
+    case 1084: value = 1138; break;    /* lduminh --> stuminh.  */
+    case 1085: value = 1139; break;    /* ldumin --> stumin.  */
+    case 1087: value = 1140; break;    /* lduminlb --> stuminlb.  */
+    case 1090: value = 1141; break;    /* lduminlh --> stuminlh.  */
+    case 1093: value = 1142; break;    /* lduminl --> stuminl.  */
+    case 1143: value = 1144; break;    /* movn --> mov.  */
+    case 1145: value = 1146; break;    /* movz --> mov.  */
+    case 1151: value = 1184; break;    /* hint --> autibsp.  */
+    case 1169: value = 1173; break;    /* sys --> tlbi.  */
+    case 1232: value = 1927; break;    /* and --> bic.  */
+    case 1234: value = 1215; break;    /* and --> mov.  */
+    case 1235: value = 1219; break;    /* ands --> movs.  */
+    case 1270: value = 1928; break;    /* cmpge --> cmple.  */
+    case 1273: value = 1931; break;    /* cmpgt --> cmplt.  */
+    case 1275: value = 1929; break;    /* cmphi --> cmplo.  */
+    case 1278: value = 1930; break;    /* cmphs --> cmpls.  */
+    case 1300: value = 1212; break;    /* cpy --> mov.  */
+    case 1301: value = 1214; break;    /* cpy --> mov.  */
+    case 1302: value = 1938; break;    /* cpy --> fmov.  */
+    case 1314: value = 1207; break;    /* dup --> mov.  */
+    case 1315: value = 1209; break;    /* dup --> mov.  */
+    case 1316: value = 1937; break;    /* dup --> fmov.  */
+    case 1317: value = 1210; break;    /* dupm --> mov.  */
+    case 1319: value = 1932; break;    /* eor --> eon.  */
+    case 1321: value = 1220; break;    /* eor --> not.  */
+    case 1322: value = 1221; break;    /* eors --> nots.  */
+    case 1327: value = 1933; break;    /* facge --> facle.  */
+    case 1328: value = 1934; break;    /* facgt --> faclt.  */
+    case 1337: value = 1935; break;    /* fcmge --> fcmle.  */
+    case 1339: value = 1936; break;    /* fcmgt --> fcmlt.  */
+    case 1345: value = 1204; break;    /* fcpy --> fmov.  */
+    case 1362: value = 1203; break;    /* fdup --> fmov.  */
+    case 1660: value = 1205; break;    /* orr --> mov.  */
+    case 1661: value = 1939; break;    /* orr --> orn.  */
+    case 1663: value = 1208; break;    /* orr --> mov.  */
+    case 1664: value = 1218; break;    /* orrs --> movs.  */
+    case 1720: value = 1213; break;    /* sel --> mov.  */
+    case 1721: value = 1216; break;    /* sel --> mov.  */
     default: return NULL;
     }
 
@@ -10301,92 +18448,137 @@ aarch64_find_next_alias_opcode (const aarch64_opcode *opcode)
     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 1126: value = 1125; break;    /* psb --> esb.  */
-    case 1125: value = 1124; break;    /* esb --> 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 1135: value = 1134; break;    /* tlbi --> ic.  */
-    case 1134: value = 1133; break;    /* ic --> dc.  */
-    case 1133: value = 1132; break;    /* dc --> at.  */
-    case 1132: value = 1131; break;    /* at --> sys.  */
+    case 656: value = 655; break;      /* cset --> cinc.  */
+    case 655: value = 654; break;      /* cinc --> csinc.  */
+    case 659: value = 658; break;      /* csetm --> cinv.  */
+    case 658: value = 657; break;      /* cinv --> csinv.  */
+    case 661: value = 660; break;      /* cneg --> csneg.  */
+    case 679: value = 680; break;      /* rev --> rev64.  */
+    case 705: value = 704; break;      /* lsl --> lslv.  */
+    case 707: value = 706; break;      /* lsr --> lsrv.  */
+    case 709: value = 708; break;      /* asr --> asrv.  */
+    case 711: value = 710; break;      /* ror --> rorv.  */
+    case 722: value = 721; break;      /* mul --> madd.  */
+    case 724: value = 723; break;      /* mneg --> msub.  */
+    case 726: value = 725; break;      /* smull --> smaddl.  */
+    case 728: value = 727; break;      /* smnegl --> smsubl.  */
+    case 731: value = 730; break;      /* umull --> umaddl.  */
+    case 733: value = 732; break;      /* umnegl --> umsubl.  */
+    case 744: value = 743; break;      /* ror --> extr.  */
+    case 953: value = 952; break;      /* bic --> and.  */
+    case 955: value = 954; break;      /* mov --> orr.  */
+    case 958: value = 957; break;      /* tst --> ands.  */
+    case 963: value = 962; break;      /* uxtw --> mov.  */
+    case 962: value = 961; break;      /* mov --> orr.  */
+    case 965: value = 964; break;      /* mvn --> orn.  */
+    case 969: value = 968; break;      /* tst --> ands.  */
+    case 1095: value = 999; break;     /* staddb --> ldaddb.  */
+    case 1096: value = 1000; break;    /* staddh --> ldaddh.  */
+    case 1097: value = 1001; break;    /* stadd --> ldadd.  */
+    case 1098: value = 1003; break;    /* staddlb --> ldaddlb.  */
+    case 1099: value = 1006; break;    /* staddlh --> ldaddlh.  */
+    case 1100: value = 1009; break;    /* staddl --> ldaddl.  */
+    case 1101: value = 1011; break;    /* stclrb --> ldclrb.  */
+    case 1102: value = 1012; break;    /* stclrh --> ldclrh.  */
+    case 1103: value = 1013; break;    /* stclr --> ldclr.  */
+    case 1104: value = 1015; break;    /* stclrlb --> ldclrlb.  */
+    case 1105: value = 1018; break;    /* stclrlh --> ldclrlh.  */
+    case 1106: value = 1021; break;    /* stclrl --> ldclrl.  */
+    case 1107: value = 1023; break;    /* steorb --> ldeorb.  */
+    case 1108: value = 1024; break;    /* steorh --> ldeorh.  */
+    case 1109: value = 1025; break;    /* steor --> ldeor.  */
+    case 1110: value = 1027; break;    /* steorlb --> ldeorlb.  */
+    case 1111: value = 1030; break;    /* steorlh --> ldeorlh.  */
+    case 1112: value = 1033; break;    /* steorl --> ldeorl.  */
+    case 1113: value = 1035; break;    /* stsetb --> ldsetb.  */
+    case 1114: value = 1036; break;    /* stseth --> ldseth.  */
+    case 1115: value = 1037; break;    /* stset --> ldset.  */
+    case 1116: value = 1039; break;    /* stsetlb --> ldsetlb.  */
+    case 1117: value = 1042; break;    /* stsetlh --> ldsetlh.  */
+    case 1118: value = 1045; break;    /* stsetl --> ldsetl.  */
+    case 1119: value = 1047; break;    /* stsmaxb --> ldsmaxb.  */
+    case 1120: value = 1048; break;    /* stsmaxh --> ldsmaxh.  */
+    case 1121: value = 1049; break;    /* stsmax --> ldsmax.  */
+    case 1122: value = 1051; break;    /* stsmaxlb --> ldsmaxlb.  */
+    case 1123: value = 1054; break;    /* stsmaxlh --> ldsmaxlh.  */
+    case 1124: value = 1057; break;    /* stsmaxl --> ldsmaxl.  */
+    case 1125: value = 1059; break;    /* stsminb --> ldsminb.  */
+    case 1126: value = 1060; break;    /* stsminh --> ldsminh.  */
+    case 1127: value = 1061; break;    /* stsmin --> ldsmin.  */
+    case 1128: value = 1063; break;    /* stsminlb --> ldsminlb.  */
+    case 1129: value = 1066; break;    /* stsminlh --> ldsminlh.  */
+    case 1130: value = 1069; break;    /* stsminl --> ldsminl.  */
+    case 1131: value = 1071; break;    /* stumaxb --> ldumaxb.  */
+    case 1132: value = 1072; break;    /* stumaxh --> ldumaxh.  */
+    case 1133: value = 1073; break;    /* stumax --> ldumax.  */
+    case 1134: value = 1075; break;    /* stumaxlb --> ldumaxlb.  */
+    case 1135: value = 1078; break;    /* stumaxlh --> ldumaxlh.  */
+    case 1136: value = 1081; break;    /* stumaxl --> ldumaxl.  */
+    case 1137: value = 1083; break;    /* stuminb --> lduminb.  */
+    case 1138: value = 1084; break;    /* stuminh --> lduminh.  */
+    case 1139: value = 1085; break;    /* stumin --> ldumin.  */
+    case 1140: value = 1087; break;    /* stuminlb --> lduminlb.  */
+    case 1141: value = 1090; break;    /* stuminlh --> lduminlh.  */
+    case 1142: value = 1093; break;    /* stuminl --> lduminl.  */
+    case 1144: value = 1143; break;    /* mov --> movn.  */
+    case 1146: value = 1145; break;    /* mov --> movz.  */
+    case 1184: value = 1183; break;    /* autibsp --> autibz.  */
+    case 1183: value = 1182; break;    /* autibz --> autiasp.  */
+    case 1182: value = 1181; break;    /* autiasp --> autiaz.  */
+    case 1181: value = 1180; break;    /* autiaz --> pacibsp.  */
+    case 1180: value = 1179; break;    /* pacibsp --> pacibz.  */
+    case 1179: value = 1178; break;    /* pacibz --> paciasp.  */
+    case 1178: value = 1177; break;    /* paciasp --> paciaz.  */
+    case 1177: value = 1164; break;    /* paciaz --> psb.  */
+    case 1164: value = 1163; break;    /* psb --> esb.  */
+    case 1163: value = 1162; break;    /* esb --> autib1716.  */
+    case 1162: value = 1161; break;    /* autib1716 --> autia1716.  */
+    case 1161: value = 1160; break;    /* autia1716 --> pacib1716.  */
+    case 1160: value = 1159; break;    /* pacib1716 --> pacia1716.  */
+    case 1159: value = 1158; break;    /* pacia1716 --> xpaclri.  */
+    case 1158: value = 1157; break;    /* xpaclri --> sevl.  */
+    case 1157: value = 1156; break;    /* sevl --> sev.  */
+    case 1156: value = 1155; break;    /* sev --> wfi.  */
+    case 1155: value = 1154; break;    /* wfi --> wfe.  */
+    case 1154: value = 1153; break;    /* wfe --> yield.  */
+    case 1153: value = 1152; break;    /* yield --> nop.  */
+    case 1152: value = 1151; break;    /* nop --> hint.  */
+    case 1173: value = 1172; break;    /* tlbi --> ic.  */
+    case 1172: value = 1171; break;    /* ic --> dc.  */
+    case 1171: value = 1170; break;    /* dc --> at.  */
+    case 1170: value = 1169; break;    /* at --> sys.  */
+    case 1927: value = 1232; break;    /* bic --> and.  */
+    case 1215: value = 1234; break;    /* mov --> and.  */
+    case 1219: value = 1235; break;    /* movs --> ands.  */
+    case 1928: value = 1270; break;    /* cmple --> cmpge.  */
+    case 1931: value = 1273; break;    /* cmplt --> cmpgt.  */
+    case 1929: value = 1275; break;    /* cmplo --> cmphi.  */
+    case 1930: value = 1278; break;    /* cmpls --> cmphs.  */
+    case 1212: value = 1300; break;    /* mov --> cpy.  */
+    case 1214: value = 1301; break;    /* mov --> cpy.  */
+    case 1938: value = 1217; break;    /* fmov --> mov.  */
+    case 1217: value = 1302; break;    /* mov --> cpy.  */
+    case 1207: value = 1314; break;    /* mov --> dup.  */
+    case 1209: value = 1206; break;    /* mov --> mov.  */
+    case 1206: value = 1315; break;    /* mov --> dup.  */
+    case 1937: value = 1211; break;    /* fmov --> mov.  */
+    case 1211: value = 1316; break;    /* mov --> dup.  */
+    case 1210: value = 1317; break;    /* mov --> dupm.  */
+    case 1932: value = 1319; break;    /* eon --> eor.  */
+    case 1220: value = 1321; break;    /* not --> eor.  */
+    case 1221: value = 1322; break;    /* nots --> eors.  */
+    case 1933: value = 1327; break;    /* facle --> facge.  */
+    case 1934: value = 1328; break;    /* faclt --> facgt.  */
+    case 1935: value = 1337; break;    /* fcmle --> fcmge.  */
+    case 1936: value = 1339; break;    /* fcmlt --> fcmgt.  */
+    case 1204: value = 1345; break;    /* fmov --> fcpy.  */
+    case 1203: value = 1362; break;    /* fmov --> fdup.  */
+    case 1205: value = 1660; break;    /* mov --> orr.  */
+    case 1939: value = 1661; break;    /* orn --> orr.  */
+    case 1208: value = 1663; break;    /* mov --> orr.  */
+    case 1218: value = 1664; break;    /* movs --> orrs.  */
+    case 1213: value = 1720; break;    /* mov --> sel.  */
+    case 1216: value = 1721; break;    /* mov --> sel.  */
     default: return NULL;
     }
 
@@ -10411,11 +18603,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:
@@ -10424,34 +18616,54 @@ aarch64_extract_operand (const aarch64_operand *self,
     case 25:
     case 26:
     case 27:
-    case 35:
+    case 28:
     case 36:
+    case 37:
+    case 141:
+    case 142:
+    case 143:
+    case 144:
+    case 145:
+    case 146:
+    case 147:
+    case 148:
+    case 149:
+    case 150:
+    case 163:
+    case 164:
+    case 165:
+    case 166:
+    case 167:
+    case 168:
+    case 169:
+    case 170:
+    case 171:
+    case 172:
+    case 175:
       return aarch64_ext_regno (self, info, code, inst);
     case 8:
       return aarch64_ext_regrt_sysins (self, info, code, inst);
-    case 11:
-      return aarch64_ext_regno_pair (self, info, code, inst);
     case 12:
-      return aarch64_ext_reg_extended (self, info, code, inst);
+      return aarch64_ext_regno_pair (self, info, code, inst);
     case 13:
+      return aarch64_ext_reg_extended (self, info, code, inst);
+    case 14:
       return aarch64_ext_reg_shifted (self, info, code, inst);
-    case 18:
+    case 19:
       return aarch64_ext_ft (self, info, code, inst);
-    case 28:
     case 29:
     case 30:
-      return aarch64_ext_reglane (self, info, code, inst);
     case 31:
-      return aarch64_ext_reglist (self, info, code, inst);
+      return aarch64_ext_reglane (self, info, code, inst);
     case 32:
-      return aarch64_ext_ldst_reglist (self, info, code, inst);
+      return aarch64_ext_reglist (self, info, code, inst);
     case 33:
-      return aarch64_ext_ldst_reglist_r (self, info, code, inst);
+      return aarch64_ext_ldst_reglist (self, info, code, inst);
     case 34:
+      return aarch64_ext_ldst_reglist_r (self, info, code, inst);
+    case 35:
       return aarch64_ext_ldst_elemlist (self, info, code, inst);
-    case 37:
-    case 46:
-    case 47:
+    case 38:
     case 48:
     case 49:
     case 50:
@@ -10463,61 +18675,153 @@ aarch64_extract_operand (const aarch64_operand *self,
     case 56:
     case 57:
     case 58:
-    case 66:
-    case 67:
+    case 59:
+    case 60:
     case 68:
     case 69:
     case 70:
+    case 71:
+    case 72:
+    case 138:
+    case 140:
+    case 155:
+    case 156:
+    case 157:
+    case 158:
+    case 159:
+    case 160:
+    case 161:
+    case 162:
       return aarch64_ext_imm (self, info, code, inst);
-    case 38:
     case 39:
-      return aarch64_ext_advsimd_imm_shift (self, info, code, inst);
     case 40:
+      return aarch64_ext_advsimd_imm_shift (self, info, code, inst);
     case 41:
     case 42:
-      return aarch64_ext_advsimd_imm_modified (self, info, code, inst);
     case 43:
+      return aarch64_ext_advsimd_imm_modified (self, info, code, inst);
+    case 44:
       return aarch64_ext_shll_imm (self, info, code, inst);
-    case 59:
+    case 47:
+    case 131:
+      return aarch64_ext_fpimm (self, info, code, inst);
+    case 61:
+    case 136:
       return aarch64_ext_limm (self, info, code, inst);
-    case 60:
+    case 62:
       return aarch64_ext_aimm (self, info, code, inst);
-    case 61:
+    case 63:
       return aarch64_ext_imm_half (self, info, code, inst);
-    case 62:
-      return aarch64_ext_fbits (self, info, code, inst);
     case 64:
-    case 65:
+      return aarch64_ext_fbits (self, info, code, inst);
+    case 66:
+    case 67:
       return aarch64_ext_cond (self, info, code, inst);
-    case 71:
-    case 77:
-      return aarch64_ext_addr_simple (self, info, code, inst);
-    case 72:
-      return aarch64_ext_addr_regoff (self, info, code, inst);
     case 73:
+    case 80:
+      return aarch64_ext_addr_simple (self, info, code, inst);
     case 74:
+      return aarch64_ext_addr_regoff (self, info, code, inst);
     case 75:
-      return aarch64_ext_addr_simm (self, info, code, inst);
     case 76:
-      return aarch64_ext_addr_uimm12 (self, info, code, inst);
+    case 77:
+      return aarch64_ext_addr_simm (self, info, code, inst);
     case 78:
-      return aarch64_ext_simd_addr_post (self, info, code, inst);
+      return aarch64_ext_addr_simm10 (self, info, code, inst);
     case 79:
-      return aarch64_ext_sysreg (self, info, code, inst);
-    case 80:
-      return aarch64_ext_pstatefield (self, info, code, inst);
+      return aarch64_ext_addr_uimm12 (self, info, code, inst);
     case 81:
+      return aarch64_ext_simd_addr_post (self, info, code, inst);
     case 82:
+      return aarch64_ext_sysreg (self, info, code, inst);
     case 83:
+      return aarch64_ext_pstatefield (self, info, code, inst);
     case 84:
-      return aarch64_ext_sysins_op (self, info, code, inst);
     case 85:
     case 86:
-      return aarch64_ext_barrier (self, info, code, inst);
     case 87:
-      return aarch64_ext_prfop (self, info, code, inst);
+      return aarch64_ext_sysins_op (self, info, code, inst);
     case 88:
+    case 89:
+      return aarch64_ext_barrier (self, info, code, inst);
+    case 90:
+      return aarch64_ext_prfop (self, info, code, inst);
+    case 91:
       return aarch64_ext_hint (self, info, code, inst);
+    case 92:
+    case 93:
+    case 94:
+    case 95:
+      return aarch64_ext_sve_addr_ri_s4xvl (self, info, code, inst);
+    case 96:
+      return aarch64_ext_sve_addr_ri_s6xvl (self, info, code, inst);
+    case 97:
+      return aarch64_ext_sve_addr_ri_s9xvl (self, info, code, inst);
+    case 98:
+    case 99:
+    case 100:
+    case 101:
+      return aarch64_ext_sve_addr_ri_u6 (self, info, code, inst);
+    case 102:
+    case 103:
+    case 104:
+    case 105:
+    case 106:
+    case 107:
+    case 108:
+    case 109:
+    case 110:
+    case 111:
+    case 112:
+    case 113:
+      return aarch64_ext_sve_addr_rr_lsl (self, info, code, inst);
+    case 114:
+    case 115:
+    case 116:
+    case 117:
+    case 118:
+    case 119:
+    case 120:
+    case 121:
+      return aarch64_ext_sve_addr_rz_xtw (self, info, code, inst);
+    case 122:
+    case 123:
+    case 124:
+    case 125:
+      return aarch64_ext_sve_addr_zi_u5 (self, info, code, inst);
+    case 126:
+      return aarch64_ext_sve_addr_zz_lsl (self, info, code, inst);
+    case 127:
+      return aarch64_ext_sve_addr_zz_sxtw (self, info, code, inst);
+    case 128:
+      return aarch64_ext_sve_addr_zz_uxtw (self, info, code, inst);
+    case 129:
+      return aarch64_ext_sve_aimm (self, info, code, inst);
+    case 130:
+      return aarch64_ext_sve_asimm (self, info, code, inst);
+    case 132:
+      return aarch64_ext_sve_float_half_one (self, info, code, inst);
+    case 133:
+      return aarch64_ext_sve_float_half_two (self, info, code, inst);
+    case 134:
+      return aarch64_ext_sve_float_zero_one (self, info, code, inst);
+    case 135:
+      return aarch64_ext_inv_limm (self, info, code, inst);
+    case 137:
+      return aarch64_ext_sve_limm_mov (self, info, code, inst);
+    case 139:
+      return aarch64_ext_sve_scale (self, info, code, inst);
+    case 151:
+    case 152:
+      return aarch64_ext_sve_shlimm (self, info, code, inst);
+    case 153:
+    case 154:
+      return aarch64_ext_sve_shrimm (self, info, code, inst);
+    case 173:
+      return aarch64_ext_sve_index (self, info, code, inst);
+    case 174:
+    case 176:
+      return aarch64_ext_sve_reglist (self, info, code, inst);
     default: assert (0); abort ();
     }
 }
This page took 0.225101 seconds and 4 git commands to generate.