[AArch64] Support for ARMv8.1a Limited Ordering Regions extension
[external/binutils.git] / opcodes / aarch64-dis-2.c
index 410bc3d..40ccc08 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is automatically generated by aarch64-gen.  Do not edit!  */
-/* Copyright 2012, 2013  Free Software Foundation, Inc.
+/* Copyright (C) 2012-2015 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of the GNU opcodes library.
@@ -40,7 +40,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                          10987654321098765432109876543210
                          xxxxxxxxxxxxxxxxxxxxxxxx0000xxx0
                          adr.  */
-                      return 773;
+                      return 947;
                     }
                   else
                     {
@@ -48,7 +48,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                          10987654321098765432109876543210
                          xxxxxxxxxxxxxxxxxxxxxxxx0000xxx1
                          adrp.  */
-                      return 774;
+                      return 948;
                     }
                 }
               else
@@ -115,7 +115,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx0xxxxx000x0010000
                                                  stxrb.  */
-                                              return 709;
+                                              return 705;
                                             }
                                           else
                                             {
@@ -123,7 +123,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx0xxxxx000x0010010
                                                  stxrh.  */
-                                              return 715;
+                                              return 711;
                                             }
                                         }
                                       else
@@ -132,16 +132,27 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx0xxxxx000x00100x1
                                              stxr.  */
-                                          return 721;
+                                          return 717;
                                         }
                                     }
                                   else
                                     {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxx0xxxxx100x00100xx
-                                         stxp.  */
-                                      return 723;
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx0xxxxx100x00100x0
+                                             casp.  */
+                                          return 782;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx0xxxxx100x00100x1
+                                             stxp.  */
+                                          return 719;
+                                        }
                                     }
                                 }
                               else
@@ -156,7 +167,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx1xxxxx000x0010000
                                                  stlxrb.  */
-                                              return 710;
+                                              return 706;
                                             }
                                           else
                                             {
@@ -164,7 +175,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx1xxxxx000x0010010
                                                  stlxrh.  */
-                                              return 716;
+                                              return 712;
                                             }
                                         }
                                       else
@@ -173,16 +184,27 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx1xxxxx000x00100x1
                                              stlxr.  */
-                                          return 722;
+                                          return 718;
                                         }
                                     }
                                   else
                                     {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxx1xxxxx100x00100xx
-                                         stlxp.  */
-                                      return 724;
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx1xxxxx100x00100x0
+                                             caspl.  */
+                                          return 784;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx1xxxxx100x00100x1
+                                             stlxp.  */
+                                          return 720;
+                                        }
                                     }
                                 }
                             }
@@ -192,39 +214,127 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxx00x00101xx
                                  stnp.  */
-                              return 731;
+                              return 733;
                             }
                         }
                       else
                         {
                           if (((word >> 29) & 0x1) == 0)
                             {
-                              if (((word >> 31) & 0x1) == 0)
+                              if (((word >> 15) & 0x1) == 0)
                                 {
-                                  if (((word >> 30) & 0x1) == 0)
+                                  if (((word >> 21) & 0x1) == 0)
                                     {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxxx01x0010000
-                                         stlrb.  */
-                                      return 713;
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx0xxxxx001x00100x0
+                                             stllrb.  */
+                                          return 731;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx0xxxxx001x00100x1
+                                             stllr.  */
+                                          return 730;
+                                        }
                                     }
                                   else
                                     {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxxx01x0010010
-                                         stlrh.  */
-                                      return 719;
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxxx0xxxxx101x0010000
+                                                 casb.  */
+                                              return 770;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxxx0xxxxx101x0010010
+                                                 cash.  */
+                                              return 771;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx0xxxxx101x00100x1
+                                             cas.  */
+                                          return 772;
+                                        }
                                     }
                                 }
                               else
                                 {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxx01x00100x1
-                                     stlr.  */
-                                  return 729;
+                                  if (((word >> 21) & 0x1) == 0)
+                                    {
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxxx1xxxxx001x0010000
+                                                 stlrb.  */
+                                              return 709;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxxx1xxxxx001x0010010
+                                                 stlrh.  */
+                                              return 715;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx1xxxxx001x00100x1
+                                             stlr.  */
+                                          return 725;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxxx1xxxxx101x0010000
+                                                 caslb.  */
+                                              return 774;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxxx1xxxxx101x0010010
+                                                 caslh.  */
+                                              return 777;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx1xxxxx101x00100x1
+                                             casl.  */
+                                          return 780;
+                                        }
+                                    }
                                 }
                             }
                           else
@@ -233,7 +343,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxx01x00101xx
                                  stp.  */
-                              return 740;
+                              return 742;
                             }
                         }
                     }
@@ -255,7 +365,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx0xxxxx010x0010000
                                                  ldxrb.  */
-                                              return 711;
+                                              return 707;
                                             }
                                           else
                                             {
@@ -263,7 +373,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx0xxxxx010x0010010
                                                  ldxrh.  */
-                                              return 717;
+                                              return 713;
                                             }
                                         }
                                       else
@@ -272,16 +382,27 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx0xxxxx010x00100x1
                                              ldxr.  */
-                                          return 725;
+                                          return 721;
                                         }
                                     }
                                   else
                                     {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxx0xxxxx110x00100xx
-                                         ldxp.  */
-                                      return 727;
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx0xxxxx110x00100x0
+                                             caspa.  */
+                                          return 783;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx0xxxxx110x00100x1
+                                             ldxp.  */
+                                          return 723;
+                                        }
                                     }
                                 }
                               else
@@ -296,7 +417,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx1xxxxx010x0010000
                                                  ldaxrb.  */
-                                              return 712;
+                                              return 708;
                                             }
                                           else
                                             {
@@ -304,7 +425,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxxxxxxx1xxxxx010x0010010
                                                  ldaxrh.  */
-                                              return 718;
+                                              return 714;
                                             }
                                         }
                                       else
@@ -313,16 +434,27 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxxxxxxx1xxxxx010x00100x1
                                              ldaxr.  */
-                                          return 726;
+                                          return 722;
                                         }
                                     }
                                   else
                                     {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxx1xxxxx110x00100xx
-                                         ldaxp.  */
-                                      return 728;
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx1xxxxx110x00100x0
+                                             caspal.  */
+                                          return 785;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx1xxxxx110x00100x1
+                                             ldaxp.  */
+                                          return 724;
+                                        }
                                     }
                                 }
                             }
@@ -334,7 +466,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx10x001010x
                                      ldnp.  */
-                                  return 732;
+                                  return 734;
                                 }
                               else
                                 {
@@ -342,7 +474,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx10x001011x
                                      ldpsw.  */
-                                  return 739;
+                                  return 741;
                                 }
                             }
                         }
@@ -350,32 +482,131 @@ aarch64_opcode_lookup_1 (uint32_t word)
                         {
                           if (((word >> 29) & 0x1) == 0)
                             {
-                              if (((word >> 31) & 0x1) == 0)
+                              if (((word >> 15) & 0x1) == 0)
                                 {
-                                  if (((word >> 30) & 0x1) == 0)
+                                  if (((word >> 21) & 0x1) == 0)
                                     {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxxx11x0010000
-                                         ldarb.  */
-                                      return 714;
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxxx0xxxxx011x0010000
+                                                 ldlarb.  */
+                                              return 728;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxxx0xxxxx011x0010010
+                                                 ldlarh.  */
+                                              return 729;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx0xxxxx011x00100x1
+                                             ldlar.  */
+                                          return 727;
+                                        }
                                     }
                                   else
                                     {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxxx11x0010010
-                                         ldarh.  */
-                                      return 720;
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxxx0xxxxx111x0010000
+                                                 casab.  */
+                                              return 773;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxxx0xxxxx111x0010010
+                                                 casah.  */
+                                              return 776;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx0xxxxx111x00100x1
+                                             casa.  */
+                                          return 779;
+                                        }
                                     }
                                 }
                               else
                                 {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxx11x00100x1
-                                     ldar.  */
-                                  return 730;
+                                  if (((word >> 21) & 0x1) == 0)
+                                    {
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxxx1xxxxx011x0010000
+                                                 ldarb.  */
+                                              return 710;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxxx1xxxxx011x0010010
+                                                 ldarh.  */
+                                              return 716;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx1xxxxx011x00100x1
+                                             ldar.  */
+                                          return 726;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxxx1xxxxx111x0010000
+                                                 casalb.  */
+                                              return 775;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxxxxxxx1xxxxx111x0010010
+                                                 casalh.  */
+                                              return 778;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxxxxxxxxxxxxxx1xxxxx111x00100x1
+                                             casal.  */
+                                          return 781;
+                                        }
+                                    }
                                 }
                             }
                           else
@@ -386,7 +617,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx11x001010x
                                      ldp.  */
-                                  return 741;
+                                  return 743;
                                 }
                               else
                                 {
@@ -394,7 +625,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx11x001011x
                                      ldpsw.  */
-                                  return 744;
+                                  return 746;
                                 }
                             }
                         }
@@ -412,7 +643,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxxxx000110x0
                                  ldr.  */
-                              return 745;
+                              return 747;
                             }
                           else
                             {
@@ -422,7 +653,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxxxx00011001
                                      ldrsw.  */
-                                  return 747;
+                                  return 749;
                                 }
                               else
                                 {
@@ -430,7 +661,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxxxx00011011
                                      prfm.  */
-                                  return 748;
+                                  return 750;
                                 }
                             }
                         }
@@ -440,108 +671,1296 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             {
                               if (((word >> 11) & 0x1) == 0)
                                 {
-                                  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)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx00xxxxxxxxxx0000011100
-                                                     sturb.  */
-                                                  return 685;
-                                                }
-                                              else
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 30) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx00xxxxxxxxx00000011100
+                                                         sturb.  */
+                                                      return 693;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx00xxxxxxxxx00000011110
+                                                         sturh.  */
+                                                      return 698;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx00xxxxxxxxx000000111x1
+                                                     stur.  */
+                                                  return 701;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 30) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx00xxxxxxxxx01000011100
+                                                         ldurb.  */
+                                                      return 694;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx00xxxxxxxxx01000011110
+                                                         ldurh.  */
+                                                      return 699;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx00xxxxxxxxx010000111x1
+                                                     ldur.  */
+                                                  return 702;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx00xxxxxxxxxx0000011110
-                                                     sturh.  */
+                                                     xxxxxxxxxx00xxxxxxxxx0x100011100
+                                                     ldursb.  */
                                                   return 695;
                                                 }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx00xxxxxxxxx0x100011101
+                                                     ldursw.  */
+                                                  return 703;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx00xxxxxxxxx0x100011110
+                                                     ldursh.  */
+                                                  return 700;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx00xxxxxxxxx0x100011111
+                                                     prfum.  */
+                                                  return 704;
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 12) & 0x1) == 0)
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 15) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 31) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000000xxxxx10000011100
+                                                                         ldaddb.  */
+                                                                      return 798;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000000xxxxx10000011110
+                                                                         ldaddh.  */
+                                                                      return 799;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx000000xxxxx100000111x1
+                                                                     ldadd.  */
+                                                                  return 800;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 31) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000000xxxxx10100011100
+                                                                         ldaddab.  */
+                                                                      return 801;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000000xxxxx10100011110
+                                                                         ldaddah.  */
+                                                                      return 804;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx000000xxxxx101000111x1
+                                                                     ldadda.  */
+                                                                  return 807;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 31) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000000xxxxx11000011100
+                                                                         ldaddlb.  */
+                                                                      return 802;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000000xxxxx11000011110
+                                                                         ldaddlh.  */
+                                                                      return 805;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx000000xxxxx110000111x1
+                                                                     ldaddl.  */
+                                                                  return 808;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 31) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000000xxxxx11100011100
+                                                                         ldaddalb.  */
+                                                                      return 803;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000000xxxxx11100011110
+                                                                         ldaddalh.  */
+                                                                      return 806;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx000000xxxxx111000111x1
+                                                                     ldaddal.  */
+                                                                  return 809;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 31) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000001xxxxx10000011100
+                                                                         swpb.  */
+                                                                      return 786;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000001xxxxx10000011110
+                                                                         swph.  */
+                                                                      return 787;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx000001xxxxx100000111x1
+                                                                     swp.  */
+                                                                  return 788;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 31) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000001xxxxx10100011100
+                                                                         swpab.  */
+                                                                      return 789;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000001xxxxx10100011110
+                                                                         swpah.  */
+                                                                      return 792;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx000001xxxxx101000111x1
+                                                                     swpa.  */
+                                                                  return 795;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 31) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000001xxxxx11000011100
+                                                                         swplb.  */
+                                                                      return 790;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000001xxxxx11000011110
+                                                                         swplh.  */
+                                                                      return 793;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx000001xxxxx110000111x1
+                                                                     swpl.  */
+                                                                  return 796;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 31) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000001xxxxx11100011100
+                                                                         swpalb.  */
+                                                                      return 791;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xxxxxxxxxx000001xxxxx11100011110
+                                                                         swpalh.  */
+                                                                      return 794;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx000001xxxxx111000111x1
+                                                                     swpal.  */
+                                                                  return 797;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00001xxxxxx10000011100
+                                                                     ldsmaxb.  */
+                                                                  return 846;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00001xxxxxx10000011110
+                                                                     ldsmaxh.  */
+                                                                  return 847;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00001xxxxxx100000111x1
+                                                                 ldsmax.  */
+                                                              return 848;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00001xxxxxx10100011100
+                                                                     ldsmaxab.  */
+                                                                  return 849;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00001xxxxxx10100011110
+                                                                     ldsmaxah.  */
+                                                                  return 852;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00001xxxxxx101000111x1
+                                                                 ldsmaxa.  */
+                                                              return 855;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00001xxxxxx11000011100
+                                                                     ldsmaxlb.  */
+                                                                  return 850;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00001xxxxxx11000011110
+                                                                     ldsmaxlh.  */
+                                                                  return 853;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00001xxxxxx110000111x1
+                                                                 ldsmaxl.  */
+                                                              return 856;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00001xxxxxx11100011100
+                                                                     ldsmaxalb.  */
+                                                                  return 851;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00001xxxxxx11100011110
+                                                                     ldsmaxalh.  */
+                                                                  return 854;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00001xxxxxx111000111x1
+                                                                 ldsmaxal.  */
+                                                              return 857;
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00010xxxxxx10000011100
+                                                                     ldeorb.  */
+                                                                  return 822;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00010xxxxxx10000011110
+                                                                     ldeorh.  */
+                                                                  return 823;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00010xxxxxx100000111x1
+                                                                 ldeor.  */
+                                                              return 824;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00010xxxxxx10100011100
+                                                                     ldeorab.  */
+                                                                  return 825;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00010xxxxxx10100011110
+                                                                     ldeorah.  */
+                                                                  return 828;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00010xxxxxx101000111x1
+                                                                 ldeora.  */
+                                                              return 831;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00010xxxxxx11000011100
+                                                                     ldeorlb.  */
+                                                                  return 826;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00010xxxxxx11000011110
+                                                                     ldeorlh.  */
+                                                                  return 829;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00010xxxxxx110000111x1
+                                                                 ldeorl.  */
+                                                              return 832;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00010xxxxxx11100011100
+                                                                     ldeoralb.  */
+                                                                  return 827;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00010xxxxxx11100011110
+                                                                     ldeoralh.  */
+                                                                  return 830;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00010xxxxxx111000111x1
+                                                                 ldeoral.  */
+                                                              return 833;
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00011xxxxxx10000011100
+                                                                     ldumaxb.  */
+                                                                  return 870;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00011xxxxxx10000011110
+                                                                     ldumaxh.  */
+                                                                  return 871;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00011xxxxxx100000111x1
+                                                                 ldumax.  */
+                                                              return 872;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00011xxxxxx10100011100
+                                                                     ldumaxab.  */
+                                                                  return 873;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00011xxxxxx10100011110
+                                                                     ldumaxah.  */
+                                                                  return 876;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00011xxxxxx101000111x1
+                                                                 ldumaxa.  */
+                                                              return 879;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00011xxxxxx11000011100
+                                                                     ldumaxlb.  */
+                                                                  return 874;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00011xxxxxx11000011110
+                                                                     ldumaxlh.  */
+                                                                  return 877;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00011xxxxxx110000111x1
+                                                                 ldumaxl.  */
+                                                              return 880;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00011xxxxxx11100011100
+                                                                     ldumaxalb.  */
+                                                                  return 875;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00011xxxxxx11100011110
+                                                                     ldumaxalh.  */
+                                                                  return 878;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00011xxxxxx111000111x1
+                                                                 ldumaxal.  */
+                                                              return 881;
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00100xxxxxx10000011100
+                                                                     ldclrb.  */
+                                                                  return 810;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00100xxxxxx10000011110
+                                                                     ldclrh.  */
+                                                                  return 811;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00100xxxxxx100000111x1
+                                                                 ldclr.  */
+                                                              return 812;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00100xxxxxx10100011100
+                                                                     ldclrab.  */
+                                                                  return 813;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00100xxxxxx10100011110
+                                                                     ldclrah.  */
+                                                                  return 816;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00100xxxxxx101000111x1
+                                                                 ldclra.  */
+                                                              return 819;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00100xxxxxx11000011100
+                                                                     ldclrlb.  */
+                                                                  return 814;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00100xxxxxx11000011110
+                                                                     ldclrlh.  */
+                                                                  return 817;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00100xxxxxx110000111x1
+                                                                 ldclrl.  */
+                                                              return 820;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00100xxxxxx11100011100
+                                                                     ldclralb.  */
+                                                                  return 815;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00100xxxxxx11100011110
+                                                                     ldclralh.  */
+                                                                  return 818;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00100xxxxxx111000111x1
+                                                                 ldclral.  */
+                                                              return 821;
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00101xxxxxx10000011100
+                                                                     ldsminb.  */
+                                                                  return 858;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00101xxxxxx10000011110
+                                                                     ldsminh.  */
+                                                                  return 859;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00101xxxxxx100000111x1
+                                                                 ldsmin.  */
+                                                              return 860;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00101xxxxxx10100011100
+                                                                     ldsminab.  */
+                                                                  return 861;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00101xxxxxx10100011110
+                                                                     ldsminah.  */
+                                                                  return 864;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00101xxxxxx101000111x1
+                                                                 ldsmina.  */
+                                                              return 867;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00101xxxxxx11000011100
+                                                                     ldsminlb.  */
+                                                                  return 862;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00101xxxxxx11000011110
+                                                                     ldsminlh.  */
+                                                                  return 865;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00101xxxxxx110000111x1
+                                                                 ldsminl.  */
+                                                              return 868;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00101xxxxxx11100011100
+                                                                     ldsminalb.  */
+                                                                  return 863;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00101xxxxxx11100011110
+                                                                     ldsminalh.  */
+                                                                  return 866;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00101xxxxxx111000111x1
+                                                                 ldsminal.  */
+                                                              return 869;
+                                                            }
+                                                        }
+                                                    }
+                                                }
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx00xxxxxxxxxx00000111x1
-                                                 stur.  */
-                                              return 701;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 31) & 0x1) == 0)
-                                            {
-                                              if (((word >> 30) & 0x1) == 0)
+                                              if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx00xxxxxxxxxx1000011100
-                                                     ldurb.  */
-                                                  return 686;
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00110xxxxxx10000011100
+                                                                     ldsetb.  */
+                                                                  return 834;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00110xxxxxx10000011110
+                                                                     ldseth.  */
+                                                                  return 835;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00110xxxxxx100000111x1
+                                                                 ldset.  */
+                                                              return 836;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00110xxxxxx10100011100
+                                                                     ldsetab.  */
+                                                                  return 837;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00110xxxxxx10100011110
+                                                                     ldsetah.  */
+                                                                  return 840;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00110xxxxxx101000111x1
+                                                                 ldseta.  */
+                                                              return 843;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00110xxxxxx11000011100
+                                                                     ldsetlb.  */
+                                                                  return 838;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00110xxxxxx11000011110
+                                                                     ldsetlh.  */
+                                                                  return 841;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00110xxxxxx110000111x1
+                                                                 ldsetl.  */
+                                                              return 844;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00110xxxxxx11100011100
+                                                                     ldsetalb.  */
+                                                                  return 839;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00110xxxxxx11100011110
+                                                                     ldsetalh.  */
+                                                                  return 842;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00110xxxxxx111000111x1
+                                                                 ldsetal.  */
+                                                              return 845;
+                                                            }
+                                                        }
+                                                    }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx00xxxxxxxxxx1000011110
-                                                     ldurh.  */
-                                                  return 696;
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00111xxxxxx10000011100
+                                                                     lduminb.  */
+                                                                  return 882;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00111xxxxxx10000011110
+                                                                     lduminh.  */
+                                                                  return 883;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00111xxxxxx100000111x1
+                                                                 ldumin.  */
+                                                              return 884;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00111xxxxxx10100011100
+                                                                     lduminab.  */
+                                                                  return 885;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00111xxxxxx10100011110
+                                                                     lduminah.  */
+                                                                  return 888;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00111xxxxxx101000111x1
+                                                                 ldumina.  */
+                                                              return 891;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00111xxxxxx11000011100
+                                                                     lduminlb.  */
+                                                                  return 886;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00111xxxxxx11000011110
+                                                                     lduminlh.  */
+                                                                  return 889;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00111xxxxxx110000111x1
+                                                                 lduminl.  */
+                                                              return 892;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00111xxxxxx11100011100
+                                                                     lduminalb.  */
+                                                                  return 887;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxxxxxxxxx00111xxxxxx11100011110
+                                                                     lduminalh.  */
+                                                                  return 890;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxxxxxxxxx00111xxxxxx111000111x1
+                                                                 lduminal.  */
+                                                              return 893;
+                                                            }
+                                                        }
+                                                    }
                                                 }
                                             }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx00xxxxxxxxxx10000111x1
-                                                 ldur.  */
-                                              return 702;
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 30) & 0x1) == 0)
-                                        {
-                                          if (((word >> 31) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx00xxxxxxxxxxx100011100
-                                                 ldursb.  */
-                                              return 689;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx00xxxxxxxxxxx100011101
-                                                 ldursw.  */
-                                              return 705;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 31) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx00xxxxxxxxxxx100011110
-                                                 ldursh.  */
-                                              return 699;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx00xxxxxxxxxxx100011111
-                                                 prfum.  */
-                                              return 707;
-                                            }
                                         }
                                     }
                                 }
@@ -561,7 +1980,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx01xxxxxxxxx00000011100
                                                          sttrb.  */
-                                                      return 676;
+                                                      return 684;
                                                     }
                                                   else
                                                     {
@@ -569,7 +1988,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx01xxxxxxxxx00000011110
                                                          sttrh.  */
-                                                      return 679;
+                                                      return 687;
                                                     }
                                                 }
                                               else
@@ -578,7 +1997,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx000000111x1
                                                      sttr.  */
-                                                  return 682;
+                                                  return 690;
                                                 }
                                             }
                                           else
@@ -591,7 +2010,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx01xxxxxxxxx01000011100
                                                          ldtrb.  */
-                                                      return 677;
+                                                      return 685;
                                                     }
                                                   else
                                                     {
@@ -599,7 +2018,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx01xxxxxxxxx01000011110
                                                          ldtrh.  */
-                                                      return 680;
+                                                      return 688;
                                                     }
                                                 }
                                               else
@@ -608,7 +2027,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx010000111x1
                                                      ldtr.  */
-                                                  return 683;
+                                                  return 691;
                                                 }
                                             }
                                         }
@@ -622,7 +2041,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx0x100011100
                                                      ldtrsb.  */
-                                                  return 678;
+                                                  return 686;
                                                 }
                                               else
                                                 {
@@ -630,7 +2049,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx0x100011101
                                                      ldtrsw.  */
-                                                  return 684;
+                                                  return 692;
                                                 }
                                             }
                                           else
@@ -639,7 +2058,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxx01xxxxxxxxx0x10001111x
                                                  ldtrsh.  */
-                                              return 681;
+                                              return 689;
                                             }
                                         }
                                     }
@@ -657,7 +2076,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx01xxxxxxxxx10000011100
                                                          strb.  */
-                                                      return 664;
+                                                      return 672;
                                                     }
                                                   else
                                                     {
@@ -665,7 +2084,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx01xxxxxxxxx10000011110
                                                          strh.  */
-                                                      return 669;
+                                                      return 677;
                                                     }
                                                 }
                                               else
@@ -674,7 +2093,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx100000111x1
                                                      str.  */
-                                                  return 672;
+                                                  return 680;
                                                 }
                                             }
                                           else
@@ -687,7 +2106,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx01xxxxxxxxx11000011100
                                                          ldrb.  */
-                                                      return 665;
+                                                      return 673;
                                                     }
                                                   else
                                                     {
@@ -695,7 +2114,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx01xxxxxxxxx11000011110
                                                          ldrh.  */
-                                                      return 670;
+                                                      return 678;
                                                     }
                                                 }
                                               else
@@ -704,7 +2123,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx110000111x1
                                                      ldr.  */
-                                                  return 673;
+                                                  return 681;
                                                 }
                                             }
                                         }
@@ -718,7 +2137,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx1x100011100
                                                      ldrsb.  */
-                                                  return 666;
+                                                  return 674;
                                                 }
                                               else
                                                 {
@@ -726,7 +2145,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx1x100011101
                                                      ldrsw.  */
-                                                  return 674;
+                                                  return 682;
                                                 }
                                             }
                                           else
@@ -737,7 +2156,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx1x100011110
                                                      ldrsh.  */
-                                                  return 671;
+                                                  return 679;
                                                 }
                                               else
                                                 {
@@ -745,7 +2164,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx01xxxxxxxxx1x100011111
                                                      prfm.  */
-                                                  return 675;
+                                                  return 683;
                                                 }
                                             }
                                         }
@@ -766,7 +2185,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxx1xxxxxxxxxxx0000011100
                                                  strb.  */
-                                              return 641;
+                                              return 649;
                                             }
                                           else
                                             {
@@ -774,7 +2193,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxx1xxxxxxxxxxx0000011110
                                                  strh.  */
-                                              return 646;
+                                              return 654;
                                             }
                                         }
                                       else
@@ -783,7 +2202,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxx1xxxxxxxxxxx00000111x1
                                              str.  */
-                                          return 649;
+                                          return 657;
                                         }
                                     }
                                   else
@@ -796,7 +2215,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxx1xxxxxxxxxxx1000011100
                                                  ldrb.  */
-                                              return 642;
+                                              return 650;
                                             }
                                           else
                                             {
@@ -804,7 +2223,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxxxxxxxx1xxxxxxxxxxx1000011110
                                                  ldrh.  */
-                                              return 647;
+                                              return 655;
                                             }
                                         }
                                       else
@@ -813,7 +2232,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxx1xxxxxxxxxxx10000111x1
                                              ldr.  */
-                                          return 650;
+                                          return 658;
                                         }
                                     }
                                 }
@@ -827,7 +2246,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxx1xxxxxxxxxxxx100011100
                                              ldrsb.  */
-                                          return 643;
+                                          return 651;
                                         }
                                       else
                                         {
@@ -835,7 +2254,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxx1xxxxxxxxxxxx100011101
                                              ldrsw.  */
-                                          return 651;
+                                          return 659;
                                         }
                                     }
                                   else
@@ -844,7 +2263,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxx1xxxxxxxxxxxx10001111x
                                          ldrsh.  */
-                                      return 648;
+                                      return 656;
                                     }
                                 }
                             }
@@ -864,7 +2283,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxxxxxxxxx0010011x00
                                          strb.  */
-                                      return 652;
+                                      return 660;
                                     }
                                   else
                                     {
@@ -872,7 +2291,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxxxxxxxxx0010011x10
                                          strh.  */
-                                      return 657;
+                                      return 665;
                                     }
                                 }
                               else
@@ -881,7 +2300,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx0010011xx1
                                      str.  */
-                                  return 660;
+                                  return 668;
                                 }
                             }
                           else
@@ -894,7 +2313,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxxxxxxxxx1010011x00
                                          ldrb.  */
-                                      return 653;
+                                      return 661;
                                     }
                                   else
                                     {
@@ -902,7 +2321,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxxxxxxxxx1010011x10
                                          ldrh.  */
-                                      return 658;
+                                      return 666;
                                     }
                                 }
                               else
@@ -911,7 +2330,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx1010011xx1
                                      ldr.  */
-                                  return 661;
+                                  return 669;
                                 }
                             }
                         }
@@ -925,7 +2344,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxxx110011x00
                                      ldrsb.  */
-                                  return 654;
+                                  return 662;
                                 }
                               else
                                 {
@@ -933,7 +2352,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxxx110011x01
                                      ldrsw.  */
-                                  return 662;
+                                  return 670;
                                 }
                             }
                           else
@@ -944,7 +2363,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxxx110011x10
                                      ldrsh.  */
-                                  return 659;
+                                  return 667;
                                 }
                               else
                                 {
@@ -952,7 +2371,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxxx110011x11
                                      prfm.  */
-                                  return 663;
+                                  return 671;
                                 }
                             }
                         }
@@ -976,7 +2395,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxxx00100x00x
                                  and.  */
-                              return 749;
+                              return 751;
                             }
                           else
                             {
@@ -984,7 +2403,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxxx00100x01x
                                  eor.  */
-                              return 753;
+                              return 755;
                             }
                         }
                       else
@@ -995,7 +2414,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxxx00100x10x
                                  orr.  */
-                              return 751;
+                              return 753;
                             }
                           else
                             {
@@ -1003,7 +2422,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxxx00100x11x
                                  ands.  */
-                              return 754;
+                              return 756;
                             }
                         }
                     }
@@ -1017,7 +2436,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxxx10100x00x
                                  movn.  */
-                              return 768;
+                              return 942;
                             }
                           else
                             {
@@ -1025,7 +2444,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxxx10100x01x
                                  movz.  */
-                              return 770;
+                              return 944;
                             }
                         }
                       else
@@ -1034,7 +2453,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              xxxxxxxxxxxxxxxxxxxxxxx10100x1xx
                              movk.  */
-                          return 772;
+                          return 946;
                         }
                     }
                 }
@@ -1052,7 +2471,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxx0xx0101000x
                                      and.  */
-                                  return 756;
+                                  return 758;
                                 }
                               else
                                 {
@@ -1060,7 +2479,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxx0xx0101001x
                                      eor.  */
-                                  return 763;
+                                  return 765;
                                 }
                             }
                           else
@@ -1071,7 +2490,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxx0xx0101010x
                                      orr.  */
-                                  return 758;
+                                  return 760;
                                 }
                               else
                                 {
@@ -1079,7 +2498,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxx0xx0101011x
                                      ands.  */
-                                  return 765;
+                                  return 767;
                                 }
                             }
                         }
@@ -1179,11 +2598,22 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx0000xxxxxxx01101011xxx
-                                                     rbit.  */
-                                                  return 547;
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx00000xxxxxx01101011xxx
+                                                         rbit.  */
+                                                      return 547;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx00001xxxxxx01101011xxx
+                                                         crc32b.  */
+                                                      return 564;
+                                                    }
                                                 }
                                               else
                                                 {
@@ -1196,11 +2626,22 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx001xxxxxxxx01101011xxx
-                                                 clz.  */
-                                              return 551;
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx001x0xxxxxx01101011xxx
+                                                     clz.  */
+                                                  return 551;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx001x1xxxxxx01101011xxx
+                                                     crc32cb.  */
+                                                  return 568;
+                                                }
                                             }
                                         }
                                     }
@@ -1228,43 +2669,65 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     }
                                   else
                                     {
-                                      if (((word >> 13) & 0x1) == 0)
+                                      if (((word >> 12) & 0x1) == 0)
                                         {
-                                          if (((word >> 30) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx01x0xxxxxxx0x101011x0x
-                                                 udiv.  */
-                                              return 554;
-                                            }
-                                          else
+                                          if (((word >> 13) & 0x1) == 0)
                                             {
-                                              if (((word >> 31) & 0x1) == 0)
+                                              if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx01x0xxxxxxx0x101011x10
-                                                     rev.  */
-                                                  return 549;
+                                                  if (((word >> 30) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxxxxxxxxx01000xxxxxx0x101011x0x
+                                                         udiv.  */
+                                                      return 554;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 31) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx01000xxxxxx0x101011x10
+                                                             rev.  */
+                                                          return 549;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxxxxxxxxx01000xxxxxx0x101011x11
+                                                             rev32.  */
+                                                          return 553;
+                                                        }
+                                                    }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx01x0xxxxxxx0x101011x11
-                                                     rev32.  */
-                                                  return 553;
+                                                     xxxxxxxxxx01001xxxxxx0x101011xxx
+                                                     crc32w.  */
+                                                  return 566;
                                                 }
                                             }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxx0101xxxxxxx0x101011xxx
+                                                 asrv.  */
+                                              return 560;
+                                            }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxx01x1xxxxxxx0x101011xxx
-                                             asrv.  */
-                                          return 560;
+                                             xxxxxxxxxx011xxxxxxxx0x101011xxx
+                                             crc32cw.  */
+                                          return 570;
                                         }
                                     }
                                 }
@@ -1298,11 +2761,22 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           if (((word >> 13) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx1000xxxxxxx01x01011xxx
-                                                 rev16.  */
-                                              return 548;
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx10000xxxxxx01x01011xxx
+                                                     rev16.  */
+                                                  return 548;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx10001xxxxxx01x01011xxx
+                                                     crc32h.  */
+                                                  return 565;
+                                                }
                                             }
                                           else
                                             {
@@ -1315,42 +2789,75 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         }
                                       else
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx101xxxxxxxx01x01011xxx
-                                             cls.  */
-                                          return 552;
+                                          if (((word >> 14) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxx101x0xxxxxx01x01011xxx
+                                                 cls.  */
+                                              return 552;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxx101x1xxxxxx01x01011xxx
+                                                 crc32ch.  */
+                                              return 569;
+                                            }
                                         }
                                     }
                                 }
                               else
                                 {
-                                  if (((word >> 13) & 0x1) == 0)
+                                  if (((word >> 12) & 0x1) == 0)
                                     {
-                                      if (((word >> 30) & 0x1) == 0)
+                                      if (((word >> 13) & 0x1) == 0)
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx11x0xxxxxxx0xx01011x0x
-                                             sdiv.  */
-                                          return 555;
+                                          if (((word >> 14) & 0x1) == 0)
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx11000xxxxxx0xx01011x0x
+                                                     sdiv.  */
+                                                  return 555;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxxxxxxxxx11000xxxxxx0xx01011x1x
+                                                     rev.  */
+                                                  return 550;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxxxxxxxxx11001xxxxxx0xx01011xxx
+                                                 crc32x.  */
+                                              return 567;
+                                            }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxx11x0xxxxxxx0xx01011x1x
-                                             rev.  */
-                                          return 550;
+                                             xxxxxxxxxx1101xxxxxxx0xx01011xxx
+                                             rorv.  */
+                                          return 562;
                                         }
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxx11x1xxxxxxx0xx01011xxx
-                                         rorv.  */
-                                      return 562;
+                                         xxxxxxxxxx111xxxxxxxx0xx01011xxx
+                                         crc32cx.  */
+                                      return 571;
                                     }
                                 }
                             }
@@ -1366,7 +2873,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxx1xx0101x00x
                                  bic.  */
-                              return 757;
+                              return 759;
                             }
                           else
                             {
@@ -1374,7 +2881,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxx1xx0101x01x
                                  eon.  */
-                              return 764;
+                              return 766;
                             }
                         }
                       else
@@ -1385,7 +2892,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxx1xx0101x10x
                                  orn.  */
-                              return 761;
+                              return 763;
                             }
                           else
                             {
@@ -1393,7 +2900,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxx1xx0101x11x
                                  bics.  */
-                              return 767;
+                              return 769;
                             }
                         }
                     }
@@ -1439,7 +2946,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                          10987654321098765432109876543210
                          xxxxxxxxxxxxxxxxxxxxxxx11100xxxx
                          extr.  */
-                      return 586;
+                      return 594;
                     }
                 }
               else
@@ -1497,7 +3004,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxx0xxxxx00x11011xxx
                                      madd.  */
-                                  return 564;
+                                  return 572;
                                 }
                               else
                                 {
@@ -1507,7 +3014,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxx0xxxxx01011011xxx
                                          smulh.  */
-                                      return 572;
+                                      return 580;
                                     }
                                   else
                                     {
@@ -1515,7 +3022,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxx0xxxxx01111011xxx
                                          umulh.  */
-                                      return 577;
+                                      return 585;
                                     }
                                 }
                             }
@@ -1525,7 +3032,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxx1xxxxx0xx11011xxx
                                  msub.  */
-                              return 566;
+                              return 574;
                             }
                         }
                     }
@@ -1582,7 +3089,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxx0xxxxx1x011011xxx
                                      smaddl.  */
-                                  return 568;
+                                  return 576;
                                 }
                               else
                                 {
@@ -1590,7 +3097,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxx1xxxxx1x011011xxx
                                      smsubl.  */
-                                  return 570;
+                                  return 578;
                                 }
                             }
                         }
@@ -1602,7 +3109,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxx0xxxxx1x11101xxxx
                                  umaddl.  */
-                              return 573;
+                              return 581;
                             }
                           else
                             {
@@ -1610,7 +3117,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxx1xxxxx1x11101xxxx
                                  umsubl.  */
-                              return 575;
+                              return 583;
                             }
                         }
                     }
@@ -1669,7 +3176,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              00xxxxxxxxxxxxxxxxxxx0xx0010x011
                                              hlt.  */
-                                          return 582;
+                                          return 590;
                                         }
                                       else
                                         {
@@ -1677,7 +3184,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              00xxxxxxxxxxxxxxxxxxx1xx0010x011
                                              brk.  */
-                                          return 581;
+                                          return 589;
                                         }
                                     }
                                   else
@@ -1688,7 +3195,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              01xxxxxxxxxxxxxxxxxxx0xx0010x011
                                              hvc.  */
-                                          return 579;
+                                          return 587;
                                         }
                                       else
                                         {
@@ -1696,7 +3203,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              01xxxxxxxxxxxxxxxxxxx1xx0010x011
                                              dcps2.  */
-                                          return 584;
+                                          return 592;
                                         }
                                     }
                                 }
@@ -1710,7 +3217,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              10xxxxxxxxxxxxxxxxxxx0xx0010x011
                                              svc.  */
-                                          return 578;
+                                          return 586;
                                         }
                                       else
                                         {
@@ -1718,7 +3225,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              10xxxxxxxxxxxxxxxxxxx1xx0010x011
                                              dcps1.  */
-                                          return 583;
+                                          return 591;
                                         }
                                     }
                                   else
@@ -1729,7 +3236,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              11xxxxxxxxxxxxxxxxxxx0xx0010x011
                                              smc.  */
-                                          return 580;
+                                          return 588;
                                         }
                                       else
                                         {
@@ -1737,7 +3244,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              11xxxxxxxxxxxxxxxxxxx1xx0010x011
                                              dcps3.  */
-                                          return 585;
+                                          return 593;
                                         }
                                     }
                                 }
@@ -1798,109 +3305,21 @@ aarch64_opcode_lookup_1 (uint32_t word)
                     }
                   else
                     {
-                      if (((word >> 20) & 0x1) == 0)
+                      if (((word >> 21) & 0x1) == 0)
                         {
-                          if (((word >> 19) & 0x1) == 0)
-                            {
-                              if (((word >> 12) & 0x1) == 0)
-                                {
-                                  if (((word >> 13) & 0x1) == 0)
-                                    {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxxxxxxxxx00xxxxx00xxx1x10x01x
-                                         msr.  */
-                                      return 775;
-                                    }
-                                  else
-                                    {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxxxxxxxxx01xxxxx00xxx1x10x01x
-                                         hint.  */
-                                      return 776;
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 5) & 0x1) == 0)
-                                    {
-                                      if (((word >> 6) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxx00xxxxx1xxxxxx00xxx1x10x01x
-                                             dsb.  */
-                                          return 784;
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 7) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxx010xxxx1xxxxxx00xxx1x10x01x
-                                                 clrex.  */
-                                              return 783;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxx011xxxx1xxxxxx00xxx1x10x01x
-                                                 isb.  */
-                                              return 786;
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxx1xxxxxx1xxxxxx00xxx1x10x01x
-                                         dmb.  */
-                                      return 785;
-                                    }
-                                }
-                            }
-                          else
-                            {
-                              if (((word >> 21) & 0x1) == 0)
-                                {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxx100xx1x10x01x
-                                     sys.  */
-                                  return 787;
-                                }
-                              else
-                                {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxx101xx1x10x01x
-                                     sysl.  */
-                                  return 793;
-                                }
-                            }
+                          /* 33222222222211111111110000000000
+                             10987654321098765432109876543210
+                             xxxxxxxxxxxxxxxxxxxxx0xx1x10x01x
+                             msr.  */
+                          return 949;
                         }
                       else
                         {
-                          if (((word >> 21) & 0x1) == 0)
-                            {
-                              /* 33222222222211111111110000000000
-                                 10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxx10xx1x10x01x
-                                 msr.  */
-                              return 792;
-                            }
-                          else
-                            {
-                              /* 33222222222211111111110000000000
-                                 10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxx11xx1x10x01x
-                                 mrs.  */
-                              return 794;
-                            }
+                          /* 33222222222211111111110000000000
+                             10987654321098765432109876543210
+                             xxxxxxxxxxxxxxxxxxxxx1xx1x10x01x
+                             sysl.  */
+                          return 967;
                         }
                     }
                 }
@@ -1923,7 +3342,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                          10987654321098765432109876543210
                          xxxxxxxxxxxxxxxxxxxxxxxx0110x1xx
                          tbz.  */
-                      return 795;
+                      return 969;
                     }
                 }
               else
@@ -1942,7 +3361,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                          10987654321098765432109876543210
                          xxxxxxxxxxxxxxxxxxxxxxxx1110x1xx
                          tbnz.  */
-                      return 796;
+                      return 970;
                     }
                 }
             }
@@ -1973,7 +3392,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx00001101xx
                                      stnp.  */
-                                  return 733;
+                                  return 735;
                                 }
                             }
                           else
@@ -2025,7 +3444,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx00101101xx
                                      stp.  */
-                                  return 737;
+                                  return 739;
                                 }
                             }
                         }
@@ -2089,7 +3508,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxx01x01101xx
                                  stp.  */
-                              return 742;
+                              return 744;
                             }
                         }
                     }
@@ -2113,7 +3532,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx10001101xx
                                      ldnp.  */
-                                  return 734;
+                                  return 736;
                                 }
                             }
                           else
@@ -2165,7 +3584,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxxxxxxxxxxxxxx10101101xx
                                      ldp.  */
-                                  return 738;
+                                  return 740;
                                 }
                             }
                         }
@@ -2229,7 +3648,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxxxxxxxxxxxxxxxxxxxx11x01101xx
                                  ldp.  */
-                              return 743;
+                              return 745;
                             }
                         }
                     }
@@ -2244,7 +3663,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              xxxxxxxxxxxxxxxxxxxxxxxx001110xx
                              ldr.  */
-                          return 746;
+                          return 748;
                         }
                       else
                         {
@@ -2258,7 +3677,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxx00xxxxxxxxxx0x001111xx
                                          stur.  */
-                                      return 691;
+                                      return 696;
                                     }
                                   else
                                     {
@@ -2266,7 +3685,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxx00xxxxxxxxxx1x001111xx
                                          ldur.  */
-                                      return 692;
+                                      return 697;
                                     }
                                 }
                               else
@@ -2277,7 +3696,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxx01xxxxxxxxxx0x001111xx
                                          str.  */
-                                      return 667;
+                                      return 675;
                                     }
                                   else
                                     {
@@ -2285,7 +3704,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxx01xxxxxxxxxx1x001111xx
                                          ldr.  */
-                                      return 668;
+                                      return 676;
                                     }
                                 }
                             }
@@ -2297,7 +3716,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxx1xxxxxxxxxxx0x001111xx
                                      str.  */
-                                  return 644;
+                                  return 652;
                                 }
                               else
                                 {
@@ -2305,7 +3724,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxxxxxxxxx1xxxxxxxxxxx1x001111xx
                                      ldr.  */
-                                  return 645;
+                                  return 653;
                                 }
                             }
                         }
@@ -2318,7 +3737,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              xxxxxxxxxxxxxxxxxxxxxx0x10111xxx
                              str.  */
-                          return 655;
+                          return 663;
                         }
                       else
                         {
@@ -2326,7 +3745,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              xxxxxxxxxxxxxxxxxxxxxx1x10111xxx
                              ldr.  */
-                          return 656;
+                          return 664;
                         }
                     }
                 }
@@ -2511,7 +3930,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxxx00xxx0xx01111x0x
                                          fcvtzs.  */
-                                      return 590;
+                                      return 598;
                                     }
                                   else
                                     {
@@ -2519,7 +3938,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxxx01xxx0xx01111x0x
                                          scvtf.  */
-                                      return 588;
+                                      return 596;
                                     }
                                 }
                               else
@@ -2530,7 +3949,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxxx10xxx0xx01111x0x
                                          fcvtzu.  */
-                                      return 591;
+                                      return 599;
                                     }
                                   else
                                     {
@@ -2538,7 +3957,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxxx11xxx0xx01111x0x
                                          ucvtf.  */
-                                      return 589;
+                                      return 597;
                                     }
                                 }
                             }
@@ -2700,7 +4119,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000000001xx01111xxx
                                                                          fcvtns.  */
-                                                                      return 592;
+                                                                      return 600;
                                                                     }
                                                                   else
                                                                     {
@@ -2708,7 +4127,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000000011xx01111xxx
                                                                          fcvtms.  */
-                                                                      return 602;
+                                                                      return 610;
                                                                     }
                                                                 }
                                                               else
@@ -2719,7 +4138,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000000101xx01111xxx
                                                                          fcvtps.  */
-                                                                      return 600;
+                                                                      return 608;
                                                                     }
                                                                   else
                                                                     {
@@ -2727,7 +4146,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000000111xx01111xxx
                                                                          fcvtzs.  */
-                                                                      return 604;
+                                                                      return 612;
                                                                     }
                                                                 }
                                                             }
@@ -2737,7 +4156,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000000001xx1xx01111xxx
                                                                  fcvtas.  */
-                                                              return 596;
+                                                              return 604;
                                                             }
                                                         }
                                                       else
@@ -2748,7 +4167,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000000010xx1xx01111xxx
                                                                  scvtf.  */
-                                                              return 594;
+                                                              return 602;
                                                             }
                                                           else
                                                             {
@@ -2758,7 +4177,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx0000000110x1xx01111xxx
                                                                      fmov.  */
-                                                                  return 598;
+                                                                  return 606;
                                                                 }
                                                               else
                                                                 {
@@ -2766,7 +4185,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx0000000111x1xx01111xxx
                                                                      fmov.  */
-                                                                  return 606;
+                                                                  return 614;
                                                                 }
                                                             }
                                                         }
@@ -2785,7 +4204,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000100001xx01111xxx
                                                                          fcvtnu.  */
-                                                                      return 593;
+                                                                      return 601;
                                                                     }
                                                                   else
                                                                     {
@@ -2793,7 +4212,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000100011xx01111xxx
                                                                          fcvtmu.  */
-                                                                      return 603;
+                                                                      return 611;
                                                                     }
                                                                 }
                                                               else
@@ -2804,7 +4223,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000100101xx01111xxx
                                                                          fcvtpu.  */
-                                                                      return 601;
+                                                                      return 609;
                                                                     }
                                                                   else
                                                                     {
@@ -2812,7 +4231,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xxxxxxxxxx000000100111xx01111xxx
                                                                          fcvtzu.  */
-                                                                      return 605;
+                                                                      return 613;
                                                                     }
                                                                 }
                                                             }
@@ -2822,7 +4241,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000000101xx1xx01111xxx
                                                                  fcvtau.  */
-                                                              return 597;
+                                                              return 605;
                                                             }
                                                         }
                                                       else
@@ -2833,7 +4252,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000000110xx1xx01111xxx
                                                                  ucvtf.  */
-                                                              return 595;
+                                                              return 603;
                                                             }
                                                           else
                                                             {
@@ -2843,7 +4262,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx0000001110x1xx01111xxx
                                                                      fmov.  */
-                                                                  return 599;
+                                                                  return 607;
                                                                 }
                                                               else
                                                                 {
@@ -2851,7 +4270,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxxxxxxxxx0000001111x1xx01111xxx
                                                                      fmov.  */
-                                                                  return 607;
+                                                                  return 615;
                                                                 }
                                                             }
                                                         }
@@ -3001,7 +4420,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000010000xx1xx01111xxx
                                                                  fmov.  */
-                                                              return 614;
+                                                              return 622;
                                                             }
                                                           else
                                                             {
@@ -3009,7 +4428,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000010001xx1xx01111xxx
                                                                  frintn.  */
-                                                              return 619;
+                                                              return 627;
                                                             }
                                                         }
                                                       else
@@ -3020,7 +4439,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000010100xx1xx01111xxx
                                                                  fneg.  */
-                                                              return 616;
+                                                              return 624;
                                                             }
                                                           else
                                                             {
@@ -3028,7 +4447,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000010101xx1xx01111xxx
                                                                  frintm.  */
-                                                              return 621;
+                                                              return 629;
                                                             }
                                                         }
                                                     }
@@ -3042,7 +4461,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000011000xx1xx01111xxx
                                                                  fabs.  */
-                                                              return 615;
+                                                              return 623;
                                                             }
                                                           else
                                                             {
@@ -3050,7 +4469,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000011001xx1xx01111xxx
                                                                  frintp.  */
-                                                              return 620;
+                                                              return 628;
                                                             }
                                                         }
                                                       else
@@ -3061,7 +4480,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000011100xx1xx01111xxx
                                                                  fsqrt.  */
-                                                              return 617;
+                                                              return 625;
                                                             }
                                                           else
                                                             {
@@ -3069,7 +4488,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000011101xx1xx01111xxx
                                                                  frintz.  */
-                                                              return 622;
+                                                              return 630;
                                                             }
                                                         }
                                                     }
@@ -3082,7 +4501,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx00001xx10xx1xx01111xxx
                                                          fcvt.  */
-                                                      return 618;
+                                                      return 626;
                                                     }
                                                   else
                                                     {
@@ -3094,7 +4513,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000010011xx1xx01111xxx
                                                                  frinta.  */
-                                                              return 623;
+                                                              return 631;
                                                             }
                                                           else
                                                             {
@@ -3102,7 +4521,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxxxxxxxxx000010111xx1xx01111xxx
                                                                  frintx.  */
-                                                              return 624;
+                                                              return 632;
                                                             }
                                                         }
                                                       else
@@ -3111,7 +4530,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxxxxxxxxx000011x11xx1xx01111xxx
                                                              frinti.  */
-                                                          return 625;
+                                                          return 633;
                                                         }
                                                     }
                                                 }
@@ -3175,7 +4594,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx00xxxxx000100xxxxx1xx01111xxx
                                                              fcmp.  */
-                                                          return 610;
+                                                          return 618;
                                                         }
                                                       else
                                                         {
@@ -3183,7 +4602,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx01xxxxx000100xxxxx1xx01111xxx
                                                              fcmpe.  */
-                                                          return 611;
+                                                          return 619;
                                                         }
                                                     }
                                                   else
@@ -3194,7 +4613,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx10xxxxx000100xxxxx1xx01111xxx
                                                              fcmp.  */
-                                                          return 612;
+                                                          return 620;
                                                         }
                                                       else
                                                         {
@@ -3202,7 +4621,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx11xxxxx000100xxxxx1xx01111xxx
                                                              fcmpe.  */
-                                                          return 613;
+                                                          return 621;
                                                         }
                                                     }
                                                 }
@@ -3585,7 +5004,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxx001xxxxxxxx1xx01111x0x
                                              fmov.  */
-                                          return 639;
+                                          return 647;
                                         }
                                       else
                                         {
@@ -3657,7 +5076,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx010000xxxxx1xx01111x0x
                                                          fmul.  */
-                                                      return 626;
+                                                      return 634;
                                                     }
                                                   else
                                                     {
@@ -3733,7 +5152,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxxxxxxxxx010001xxxxx1xx0111100x
                                                              fnmul.  */
-                                                          return 634;
+                                                          return 642;
                                                         }
                                                       else
                                                         {
@@ -3843,7 +5262,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxxxxxxxxx010010xxxxx1xx0111100x
                                                              fmax.  */
-                                                          return 630;
+                                                          return 638;
                                                         }
                                                       else
                                                         {
@@ -4096,7 +5515,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxxxxxxxxx010100xxxxx1xx0111100x
                                                              fadd.  */
-                                                          return 628;
+                                                          return 636;
                                                         }
                                                       else
                                                         {
@@ -4355,7 +5774,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx010110xxxxx1xx011110xx
                                                          fmaxnm.  */
-                                                      return 632;
+                                                      return 640;
                                                     }
                                                   else
                                                     {
@@ -4413,7 +5832,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxxxxxxxxx011000xxxxx1xx01111x0x
                                                          fdiv.  */
-                                                      return 627;
+                                                      return 635;
                                                     }
                                                   else
                                                     {
@@ -4562,7 +5981,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxxxxxxxxx011010xxxxx1xx01111xxx
                                                      fmin.  */
-                                                  return 631;
+                                                  return 639;
                                                 }
                                             }
                                           else
@@ -4786,7 +6205,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxxxxxxxxx011100xxxxx1xx0111100x
                                                              fsub.  */
-                                                          return 629;
+                                                          return 637;
                                                         }
                                                       else
                                                         {
@@ -5025,7 +6444,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxxxxxxxxx011110xxxxx1xx0111100x
                                                              fminnm.  */
-                                                          return 633;
+                                                          return 641;
                                                         }
                                                       else
                                                         {
@@ -5578,7 +6997,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxx0xxxxx10xxxxxxxxx1xx0111100x
                                                  fccmp.  */
-                                              return 608;
+                                              return 616;
                                             }
                                           else
                                             {
@@ -5586,7 +7005,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxxx1xxxxx10xxxxxxxxx1xx0111100x
                                                  fccmpe.  */
-                                              return 609;
+                                              return 617;
                                             }
                                         }
                                       else
@@ -6167,7 +7586,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxxxxxxxxx11xxxxxxxxx1xx0111100x
                                              fcsel.  */
-                                          return 640;
+                                          return 648;
                                         }
                                       else
                                         {
@@ -6589,7 +8008,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxx0xxxxx0xx1111100x
                                          fmadd.  */
-                                      return 635;
+                                      return 643;
                                     }
                                   else
                                     {
@@ -6597,7 +8016,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxx0xxxxx1xx1111100x
                                          fnmadd.  */
-                                      return 637;
+                                      return 645;
                                     }
                                 }
                               else
@@ -7147,7 +8566,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxx1xxxxx0xx1111100x
                                          fmsub.  */
-                                      return 636;
+                                      return 644;
                                     }
                                   else
                                     {
@@ -7155,7 +8574,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxxxxxxxxxxxxxx1xxxxx1xx1111100x
                                          fnmsub.  */
-                                      return 638;
+                                      return 646;
                                     }
                                 }
                               else
@@ -7343,10 +8762,22 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode)
   int value;
   switch (key)
     {
-    case 731: value = 735; break;      /* stnp --> stp.  */
-    case 735: return NULL;             /* stp --> NULL.  */
-    case 732: value = 736; break;      /* ldnp --> ldp.  */
-    case 736: return NULL;             /* ldp --> NULL.  */
+    case 733: value = 737; break;      /* stnp --> stp.  */
+    case 737: return NULL;             /* stp --> NULL.  */
+    case 731: value = 732; break;      /* stllrb --> stllrh.  */
+    case 732: return NULL;             /* stllrh --> NULL.  */
+    case 734: value = 738; break;      /* ldnp --> ldp.  */
+    case 738: return NULL;             /* ldp --> NULL.  */
+    case 949: value = 950; break;      /* msr --> hint.  */
+    case 950: value = 957; break;      /* hint --> clrex.  */
+    case 957: value = 958; break;      /* clrex --> dsb.  */
+    case 958: value = 959; break;      /* dsb --> dmb.  */
+    case 959: value = 960; break;      /* dmb --> isb.  */
+    case 960: value = 961; break;      /* isb --> sys.  */
+    case 961: value = 966; break;      /* sys --> msr.  */
+    case 966: return NULL;             /* msr --> NULL.  */
+    case 967: value = 968; break;      /* sysl --> mrs.  */
+    case 968: return NULL;             /* mrs --> NULL.  */
     case 355: value = 356; break;      /* st4 --> st1.  */
     case 356: value = 357; break;      /* st1 --> st2.  */
     case 357: value = 358; break;      /* st2 --> st3.  */
@@ -7462,35 +8893,71 @@ aarch64_find_alias_opcode (const aarch64_opcode *opcode)
     case 558: value = 559; break;      /* lsrv --> lsr.  */
     case 560: value = 561; break;      /* asrv --> asr.  */
     case 562: value = 563; break;      /* rorv --> ror.  */
-    case 564: value = 565; break;      /* madd --> mul.  */
-    case 566: value = 567; break;      /* msub --> mneg.  */
-    case 568: value = 569; break;      /* smaddl --> smull.  */
-    case 570: value = 571; break;      /* smsubl --> smnegl.  */
-    case 573: value = 574; break;      /* umaddl --> umull.  */
-    case 575: value = 576; break;      /* umsubl --> umnegl.  */
-    case 586: value = 587; break;      /* extr --> ror.  */
-    case 685: value = 687; break;      /* sturb --> strb.  */
-    case 686: value = 688; break;      /* ldurb --> ldrb.  */
-    case 689: value = 690; break;      /* ldursb --> ldrsb.  */
-    case 691: value = 693; break;      /* stur --> str.  */
-    case 692: value = 694; break;      /* ldur --> ldr.  */
-    case 695: value = 697; break;      /* sturh --> strh.  */
-    case 696: value = 698; break;      /* ldurh --> ldrh.  */
-    case 699: value = 700; break;      /* ldursh --> ldrsh.  */
-    case 701: value = 703; break;      /* stur --> str.  */
-    case 702: value = 704; break;      /* ldur --> ldr.  */
-    case 705: value = 706; break;      /* ldursw --> ldrsw.  */
-    case 707: value = 708; break;      /* prfum --> prfm.  */
-    case 749: value = 750; break;      /* and --> bic.  */
-    case 751: value = 752; break;      /* orr --> mov.  */
-    case 754: value = 755; break;      /* ands --> tst.  */
-    case 758: value = 760; break;      /* orr --> uxtw.  */
-    case 761: value = 762; break;      /* orn --> mvn.  */
-    case 765: value = 766; break;      /* ands --> tst.  */
-    case 768: value = 769; break;      /* movn --> mov.  */
-    case 770: value = 771; break;      /* movz --> mov.  */
-    case 776: value = 782; break;      /* hint --> sevl.  */
-    case 787: value = 791; break;      /* sys --> tlbi.  */
+    case 572: value = 573; break;      /* madd --> mul.  */
+    case 574: value = 575; break;      /* msub --> mneg.  */
+    case 576: value = 577; break;      /* smaddl --> smull.  */
+    case 578: value = 579; break;      /* smsubl --> smnegl.  */
+    case 581: value = 582; break;      /* umaddl --> umull.  */
+    case 583: value = 584; break;      /* umsubl --> umnegl.  */
+    case 594: value = 595; break;      /* extr --> ror.  */
+    case 751: value = 752; break;      /* and --> bic.  */
+    case 753: value = 754; break;      /* orr --> mov.  */
+    case 756: value = 757; break;      /* ands --> tst.  */
+    case 760: value = 762; break;      /* orr --> uxtw.  */
+    case 763: value = 764; break;      /* orn --> mvn.  */
+    case 767: value = 768; break;      /* ands --> tst.  */
+    case 798: value = 894; break;      /* ldaddb --> staddb.  */
+    case 799: value = 895; break;      /* ldaddh --> staddh.  */
+    case 800: value = 896; break;      /* ldadd --> stadd.  */
+    case 802: value = 897; break;      /* ldaddlb --> staddlb.  */
+    case 805: value = 898; break;      /* ldaddlh --> staddlh.  */
+    case 808: value = 899; break;      /* ldaddl --> staddl.  */
+    case 810: value = 900; break;      /* ldclrb --> stclrb.  */
+    case 811: value = 901; break;      /* ldclrh --> stclrh.  */
+    case 812: value = 902; break;      /* ldclr --> stclr.  */
+    case 814: value = 903; break;      /* ldclrlb --> stclrlb.  */
+    case 817: value = 904; break;      /* ldclrlh --> stclrlh.  */
+    case 820: value = 905; break;      /* ldclrl --> stclrl.  */
+    case 822: value = 906; break;      /* ldeorb --> steorb.  */
+    case 823: value = 907; break;      /* ldeorh --> steorh.  */
+    case 824: value = 908; break;      /* ldeor --> steor.  */
+    case 826: value = 909; break;      /* ldeorlb --> steorlb.  */
+    case 829: value = 910; break;      /* ldeorlh --> steorlh.  */
+    case 832: value = 911; break;      /* ldeorl --> steorl.  */
+    case 834: value = 912; break;      /* ldsetb --> stsetb.  */
+    case 835: value = 913; break;      /* ldseth --> stseth.  */
+    case 836: value = 914; break;      /* ldset --> stset.  */
+    case 838: value = 915; break;      /* ldsetlb --> stsetlb.  */
+    case 841: value = 916; break;      /* ldsetlh --> stsetlh.  */
+    case 844: value = 917; break;      /* ldsetl --> stsetl.  */
+    case 846: value = 918; break;      /* ldsmaxb --> stsmaxb.  */
+    case 847: value = 919; break;      /* ldsmaxh --> stsmaxh.  */
+    case 848: value = 920; break;      /* ldsmax --> stsmax.  */
+    case 850: value = 921; break;      /* ldsmaxlb --> stsmaxlb.  */
+    case 853: value = 922; break;      /* ldsmaxlh --> stsmaxlh.  */
+    case 856: value = 923; break;      /* ldsmaxl --> stsmaxl.  */
+    case 858: value = 924; break;      /* ldsminb --> stsminb.  */
+    case 859: value = 925; break;      /* ldsminh --> stsminh.  */
+    case 860: value = 926; break;      /* ldsmin --> stsmin.  */
+    case 862: value = 927; break;      /* ldsminlb --> stsminlb.  */
+    case 865: value = 928; break;      /* ldsminlh --> stsminlh.  */
+    case 868: value = 929; break;      /* ldsminl --> stsminl.  */
+    case 870: value = 930; break;      /* ldumaxb --> stumaxb.  */
+    case 871: value = 931; break;      /* ldumaxh --> stumaxh.  */
+    case 872: value = 932; break;      /* ldumax --> stumax.  */
+    case 874: value = 933; break;      /* ldumaxlb --> stumaxlb.  */
+    case 877: value = 934; break;      /* ldumaxlh --> stumaxlh.  */
+    case 880: value = 935; break;      /* ldumaxl --> stumaxl.  */
+    case 882: value = 936; break;      /* lduminb --> stuminb.  */
+    case 883: value = 937; break;      /* lduminh --> stuminh.  */
+    case 884: value = 938; break;      /* ldumin --> stumin.  */
+    case 886: value = 939; break;      /* lduminlb --> stuminlb.  */
+    case 889: value = 940; break;      /* lduminlh --> stuminlh.  */
+    case 892: value = 941; break;      /* lduminl --> stuminl.  */
+    case 942: value = 943; break;      /* movn --> mov.  */
+    case 944: value = 945; break;      /* movz --> mov.  */
+    case 950: value = 956; break;      /* hint --> sevl.  */
+    case 961: value = 965; break;      /* sys --> tlbi.  */
     default: return NULL;
     }
 
@@ -7519,15 +8986,15 @@ aarch64_find_next_alias_opcode (const aarch64_opcode *opcode)
     case 505: value = 504; break;      /* ubfx --> ubfiz.  */
     case 527: value = 526; break;      /* cset --> cinc.  */
     case 530: value = 529; break;      /* csetm --> cinv.  */
-    case 760: value = 759; break;      /* uxtw --> mov.  */
-    case 782: value = 781; break;      /* sevl --> sev.  */
-    case 781: value = 780; break;      /* sev --> wfi.  */
-    case 780: value = 779; break;      /* wfi --> wfe.  */
-    case 779: value = 778; break;      /* wfe --> yield.  */
-    case 778: value = 777; break;      /* yield --> nop.  */
-    case 791: value = 790; break;      /* tlbi --> ic.  */
-    case 790: value = 789; break;      /* ic --> dc.  */
-    case 789: value = 788; break;      /* dc --> at.  */
+    case 762: value = 761; break;      /* uxtw --> mov.  */
+    case 956: value = 955; break;      /* sevl --> sev.  */
+    case 955: value = 954; break;      /* sev --> wfi.  */
+    case 954: value = 953; break;      /* wfi --> wfe.  */
+    case 953: value = 952; break;      /* wfe --> yield.  */
+    case 952: value = 951; break;      /* yield --> nop.  */
+    case 965: value = 964; break;      /* tlbi --> ic.  */
+    case 964: value = 963; break;      /* ic --> dc.  */
+    case 963: value = 962; break;      /* dc --> at.  */
     default: return NULL;
     }
 
@@ -7552,11 +9019,10 @@ aarch64_extract_operand (const aarch64_operand *self,
     case 7:
     case 9:
     case 10:
-    case 13:
     case 14:
     case 15:
     case 16:
-    case 18:
+    case 17:
     case 19:
     case 20:
     case 21:
@@ -7565,31 +9031,33 @@ aarch64_extract_operand (const aarch64_operand *self,
     case 24:
     case 25:
     case 26:
-    case 34:
+    case 27:
     case 35:
+    case 36:
       return aarch64_ext_regno (self, info, code, inst);
     case 8:
       return aarch64_ext_regrt_sysins (self, info, code, inst);
     case 11:
-      return aarch64_ext_reg_extended (self, info, code, inst);
+      return aarch64_ext_regno_pair (self, info, code, inst);
     case 12:
+      return aarch64_ext_reg_extended (self, info, code, inst);
+    case 13:
       return aarch64_ext_reg_shifted (self, info, code, inst);
-    case 17:
+    case 18:
       return aarch64_ext_ft (self, info, code, inst);
-    case 27:
     case 28:
     case 29:
-      return aarch64_ext_reglane (self, info, code, inst);
     case 30:
-      return aarch64_ext_reglist (self, info, code, inst);
+      return aarch64_ext_reglane (self, info, code, inst);
     case 31:
-      return aarch64_ext_ldst_reglist (self, info, code, inst);
+      return aarch64_ext_reglist (self, info, code, inst);
     case 32:
-      return aarch64_ext_ldst_reglist_r (self, info, code, inst);
+      return aarch64_ext_ldst_reglist (self, info, code, inst);
     case 33:
+      return aarch64_ext_ldst_reglist_r (self, info, code, inst);
+    case 34:
       return aarch64_ext_ldst_elemlist (self, info, code, inst);
-    case 36:
-    case 45:
+    case 37:
     case 46:
     case 47:
     case 48:
@@ -7602,57 +9070,59 @@ aarch64_extract_operand (const aarch64_operand *self,
     case 55:
     case 56:
     case 57:
-    case 64:
-    case 65:
+    case 58:
     case 66:
     case 67:
     case 68:
+    case 69:
+    case 70:
       return aarch64_ext_imm (self, info, code, inst);
-    case 37:
     case 38:
-      return aarch64_ext_advsimd_imm_shift (self, info, code, inst);
     case 39:
+      return aarch64_ext_advsimd_imm_shift (self, info, code, inst);
     case 40:
     case 41:
-      return aarch64_ext_advsimd_imm_modified (self, info, code, inst);
     case 42:
+      return aarch64_ext_advsimd_imm_modified (self, info, code, inst);
+    case 43:
       return aarch64_ext_shll_imm (self, info, code, inst);
-    case 58:
-      return aarch64_ext_limm (self, info, code, inst);
     case 59:
-      return aarch64_ext_aimm (self, info, code, inst);
+      return aarch64_ext_limm (self, info, code, inst);
     case 60:
-      return aarch64_ext_imm_half (self, info, code, inst);
+      return aarch64_ext_aimm (self, info, code, inst);
     case 61:
+      return aarch64_ext_imm_half (self, info, code, inst);
+    case 62:
       return aarch64_ext_fbits (self, info, code, inst);
-    case 63:
+    case 64:
+    case 65:
       return aarch64_ext_cond (self, info, code, inst);
-    case 69:
-    case 75:
-      return aarch64_ext_addr_simple (self, info, code, inst);
-    case 70:
-      return aarch64_ext_addr_regoff (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:
-      return aarch64_ext_addr_simm (self, info, code, inst);
     case 74:
-      return aarch64_ext_addr_uimm12 (self, info, code, inst);
+    case 75:
+      return aarch64_ext_addr_simm (self, info, code, inst);
     case 76:
-      return aarch64_ext_simd_addr_post (self, info, code, inst);
-    case 77:
-      return aarch64_ext_sysreg (self, info, code, inst);
+      return aarch64_ext_addr_uimm12 (self, info, code, inst);
     case 78:
-      return aarch64_ext_pstatefield (self, info, code, inst);
+      return aarch64_ext_simd_addr_post (self, info, code, inst);
     case 79:
+      return aarch64_ext_sysreg (self, info, code, inst);
     case 80:
+      return aarch64_ext_pstatefield (self, info, code, inst);
     case 81:
     case 82:
-      return aarch64_ext_sysins_op (self, info, code, inst);
     case 83:
     case 84:
-      return aarch64_ext_barrier (self, info, code, inst);
+      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);
     default: assert (0); abort ();
     }