Add assembler and disassembler support for the new Armv8.4-a instructions for AArch64.
[deliverable/binutils-gdb.git] / opcodes / aarch64-dis-2.c
index 8e0589227478175e921a5c7611613ac6dc00d2e9..224bb450f0478e6794e07f6c6556543cc0f58688 100644 (file)
@@ -2330,103 +2330,246 @@ aarch64_opcode_lookup_1 (uint32_t word)
                         {
                           if (((word >> 22) & 0x1) == 0)
                             {
-                              if (((word >> 31) & 0x1) == 0)
+                              if (((word >> 29) & 0x1) == 0)
                                 {
                                   if (((word >> 30) & 0x1) == 0)
                                     {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         00x1100100xxxxxxxxxxxxxxxxxxxxxx
-                                         strb.  */
-                                      return 863;
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0001100100xxxxxxxxxxxxxxxxxxxxxx
+                                             stlurb.  */
+                                          return 2027;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             1001100100xxxxxxxxxxxxxxxxxxxxxx
+                                             stlur.  */
+                                          return 2035;
+                                        }
                                     }
                                   else
                                     {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         01x1100100xxxxxxxxxxxxxxxxxxxxxx
-                                         strh.  */
-                                      return 868;
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0101100100xxxxxxxxxxxxxxxxxxxxxx
+                                             stlurh.  */
+                                          return 2031;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             1101100100xxxxxxxxxxxxxxxxxxxxxx
+                                             stlur.  */
+                                          return 2038;
+                                        }
                                     }
                                 }
                               else
                                 {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     1xx1100100xxxxxxxxxxxxxxxxxxxxxx
-                                     str.  */
-                                  return 871;
+                                  if (((word >> 31) & 0x1) == 0)
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0011100100xxxxxxxxxxxxxxxxxxxxxx
+                                             strb.  */
+                                          return 863;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0111100100xxxxxxxxxxxxxxxxxxxxxx
+                                             strh.  */
+                                          return 868;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         1x11100100xxxxxxxxxxxxxxxxxxxxxx
+                                         str.  */
+                                      return 871;
+                                    }
                                 }
                             }
                           else
                             {
-                              if (((word >> 31) & 0x1) == 0)
+                              if (((word >> 29) & 0x1) == 0)
                                 {
                                   if (((word >> 30) & 0x1) == 0)
                                     {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         00x1100101xxxxxxxxxxxxxxxxxxxxxx
-                                         ldrb.  */
-                                      return 864;
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0001100101xxxxxxxxxxxxxxxxxxxxxx
+                                             ldapurb.  */
+                                          return 2028;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             1001100101xxxxxxxxxxxxxxxxxxxxxx
+                                             ldapur.  */
+                                          return 2036;
+                                        }
                                     }
                                   else
                                     {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         01x1100101xxxxxxxxxxxxxxxxxxxxxx
-                                         ldrh.  */
-                                      return 869;
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0101100101xxxxxxxxxxxxxxxxxxxxxx
+                                             ldapurh.  */
+                                          return 2032;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             1101100101xxxxxxxxxxxxxxxxxxxxxx
+                                             ldapur.  */
+                                          return 2039;
+                                        }
                                     }
                                 }
                               else
                                 {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     1xx1100101xxxxxxxxxxxxxxxxxxxxxx
-                                     ldr.  */
-                                  return 872;
+                                  if (((word >> 31) & 0x1) == 0)
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0011100101xxxxxxxxxxxxxxxxxxxxxx
+                                             ldrb.  */
+                                          return 864;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0111100101xxxxxxxxxxxxxxxxxxxxxx
+                                             ldrh.  */
+                                          return 869;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         1x11100101xxxxxxxxxxxxxxxxxxxxxx
+                                         ldr.  */
+                                      return 872;
+                                    }
                                 }
                             }
                         }
                       else
                         {
-                          if (((word >> 30) & 0x1) == 0)
+                          if (((word >> 29) & 0x1) == 0)
                             {
-                              if (((word >> 31) & 0x1) == 0)
+                              if (((word >> 22) & 0x1) == 0)
                                 {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     00x110011xxxxxxxxxxxxxxxxxxxxxxx
-                                     ldrsb.  */
-                                  return 865;
+                                  if (((word >> 30) & 0x1) == 0)
+                                    {
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0001100110xxxxxxxxxxxxxxxxxxxxxx
+                                             ldapursb.  */
+                                          return 2030;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             1001100110xxxxxxxxxxxxxxxxxxxxxx
+                                             ldapursw.  */
+                                          return 2037;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         x101100110xxxxxxxxxxxxxxxxxxxxxx
+                                         ldapursh.  */
+                                      return 2034;
+                                    }
                                 }
                               else
                                 {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     10x110011xxxxxxxxxxxxxxxxxxxxxxx
-                                     ldrsw.  */
-                                  return 873;
+                                  if (((word >> 30) & 0x1) == 0)
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         x001100111xxxxxxxxxxxxxxxxxxxxxx
+                                         ldapursb.  */
+                                      return 2029;
+                                    }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         x101100111xxxxxxxxxxxxxxxxxxxxxx
+                                         ldapursh.  */
+                                      return 2033;
+                                    }
                                 }
                             }
                           else
                             {
-                              if (((word >> 31) & 0x1) == 0)
+                              if (((word >> 30) & 0x1) == 0)
                                 {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     01x110011xxxxxxxxxxxxxxxxxxxxxxx
-                                     ldrsh.  */
-                                  return 870;
+                                  if (((word >> 31) & 0x1) == 0)
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         001110011xxxxxxxxxxxxxxxxxxxxxxx
+                                         ldrsb.  */
+                                      return 865;
+                                    }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         101110011xxxxxxxxxxxxxxxxxxxxxxx
+                                         ldrsw.  */
+                                      return 873;
+                                    }
                                 }
                               else
                                 {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     11x110011xxxxxxxxxxxxxxxxxxxxxxx
-                                     prfm.  */
-                                  return 874;
+                                  if (((word >> 31) & 0x1) == 0)
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         011110011xxxxxxxxxxxxxxxxxxxxxxx
+                                         ldrsh.  */
+                                      return 870;
+                                    }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         111110011xxxxxxxxxxxxxxxxxxxxxxx
+                                         prfm.  */
+                                      return 874;
+                                    }
                                 }
                             }
                         }
@@ -2769,131 +2912,153 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 }
                               else
                                 {
-                                  if (((word >> 23) & 0x1) == 0)
+                                  if (((word >> 22) & 0x1) == 0)
                                     {
-                                      if (((word >> 30) & 0x1) == 0)
+                                      if (((word >> 14) & 0x1) == 0)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             x0x110100x0xxxxxxxxx10xxxxxxxxxx
-                                             ccmn.  */
-                                          return 652;
+                                             xxx11010x00xxxxxx0xx10xxxxxxxxxx
+                                             setf8.  */
+                                          return 2025;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             x1x110100x0xxxxxxxxx10xxxxxxxxxx
-                                             ccmp.  */
-                                          return 653;
+                                             xxx11010x00xxxxxx1xx10xxxxxxxxxx
+                                             setf16.  */
+                                          return 2026;
                                         }
                                     }
                                   else
                                     {
-                                      if (((word >> 12) & 0x1) == 0)
+                                      if (((word >> 23) & 0x1) == 0)
                                         {
-                                          if (((word >> 13) & 0x1) == 0)
+                                          if (((word >> 30) & 0x1) == 0)
                                             {
-                                              if (((word >> 14) & 0x1) == 0)
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x0x11010010xxxxxxxxx10xxxxxxxxxx
+                                                 ccmn.  */
+                                              return 652;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x1x11010010xxxxxxxxx10xxxxxxxxxx
+                                                 ccmp.  */
+                                              return 653;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 12) & 0x1) == 0)
+                                            {
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x0x110101x0xxxxxx00010xxxxxxxxxx
-                                                         udiv.  */
-                                                      return 705;
-                                                    }
-                                                  else
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 16) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 31) & 0x1) == 0)
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0x11010110xxxxxx00010xxxxxxxxxx
+                                                             udiv.  */
+                                                          return 705;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 16) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 01x110101x0xxxx0x00010xxxxxxxxxx
-                                                                 rev.  */
-                                                              return 681;
+                                                              if (((word >> 31) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     01x11010110xxxx0x00010xxxxxxxxxx
+                                                                     rev.  */
+                                                                  return 681;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     11x11010110xxxx0x00010xxxxxxxxxx
+                                                                     rev32.  */
+                                                                  return 686;
+                                                                }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 11x110101x0xxxx0x00010xxxxxxxxxx
-                                                                 rev32.  */
-                                                              return 686;
+                                                                 x1x11010110xxxx1x00010xxxxxxxxxx
+                                                                 pacda.  */
+                                                              return 689;
                                                             }
                                                         }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1x110101x0xxxx1x00010xxxxxxxxxx
-                                                             pacda.  */
-                                                          return 689;
-                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxx11010110xxxxxx10010xxxxxxxxxx
+                                                         crc32w.  */
+                                                      return 718;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxx110101x0xxxxxx10010xxxxxxxxxx
-                                                     crc32w.  */
-                                                  return 718;
+                                                  if (((word >> 30) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x0x11010110xxxxxxx1010xxxxxxxxxx
+                                                         asrv.  */
+                                                      return 711;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x1x11010110xxxxxxx1010xxxxxxxxxx
+                                                         pacdza.  */
+                                                      return 697;
+                                                    }
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 30) & 0x1) == 0)
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x0x110101x0xxxxxxx1010xxxxxxxxxx
-                                                     asrv.  */
-                                                  return 711;
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxx11010110xxxxxx00110xxxxxxxxxx
+                                                         autda.  */
+                                                      return 693;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxx11010110xxxxxx10110xxxxxxxxxx
+                                                         crc32cw.  */
+                                                      return 722;
+                                                    }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x1x110101x0xxxxxxx1010xxxxxxxxxx
-                                                     pacdza.  */
-                                                  return 697;
+                                                     xxx11010110xxxxxxx1110xxxxxxxxxx
+                                                     autdza.  */
+                                                  return 701;
                                                 }
                                             }
                                         }
-                                      else
-                                        {
-                                          if (((word >> 13) & 0x1) == 0)
-                                            {
-                                              if (((word >> 14) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxx110101x0xxxxxx00110xxxxxxxxxx
-                                                     autda.  */
-                                                  return 693;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxx110101x0xxxxxx10110xxxxxxxxxx
-                                                     crc32cw.  */
-                                                  return 722;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxx110101x0xxxxxxx1110xxxxxxxxxx
-                                                 autdza.  */
-                                              return 701;
-                                            }
-                                        }
                                     }
                                 }
                             }
@@ -2903,21 +3068,32 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   if (((word >> 22) & 0x1) == 0)
                                     {
-                                      if (((word >> 30) & 0x1) == 0)
+                                      if (((word >> 23) & 0x1) == 0)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             x0x11010x00xxxxxxxxx01xxxxxxxxxx
-                                             csinc.  */
-                                          return 657;
+                                             xxx11010000xxxxxxxxx01xxxxxxxxxx
+                                             rmif.  */
+                                          return 2024;
                                         }
                                       else
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             x1x11010x00xxxxxxxxx01xxxxxxxxxx
-                                             csneg.  */
-                                          return 663;
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x0x11010100xxxxxxxxx01xxxxxxxxxx
+                                                 csinc.  */
+                                              return 657;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x1x11010100xxxxxxxxx01xxxxxxxxxx
+                                                 csneg.  */
+                                              return 663;
+                                            }
                                         }
                                     }
                                   else
@@ -12338,168 +12514,94 @@ aarch64_opcode_lookup_1 (uint32_t word)
                     {
                       if (((word >> 28) & 0x1) == 0)
                         {
-                          if (((word >> 10) & 0x1) == 0)
+                          if (((word >> 29) & 0x1) == 0)
                             {
-                              if (((word >> 29) & 0x1) == 0)
+                              if (((word >> 31) & 0x1) == 0)
                                 {
-                                  if (((word >> 11) & 0x1) == 0)
-                                    {
-                                      if (((word >> 12) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xx001110xx0xxxxxxxx000xxxxxxxxxx
-                                             tbl.  */
-                                          return 414;
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xx001110xx0xxxxxxxx100xxxxxxxxxx
-                                             tbx.  */
-                                          return 415;
-                                        }
-                                    }
-                                  else
+                                  if (((word >> 10) & 0x1) == 0)
                                     {
-                                      if (((word >> 12) & 0x1) == 0)
+                                      if (((word >> 11) & 0x1) == 0)
                                         {
-                                          if (((word >> 14) & 0x1) == 0)
+                                          if (((word >> 12) & 0x1) == 0)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xx001110xx0xxxxxx0x010xxxxxxxxxx
-                                                 trn1.  */
-                                              return 257;
+                                                 0x001110xx0xxxxxxxx000xxxxxxxxxx
+                                                 tbl.  */
+                                              return 414;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xx001110xx0xxxxxx1x010xxxxxxxxxx
-                                                 trn2.  */
-                                              return 260;
+                                                 0x001110xx0xxxxxxxx100xxxxxxxxxx
+                                                 tbx.  */
+                                              return 415;
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 13) & 0x1) == 0)
-                                            {
-                                              if (((word >> 14) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xx001110xx0xxxxxx00110xxxxxxxxxx
-                                                     uzp1.  */
-                                                  return 256;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xx001110xx0xxxxxx10110xxxxxxxxxx
-                                                     uzp2.  */
-                                                  return 259;
-                                                }
-                                            }
-                                          else
+                                          if (((word >> 12) & 0x1) == 0)
                                             {
                                               if (((word >> 14) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xx001110xx0xxxxxx01110xxxxxxxxxx
-                                                     zip1.  */
-                                                  return 258;
+                                                     0x001110xx0xxxxxx0x010xxxxxxxxxx
+                                                     trn1.  */
+                                                  return 257;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xx001110xx0xxxxxx11110xxxxxxxxxx
-                                                     zip2.  */
-                                                  return 261;
+                                                     0x001110xx0xxxxxx1x010xxxxxxxxxx
+                                                     trn2.  */
+                                                  return 260;
                                                 }
                                             }
-                                        }
-                                    }
-                                }
-                              else
-                                {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     xx101110xx0xxxxxxxxxx0xxxxxxxxxx
-                                     ext.  */
-                                  return 130;
-                                }
-                            }
-                          else
-                            {
-                              if (((word >> 15) & 0x1) == 0)
-                                {
-                                  if (((word >> 22) & 0x1) == 0)
-                                    {
-                                      if (((word >> 29) & 0x1) == 0)
-                                        {
-                                          if (((word >> 11) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xx001110x00xxxxx0xxx01xxxxxxxxxx
-                                                 dup.  */
-                                              return 147;
-                                            }
                                           else
                                             {
-                                              if (((word >> 12) & 0x1) == 0)
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 13) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx001110x00xxxxx0x0011xxxxxxxxxx
-                                                         dup.  */
-                                                      return 148;
+                                                         0x001110xx0xxxxxx00110xxxxxxxxxx
+                                                         uzp1.  */
+                                                      return 256;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx001110x00xxxxx0x1011xxxxxxxxxx
-                                                         smov.  */
-                                                      return 149;
+                                                         0x001110xx0xxxxxx10110xxxxxxxxxx
+                                                         uzp2.  */
+                                                      return 259;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 13) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx001110x00xxxxx0x0111xxxxxxxxxx
-                                                         ins.  */
-                                                      return 152;
+                                                         0x001110xx0xxxxxx01110xxxxxxxxxx
+                                                         zip1.  */
+                                                      return 258;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx001110x00xxxxx0x1111xxxxxxxxxx
-                                                         umov.  */
-                                                      return 150;
+                                                         0x001110xx0xxxxxx11110xxxxxxxxxx
+                                                         zip2.  */
+                                                      return 261;
                                                     }
                                                 }
                                             }
                                         }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xx101110x00xxxxx0xxxx1xxxxxxxxxx
-                                             ins.  */
-                                          return 154;
-                                        }
                                     }
                                   else
                                     {
@@ -12509,13 +12611,21 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 22) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         0x001110x00xxxxxxx0001xxxxxxxxxx
+                                                         dup.  */
+                                                      return 147;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xx001110010xxxxx0x0001xxxxxxxxxx
+                                                             0x001110010xxxxxxx0001xxxxxxxxxx
                                                              fmaxnm.  */
                                                           return 286;
                                                         }
@@ -12523,73 +12633,32 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xx101110010xxxxx0x0001xxxxxxxxxx
-                                                             fmaxnmp.  */
-                                                          return 337;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx001110110xxxxx0x0001xxxxxxxxxx
+                                                             0x001110110xxxxxxx0001xxxxxxxxxx
                                                              fminnm.  */
                                                           return 302;
                                                         }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx101110110xxxxx0x0001xxxxxxxxxx
-                                                             fminnmp.  */
-                                                          return 353;
-                                                        }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx001110010xxxxx0x1001xxxxxxxxxx
-                                                             fcmeq.  */
-                                                          return 294;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx101110010xxxxx0x1001xxxxxxxxxx
-                                                             fcmge.  */
-                                                          return 343;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxx01110110xxxxx0x1001xxxxxxxxxx
-                                                         fcmgt.  */
-                                                      return 357;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     0x001110xx0xxxxxxx1001xxxxxxxxxx
+                                                     fcmeq.  */
+                                                  return 294;
                                                 }
                                             }
                                           else
                                             {
                                               if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 15) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 23) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xx001110010xxxxx0x0101xxxxxxxxxx
+                                                             0x0011100x0xxxxx0x0101xxxxxxxxxx
                                                              fadd.  */
                                                           return 290;
                                                         }
@@ -12597,70 +12666,37 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xx101110010xxxxx0x0101xxxxxxxxxx
-                                                             faddp.  */
-                                                          return 339;
+                                                             0x0011101x0xxxxx0x0101xxxxxxxxxx
+                                                             fsub.  */
+                                                          return 306;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx001110110xxxxx0x0101xxxxxxxxxx
-                                                             fsub.  */
-                                                          return 306;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx101110110xxxxx0x0101xxxxxxxxxx
-                                                             fabd.  */
-                                                          return 355;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         0x001110xx0xxxxx1x0101xxxxxxxxxx
+                                                         sdot.  */
+                                                      return 1987;
                                                     }
                                                 }
                                               else
                                                 {
                                                   if (((word >> 23) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx001110010xxxxx0x1101xxxxxxxxxx
-                                                             fmax.  */
-                                                          return 296;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx101110010xxxxx0x1101xxxxxxxxxx
-                                                             fmaxp.  */
-                                                          return 347;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         0x0011100x0xxxxxxx1101xxxxxxxxxx
+                                                         fmax.  */
+                                                      return 296;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx001110110xxxxx0x1101xxxxxxxxxx
-                                                             fmin.  */
-                                                          return 308;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx101110110xxxxx0x1101xxxxxxxxxx
-                                                             fminp.  */
-                                                          return 361;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         0x0011101x0xxxxxxx1101xxxxxxxxxx
+                                                         fmin.  */
+                                                      return 308;
                                                     }
                                                 }
                                             }
@@ -12671,73 +12707,81 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 22) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxx01110010xxxxx0x0011xxxxxxxxxx
-                                                         fmla.  */
-                                                      return 288;
+                                                         0x001110x00xxxxxxx0011xxxxxxxxxx
+                                                         dup.  */
+                                                      return 148;
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxx01110110xxxxx0x0011xxxxxxxxxx
-                                                         fmls.  */
-                                                      return 304;
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110010xxxxxxx0011xxxxxxxxxx
+                                                             fmla.  */
+                                                          return 288;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110110xxxxxxx0011xxxxxxxxxx
+                                                             fmls.  */
+                                                          return 304;
+                                                        }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxx01110010xxxxx0x1011xxxxxxxxxx
-                                                         facge.  */
-                                                      return 345;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxx01110110xxxxx0x1011xxxxxxxxxx
-                                                         facgt.  */
-                                                      return 359;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     0x001110xx0xxxxxxx1011xxxxxxxxxx
+                                                     smov.  */
+                                                  return 149;
                                                 }
                                             }
                                           else
                                             {
                                               if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 22) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx001110x10xxxxx0x0111xxxxxxxxxx
-                                                         fmulx.  */
-                                                      return 292;
+                                                         0x001110x00xxxxxxx0111xxxxxxxxxx
+                                                         ins.  */
+                                                      return 152;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx101110x10xxxxx0x0111xxxxxxxxxx
-                                                         fmul.  */
-                                                      return 341;
+                                                         0x001110x10xxxxxxx0111xxxxxxxxxx
+                                                         fmulx.  */
+                                                      return 292;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 22) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         0x001110x00xxxxxxx1111xxxxxxxxxx
+                                                         umov.  */
+                                                      return 150;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xx001110010xxxxx0x1111xxxxxxxxxx
+                                                             0x001110010xxxxxxx1111xxxxxxxxxx
                                                              frecps.  */
                                                           return 298;
                                                         }
@@ -12745,19 +12789,11 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xx101110010xxxxx0x1111xxxxxxxxxx
-                                                             fdiv.  */
-                                                          return 349;
+                                                             0x001110110xxxxxxx1111xxxxxxxxxx
+                                                             frsqrts.  */
+                                                          return 310;
                                                         }
                                                     }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxx01110110xxxxx0x1111xxxxxxxxxx
-                                                         frsqrts.  */
-                                                      return 310;
-                                                    }
                                                 }
                                             }
                                         }
@@ -12765,1878 +12801,1174 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 }
                               else
                                 {
-                                  if (((word >> 13) & 0x1) == 0)
-                                    {
-                                      if (((word >> 14) & 0x1) == 0)
-                                        {
-                                          if (((word >> 11) & 0x1) == 0)
-                                            {
-                                              if (((word >> 12) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxx01110xx0xxxxx100001xxxxxxxxxx
-                                                     sqrdmlah.  */
-                                                  return 364;
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx001110xx0xxxxx100101xxxxxxxxxx
-                                                         sdot.  */
-                                                      return 1987;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx101110xx0xxxxx100101xxxxxxxxxx
-                                                         udot.  */
-                                                      return 1986;
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxx01110xx0xxxxx100x11xxxxxxxxxx
-                                                 sqrdmlsh.  */
-                                              return 365;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxx01110xx0xxxxx110xx1xxxxxxxxxx
-                                             fcmla.  */
-                                          return 366;
-                                        }
-                                    }
-                                  else
-                                    {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxx01110xx0xxxxx1x1xx1xxxxxxxxxx
-                                         fcadd.  */
-                                      return 367;
-                                    }
-                                }
-                            }
-                        }
-                      else
-                        {
-                          if (((word >> 29) & 0x1) == 0)
-                            {
-                              if (((word >> 30) & 0x1) == 0)
-                                {
-                                  if (((word >> 16) & 0x1) == 0)
+                                  if (((word >> 22) & 0x1) == 0)
                                     {
-                                      if (((word >> 17) & 0x1) == 0)
+                                      if (((word >> 23) & 0x1) == 0)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             x0011110xx0xxx00xxxxxxxxxxxxxxxx
-                                             fcvtzs.  */
-                                          return 752;
+                                             1x001110000xxxxxxxxxxxxxxxxxxxxx
+                                             eor3.  */
+                                          return 1994;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             x0011110xx0xxx10xxxxxxxxxxxxxxxx
-                                             scvtf.  */
-                                          return 748;
+                                             1x001110100xxxxxxxxxxxxxxxxxxxxx
+                                             xar.  */
+                                          return 1996;
                                         }
                                     }
                                   else
                                     {
-                                      if (((word >> 17) & 0x1) == 0)
+                                      if (((word >> 15) & 0x1) == 0)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             x0011110xx0xxx01xxxxxxxxxxxxxxxx
-                                             fcvtzu.  */
-                                          return 754;
+                                             1x001110x10xxxxx0xxxxxxxxxxxxxxx
+                                             sm3ss1.  */
+                                          return 1998;
                                         }
                                       else
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             x0011110xx0xxx11xxxxxxxxxxxxxxxx
-                                             ucvtf.  */
-                                          return 750;
-                                        }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 10) & 0x1) == 0)
-                                    {
-                                      if (((word >> 12) & 0x1) == 0)
-                                        {
-                                          if (((word >> 13) & 0x1) == 0)
+                                          if (((word >> 10) & 0x1) == 0)
                                             {
-                                              if (((word >> 14) & 0x1) == 0)
+                                              if (((word >> 11) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x1011110xx0xxxxxx000x0xxxxxxxxxx
-                                                     sha1c.  */
-                                                  return 672;
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         1x001110010xxxxx1xxx00xxxxxxxxxx
+                                                         sm3tt1a.  */
+                                                      return 1999;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         1x001110110xxxxx1xxx00xxxxxxxxxx
+                                                         sha512su0.  */
+                                                      return 1992;
+                                                    }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x1011110xx0xxxxxx100x0xxxxxxxxxx
-                                                     sha256h.  */
-                                                  return 676;
+                                                     1x001110x10xxxxx1xxx10xxxxxxxxxx
+                                                     sm3tt2a.  */
+                                                  return 2001;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 14) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x1011110xx0xxxxxx010x0xxxxxxxxxx
-                                                     sha1m.  */
-                                                  return 674;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x1011110xx0xxxxxx110x0xxxxxxxxxx
-                                                     sha256su1.  */
-                                                  return 678;
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 13) & 0x1) == 0)
-                                            {
-                                              if (((word >> 14) & 0x1) == 0)
+                                              if (((word >> 11) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x1011110xx0xxxxxx001x0xxxxxxxxxx
-                                                     sha1p.  */
-                                                  return 673;
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         1x001110010xxxxx1xxx01xxxxxxxxxx
+                                                         sm3tt1b.  */
+                                                      return 2000;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         1x001110110xxxxx1xxx01xxxxxxxxxx
+                                                         sm4e.  */
+                                                      return 2005;
+                                                    }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x1011110xx0xxxxxx101x0xxxxxxxxxx
-                                                     sha256h2.  */
-                                                  return 677;
+                                                     1x001110x10xxxxx1xxx11xxxxxxxxxx
+                                                     sm3tt2b.  */
+                                                  return 2002;
                                                 }
                                             }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x1011110xx0xxxxxxx11x0xxxxxxxxxx
-                                                 sha1su0.  */
-                                              return 675;
-                                            }
                                         }
                                     }
-                                  else
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 10) & 0x1) == 0)
+                                {
+                                  /* 33222222222211111111110000000000
+                                     10987654321098765432109876543210
+                                     xx101110xx0xxxxxxxxxx0xxxxxxxxxx
+                                     ext.  */
+                                  return 130;
+                                }
+                              else
+                                {
+                                  if (((word >> 15) & 0x1) == 0)
                                     {
-                                      if (((word >> 11) & 0x1) == 0)
+                                      if (((word >> 22) & 0x1) == 0)
                                         {
-                                          if (((word >> 13) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x1011110xx0xxxxxxx0x01xxxxxxxxxx
-                                                 dup.  */
-                                              return 529;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x1011110xx0xxxxxxx1x01xxxxxxxxxx
-                                                 fcmeq.  */
-                                              return 550;
-                                            }
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xx101110x00xxxxx0xxxx1xxxxxxxxxx
+                                             ins.  */
+                                          return 154;
                                         }
                                       else
                                         {
-                                          if (((word >> 13) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x1011110xx0xxxxxxx0x11xxxxxxxxxx
-                                                 fmulx.  */
-                                              return 548;
-                                            }
-                                          else
+                                          if (((word >> 11) & 0x1) == 0)
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x10111100x0xxxxxxx1x11xxxxxxxxxx
-                                                     frecps.  */
-                                                  return 552;
-                                                }
-                                              else
+                                              if (((word >> 12) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x10111101x0xxxxxxx1x11xxxxxxxxxx
-                                                     frsqrts.  */
-                                                  return 554;
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                          else
-                            {
-                              if (((word >> 11) & 0x1) == 0)
-                                {
-                                  if (((word >> 12) & 0x1) == 0)
-                                    {
-                                      if (((word >> 13) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xx111110xx0xxxxxxx000xxxxxxxxxxx
-                                             sqrdmlah.  */
-                                          return 582;
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xx1111100x0xxxxxxx100xxxxxxxxxxx
-                                                 fcmge.  */
-                                              return 567;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xx1111101x0xxxxxxx100xxxxxxxxxxx
-                                                 fcmgt.  */
-                                              return 573;
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xx111110xx0xxxxxxxx10xxxxxxxxxxx
-                                         fabd.  */
-                                      return 571;
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 13) & 0x1) == 0)
-                                    {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xx111110xx0xxxxxxx0x1xxxxxxxxxxx
-                                         sqrdmlsh.  */
-                                      return 583;
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 23) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xx1111100x0xxxxxxx1x1xxxxxxxxxxx
-                                             facge.  */
-                                          return 569;
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xx1111101x0xxxxxxx1x1xxxxxxxxxxx
-                                             facgt.  */
-                                          return 575;
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                  else
-                    {
-                      if (((word >> 10) & 0x1) == 0)
-                        {
-                          if (((word >> 11) & 0x1) == 0)
-                            {
-                              if (((word >> 12) & 0x1) == 0)
-                                {
-                                  if (((word >> 13) & 0x1) == 0)
-                                    {
-                                      if (((word >> 14) & 0x1) == 0)
-                                        {
-                                          if (((word >> 15) & 0x1) == 0)
-                                            {
-                                              if (((word >> 28) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 23) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x0001110xx1xxxxx000000xxxxxxxxxx
-                                                             saddl.  */
-                                                          return 42;
+                                                             xx101110010xxxxx0x0001xxxxxxxxxx
+                                                             fmaxnmp.  */
+                                                          return 337;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x1001110xx1xxxxx000000xxxxxxxxxx
-                                                             saddl2.  */
-                                                          return 43;
+                                                             xx101110110xxxxx0x0001xxxxxxxxxx
+                                                             fminnmp.  */
+                                                          return 353;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 23) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x0101110xx1xxxxx000000xxxxxxxxxx
-                                                             uaddl.  */
-                                                          return 74;
+                                                             xx101110010xxxxx0x1001xxxxxxxxxx
+                                                             fcmge.  */
+                                                          return 343;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x1101110xx1xxxxx000000xxxxxxxxxx
-                                                             uaddl2.  */
-                                                          return 75;
+                                                             xx101110110xxxxx0x1001xxxxxxxxxx
+                                                             fcmgt.  */
+                                                          return 357;
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 16) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 17) & 0x1) == 0)
+                                                      if (((word >> 23) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 19) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxx11110xx100000000000xxxxxxxxxx
-                                                                         fcvtns.  */
-                                                                      return 756;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxx11110xx110000000000xxxxxxxxxx
-                                                                         fcvtms.  */
-                                                                      return 776;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxx11110xx101000000000xxxxxxxxxx
-                                                                         fcvtps.  */
-                                                                      return 772;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxx11110xx111000000000xxxxxxxxxx
-                                                                         fcvtzs.  */
-                                                                      return 780;
-                                                                    }
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx100000000xxxxxxxxxx
-                                                                 fcvtas.  */
-                                                              return 764;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx101110010xxxxx0x0101xxxxxxxxxx
+                                                             faddp.  */
+                                                          return 339;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx010000000xxxxxxxxxx
-                                                                 scvtf.  */
-                                                              return 760;
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 19) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxx11110xx1x0110000000xxxxxxxxxx
-                                                                     fmov.  */
-                                                                  return 768;
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxx11110xx101110000000xxxxxxxxxx
-                                                                         fmov.  */
-                                                                      return 784;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxx11110xx111110000000xxxxxxxxxx
-                                                                         fjcvtzs.  */
-                                                                      return 786;
-                                                                    }
-                                                                }
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx101110110xxxxx0x0101xxxxxxxxxx
+                                                             fabd.  */
+                                                          return 355;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 17) & 0x1) == 0)
+                                                      if (((word >> 23) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 19) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxx11110xx100001000000xxxxxxxxxx
-                                                                         fcvtnu.  */
-                                                                      return 758;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxx11110xx110001000000xxxxxxxxxx
-                                                                         fcvtmu.  */
-                                                                      return 778;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxx11110xx101001000000xxxxxxxxxx
-                                                                         fcvtpu.  */
-                                                                      return 774;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxx11110xx111001000000xxxxxxxxxx
-                                                                         fcvtzu.  */
-                                                                      return 782;
-                                                                    }
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx101000000xxxxxxxxxx
-                                                                 fcvtau.  */
-                                                              return 766;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx101110010xxxxx0x1101xxxxxxxxxx
+                                                             fmaxp.  */
+                                                          return 347;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx011000000xxxxxxxxxx
-                                                                 ucvtf.  */
-                                                              return 762;
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 19) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxx11110xx1x0111000000xxxxxxxxxx
-                                                                     fmov.  */
-                                                                  return 770;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxx11110xx1x1111000000xxxxxxxxxx
-                                                                     fmov.  */
-                                                                  return 785;
-                                                                }
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx101110110xxxxx0x1101xxxxxxxxxx
+                                                             fminp.  */
+                                                          return 361;
                                                         }
                                                     }
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 29) & 0x1) == 0)
+                                              if (((word >> 12) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 30) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x00x1110xx1xxxxx100000xxxxxxxxxx
-                                                         smlal.  */
-                                                      return 58;
+                                                         xx101110010xxxxx0xx011xxxxxxxxxx
+                                                         facge.  */
+                                                      return 345;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x10x1110xx1xxxxx100000xxxxxxxxxx
-                                                         smlal2.  */
-                                                      return 59;
+                                                         xx101110110xxxxx0xx011xxxxxxxxxx
+                                                         facgt.  */
+                                                      return 359;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 30) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x01x1110xx1xxxxx100000xxxxxxxxxx
-                                                         umlal.  */
-                                                      return 90;
+                                                         xx101110x10xxxxx0x0111xxxxxxxxxx
+                                                         fmul.  */
+                                                      return 341;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x11x1110xx1xxxxx100000xxxxxxxxxx
-                                                         umlal2.  */
-                                                      return 91;
+                                                         xx101110x10xxxxx0x1111xxxxxxxxxx
+                                                         fdiv.  */
+                                                      return 349;
                                                     }
                                                 }
                                             }
                                         }
-                                      else
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 13) & 0x1) == 0)
                                         {
-                                          if (((word >> 28) & 0x1) == 0)
+                                          if (((word >> 14) & 0x1) == 0)
                                             {
-                                              if (((word >> 15) & 0x1) == 0)
+                                              if (((word >> 11) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 12) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x0001110xx1xxxxx010000xxxxxxxxxx
-                                                             addhn.  */
-                                                          return 50;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1001110xx1xxxxx010000xxxxxxxxxx
-                                                             addhn2.  */
-                                                          return 51;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx0xxxxx100001xxxxxxxxxx
+                                                         sqrdmlah.  */
+                                                      return 364;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x0101110xx1xxxxx010000xxxxxxxxxx
-                                                             raddhn.  */
-                                                          return 82;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1101110xx1xxxxx010000xxxxxxxxxx
-                                                             raddhn2.  */
-                                                          return 83;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx0xxxxx100101xxxxxxxxxx
+                                                         udot.  */
+                                                      return 1986;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 30) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x0001110xx1xxxxx110000xxxxxxxxxx
-                                                             smull.  */
-                                                          return 66;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1001110xx1xxxxx110000xxxxxxxxxx
-                                                             smull2.  */
-                                                          return 67;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 30) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x0101110xx1xxxxx110000xxxxxxxxxx
-                                                             umull.  */
-                                                          return 94;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1101110xx1xxxxx110000xxxxxxxxxx
-                                                             umull2.  */
-                                                          return 95;
-                                                        }
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx101110xx0xxxxx100x11xxxxxxxxxx
+                                                     sqrdmlsh.  */
+                                                  return 365;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 17) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 15) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 16) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 18) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx000010000xxxxxxxxxx
-                                                                 fmov.  */
-                                                              return 799;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx100010000xxxxxxxxxx
-                                                                 frintn.  */
-                                                              return 808;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 18) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx001010000xxxxxxxxxx
-                                                                 fneg.  */
-                                                              return 803;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx101010000xxxxxxxxxx
-                                                                 frintm.  */
-                                                              return 812;
-                                                            }
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 16) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 18) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx000110000xxxxxxxxxx
-                                                                 fabs.  */
-                                                              return 801;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx100110000xxxxxxxxxx
-                                                                 frintp.  */
-                                                              return 810;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 18) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx001110000xxxxxxxxxx
-                                                                 fsqrt.  */
-                                                              return 805;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx101110000xxxxxxxxxx
-                                                                 frintz.  */
-                                                              return 814;
-                                                            }
-                                                        }
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 18) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxx11110xx1xx01xx10000xxxxxxxxxx
-                                                         fcvt.  */
-                                                      return 807;
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 15) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 16) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx110010000xxxxxxxxxx
-                                                                 frinta.  */
-                                                              return 816;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx111010000xxxxxxxxxx
-                                                                 frintx.  */
-                                                              return 818;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxx11110xx1xx11x110000xxxxxxxxxx
-                                                             frinti.  */
-                                                          return 820;
-                                                        }
-                                                    }
-                                                }
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xx101110xx0xxxxx110xx1xxxxxxxxxx
+                                                 fcmla.  */
+                                              return 366;
                                             }
                                         }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xx101110xx0xxxxx1x1xx1xxxxxxxxxx
+                                             fcadd.  */
+                                          return 367;
+                                        }
                                     }
-                                  else
+                                }
+                            }
+                        }
+                      else
+                        {
+                          if (((word >> 29) & 0x1) == 0)
+                            {
+                              if (((word >> 30) & 0x1) == 0)
+                                {
+                                  if (((word >> 16) & 0x1) == 0)
                                     {
-                                      if (((word >> 14) & 0x1) == 0)
+                                      if (((word >> 17) & 0x1) == 0)
                                         {
-                                          if (((word >> 15) & 0x1) == 0)
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             x0011110xx0xxx00xxxxxxxxxxxxxxxx
+                                             fcvtzs.  */
+                                          return 752;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             x0011110xx0xxx10xxxxxxxxxxxxxxxx
+                                             scvtf.  */
+                                          return 748;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 17) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             x0011110xx0xxx01xxxxxxxxxxxxxxxx
+                                             fcvtzu.  */
+                                          return 754;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             x0011110xx0xxx11xxxxxxxxxxxxxxxx
+                                             ucvtf.  */
+                                          return 750;
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 10) & 0x1) == 0)
+                                    {
+                                      if (((word >> 12) & 0x1) == 0)
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
                                             {
-                                              if (((word >> 28) & 0x1) == 0)
+                                              if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 30) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x0001110xx1xxxxx001000xxxxxxxxxx
-                                                             ssubl.  */
-                                                          return 46;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1001110xx1xxxxx001000xxxxxxxxxx
-                                                             ssubl2.  */
-                                                          return 47;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 30) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x0101110xx1xxxxx001000xxxxxxxxxx
-                                                             usubl.  */
-                                                          return 78;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1101110xx1xxxxx001000xxxxxxxxxx
-                                                             usubl2.  */
-                                                          return 79;
-                                                        }
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1011110xx0xxxxxx000x0xxxxxxxxxx
+                                                     sha1c.  */
+                                                  return 672;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 3) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 4) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxx11110xx1xxxxx001000xxxxx00xxx
-                                                             fcmp.  */
-                                                          return 791;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxx11110xx1xxxxx001000xxxxx10xxx
-                                                             fcmpe.  */
-                                                          return 793;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 4) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxx11110xx1xxxxx001000xxxxx01xxx
-                                                             fcmp.  */
-                                                          return 795;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxx11110xx1xxxxx001000xxxxx11xxx
-                                                             fcmpe.  */
-                                                          return 797;
-                                                        }
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1011110xx0xxxxxx100x0xxxxxxxxxx
+                                                     sha256h.  */
+                                                  return 676;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 29) & 0x1) == 0)
+                                              if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x00x1110xx1xxxxx101000xxxxxxxxxx
-                                                         smlsl.  */
-                                                      return 62;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x10x1110xx1xxxxx101000xxxxxxxxxx
-                                                         smlsl2.  */
-                                                      return 63;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1011110xx0xxxxxx010x0xxxxxxxxxx
+                                                     sha1m.  */
+                                                  return 674;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x01x1110xx1xxxxx101000xxxxxxxxxx
-                                                         umlsl.  */
-                                                      return 92;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11x1110xx1xxxxx101000xxxxxxxxxx
-                                                         umlsl2.  */
-                                                      return 93;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1011110xx0xxxxxx110x0xxxxxxxxxx
+                                                     sha256su1.  */
+                                                  return 678;
                                                 }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 15) & 0x1) == 0)
+                                          if (((word >> 13) & 0x1) == 0)
                                             {
-                                              if (((word >> 29) & 0x1) == 0)
+                                              if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x00x1110xx1xxxxx011000xxxxxxxxxx
-                                                         subhn.  */
-                                                      return 54;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x10x1110xx1xxxxx011000xxxxxxxxxx
-                                                         subhn2.  */
-                                                      return 55;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1011110xx0xxxxxx001x0xxxxxxxxxx
+                                                     sha1p.  */
+                                                  return 673;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x01x1110xx1xxxxx011000xxxxxxxxxx
-                                                         rsubhn.  */
-                                                      return 86;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11x1110xx1xxxxx011000xxxxxxxxxx
-                                                         rsubhn2.  */
-                                                      return 87;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1011110xx0xxxxxx101x0xxxxxxxxxx
+                                                     sha256h2.  */
+                                                  return 677;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x1011110xx0xxxxxxx11x0xxxxxxxxxx
+                                                 sha1su0.  */
+                                              return 675;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 11) & 0x1) == 0)
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x1011110xx0xxxxxxx0x01xxxxxxxxxx
+                                                 dup.  */
+                                              return 529;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x1011110xx0xxxxxxx1x01xxxxxxxxxx
+                                                 fcmeq.  */
+                                              return 550;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x1011110xx0xxxxxxx0x11xxxxxxxxxx
+                                                 fmulx.  */
+                                              return 548;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x0xx1110x01xxxxx111000xxxxxxxxxx
-                                                         pmull.  */
-                                                      return 70;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x1xx1110x01xxxxx111000xxxxxxxxxx
-                                                         pmull2.  */
-                                                      return 72;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x10111100x0xxxxxxx1x11xxxxxxxxxx
+                                                     frecps.  */
+                                                  return 552;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x0xx1110x11xxxxx111000xxxxxxxxxx
-                                                         pmull.  */
-                                                      return 71;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x1xx1110x11xxxxx111000xxxxxxxxxx
-                                                         pmull2.  */
-                                                      return 73;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x10111101x0xxxxxxx1x11xxxxxxxxxx
+                                                     frsqrts.  */
+                                                  return 554;
                                                 }
                                             }
                                         }
                                     }
                                 }
-                              else
+                            }
+                          else
+                            {
+                              if (((word >> 11) & 0x1) == 0)
                                 {
-                                  if (((word >> 28) & 0x1) == 0)
+                                  if (((word >> 12) & 0x1) == 0)
                                     {
                                       if (((word >> 13) & 0x1) == 0)
                                         {
-                                          if (((word >> 14) & 0x1) == 0)
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xx111110xx0xxxxxxx000xxxxxxxxxxx
+                                             sqrdmlah.  */
+                                          return 582;
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
                                             {
-                                              if (((word >> 15) & 0x1) == 0)
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xx1111100x0xxxxxxx100xxxxxxxxxxx
+                                                 fcmge.  */
+                                              return 567;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xx1111101x0xxxxxxx100xxxxxxxxxxx
+                                                 fcmgt.  */
+                                              return 573;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         xx111110xx0xxxxxxxx10xxxxxxxxxxx
+                                         fabd.  */
+                                      return 571;
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 13) & 0x1) == 0)
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         xx111110xx0xxxxxxx0x1xxxxxxxxxxx
+                                         sqrdmlsh.  */
+                                      return 583;
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 23) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xx1111100x0xxxxxxx1x1xxxxxxxxxxx
+                                             facge.  */
+                                          return 569;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xx1111101x0xxxxxxx1x1xxxxxxxxxxx
+                                             facgt.  */
+                                          return 575;
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                  else
+                    {
+                      if (((word >> 28) & 0x1) == 0)
+                        {
+                          if (((word >> 15) & 0x1) == 0)
+                            {
+                              if (((word >> 29) & 0x1) == 0)
+                                {
+                                  if (((word >> 31) & 0x1) == 0)
+                                    {
+                                      if (((word >> 10) & 0x1) == 0)
+                                        {
+                                          if (((word >> 11) & 0x1) == 0)
+                                            {
+                                              if (((word >> 12) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x0001110xx1xxxxx000100xxxxxxxxxx
-                                                             saddw.  */
-                                                          return 44;
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 00001110xx1xxxxx000000xxxxxxxxxx
+                                                                 saddl.  */
+                                                              return 42;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 01001110xx1xxxxx000000xxxxxxxxxx
+                                                                 saddl2.  */
+                                                              return 43;
+                                                            }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1001110xx1xxxxx000100xxxxxxxxxx
-                                                             saddw2.  */
-                                                          return 45;
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 00001110xx1xxxxx010000xxxxxxxxxx
+                                                                 addhn.  */
+                                                              return 50;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 01001110xx1xxxxx010000xxxxxxxxxx
+                                                                 addhn2.  */
+                                                              return 51;
+                                                            }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x0101110xx1xxxxx000100xxxxxxxxxx
-                                                             uaddw.  */
-                                                          return 76;
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 00001110xx1xxxxx001000xxxxxxxxxx
+                                                                 ssubl.  */
+                                                              return 46;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 01001110xx1xxxxx001000xxxxxxxxxx
+                                                                 ssubl2.  */
+                                                              return 47;
+                                                            }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1101110xx1xxxxx000100xxxxxxxxxx
-                                                             uaddw2.  */
-                                                          return 77;
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 00001110xx1xxxxx011000xxxxxxxxxx
+                                                                 subhn.  */
+                                                              return 54;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 01001110xx1xxxxx011000xxxxxxxxxx
+                                                                 subhn2.  */
+                                                              return 55;
+                                                            }
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x0x01110xx1xxxxx100100xxxxxxxxxx
-                                                         sqdmlal.  */
-                                                      return 60;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x1x01110xx1xxxxx100100xxxxxxxxxx
-                                                         sqdmlal2.  */
-                                                      return 61;
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 15) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x0001110xx1xxxxx010100xxxxxxxxxx
-                                                             sabal.  */
-                                                          return 52;
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 00001110xx1xxxxx000100xxxxxxxxxx
+                                                                 saddw.  */
+                                                              return 44;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 01001110xx1xxxxx000100xxxxxxxxxx
+                                                                 saddw2.  */
+                                                              return 45;
+                                                            }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1001110xx1xxxxx010100xxxxxxxxxx
-                                                             sabal2.  */
-                                                          return 53;
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 00001110xx1xxxxx010100xxxxxxxxxx
+                                                                 sabal.  */
+                                                              return 52;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 01001110xx1xxxxx010100xxxxxxxxxx
+                                                                 sabal2.  */
+                                                              return 53;
+                                                            }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x0101110xx1xxxxx010100xxxxxxxxxx
-                                                             uabal.  */
-                                                          return 84;
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 00001110xx1xxxxx001100xxxxxxxxxx
+                                                                 ssubw.  */
+                                                              return 48;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 01001110xx1xxxxx001100xxxxxxxxxx
+                                                                 ssubw2.  */
+                                                              return 49;
+                                                            }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1101110xx1xxxxx010100xxxxxxxxxx
-                                                             uabal2.  */
-                                                          return 85;
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 00001110xx1xxxxx011100xxxxxxxxxx
+                                                                 sabdl.  */
+                                                              return 56;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 01001110xx1xxxxx011100xxxxxxxxxx
+                                                                 sabdl2.  */
+                                                              return 57;
+                                                            }
                                                         }
                                                     }
                                                 }
-                                              else
-                                                {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x0x01110xx1xxxxx110100xxxxxxxxxx
-                                                         sqdmull.  */
-                                                      return 68;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x1x01110xx1xxxxx110100xxxxxxxxxx
-                                                         sqdmull2.  */
-                                                      return 69;
-                                                    }
-                                                }
                                             }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 14) & 0x1) == 0)
+                                          else
                                             {
-                                              if (((word >> 15) & 0x1) == 0)
+                                              if (((word >> 12) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x0001110xx1xxxxx001100xxxxxxxxxx
-                                                             ssubw.  */
-                                                          return 48;
+                                                             0x001110xx1xxxxx000010xxxxxxxxxx
+                                                             rev64.  */
+                                                          return 156;
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1001110xx1xxxxx001100xxxxxxxxxx
-                                                             ssubw2.  */
-                                                          return 49;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 30) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x0101110xx1xxxxx001100xxxxxxxxxx
-                                                             usubw.  */
-                                                          return 80;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1101110xx1xxxxx001100xxxxxxxxxx
-                                                             usubw2.  */
-                                                          return 81;
-                                                        }
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x0x01110xx1xxxxx101100xxxxxxxxxx
-                                                         sqdmlsl.  */
-                                                      return 64;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x1x01110xx1xxxxx101100xxxxxxxxxx
-                                                         sqdmlsl2.  */
-                                                      return 65;
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 29) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x0001110xx1xxxxxx11100xxxxxxxxxx
-                                                         sabdl.  */
-                                                      return 56;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x1001110xx1xxxxxx11100xxxxxxxxxx
-                                                         sabdl2.  */
-                                                      return 57;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x0101110xx1xxxxxx11100xxxxxxxxxx
-                                                         uabdl.  */
-                                                      return 88;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x1101110xx1xxxxxx11100xxxxxxxxxx
-                                                         uabdl2.  */
-                                                      return 89;
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 30) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             x0x11110xx1xxxxxxxx100xxxxxxxxxx
-                                             fmov.  */
-                                          return 848;
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 13) & 0x1) == 0)
-                                            {
-                                              if (((word >> 14) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x1x11110xx1xxxxxx00100xxxxxxxxxx
-                                                     sqdmlal.  */
-                                                  return 416;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x1x11110xx1xxxxxx10100xxxxxxxxxx
-                                                     sqdmull.  */
-                                                  return 418;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x1x11110xx1xxxxxxx1100xxxxxxxxxx
-                                                 sqdmlsl.  */
-                                              return 417;
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                          else
-                            {
-                              if (((word >> 12) & 0x1) == 0)
-                                {
-                                  if (((word >> 13) & 0x1) == 0)
-                                    {
-                                      if (((word >> 14) & 0x1) == 0)
-                                        {
-                                          if (((word >> 15) & 0x1) == 0)
-                                            {
-                                              if (((word >> 28) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx001110xx1xxxxx000010xxxxxxxxxx
-                                                         rev64.  */
-                                                      return 156;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx101110xx1xxxxx000010xxxxxxxxxx
-                                                         rev32.  */
-                                                      return 207;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x0x11110xx1xxxxx000010xxxxxxxxxx
-                                                         fmul.  */
-                                                      return 822;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x1x11110xx1xxxxx000010xxxxxxxxxx
-                                                         sha1h.  */
-                                                      return 669;
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 28) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 16) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx001110xx1xxxx0100010xxxxxxxxxx
-                                                             cmgt.  */
-                                                          return 164;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx101110xx1xxxx0100010xxxxxxxxxx
-                                                             cmge.  */
-                                                          return 213;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 19) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 23) & 0x1) == 0)
+                                                          if (((word >> 16) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 29) & 0x1) == 0)
+                                                              if (((word >> 19) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xx0011100x1x0xx1100010xxxxxxxxxx
-                                                                     frintn.  */
-                                                                  return 176;
+                                                                     0x001110xx1x0xx0010010xxxxxxxxxx
+                                                                     cls.  */
+                                                                  return 160;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xx1011100x1x0xx1100010xxxxxxxxxx
-                                                                     frinta.  */
-                                                                  return 224;
+                                                                     0x001110xx1x1xx0010010xxxxxxxxxx
+                                                                     aese.  */
+                                                                  return 665;
                                                                 }
                                                             }
                                                           else
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     00001110xx1xxxx1010010xxxxxxxxxx
+                                                                     sqxtn.  */
+                                                                  return 170;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     01001110xx1xxxx1010010xxxxxxxxxx
+                                                                     sqxtn2.  */
+                                                                  return 171;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 14) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 16) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxx011101x1x0xx1100010xxxxxxxxxx
-                                                                 frintp.  */
-                                                              return 196;
+                                                                 0x001110xx1xxxx0001010xxxxxxxxxx
+                                                                 saddlp.  */
+                                                              return 158;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     00001110xx1xxxx1001010xxxxxxxxxx
+                                                                     xtn.  */
+                                                                  return 168;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     01001110xx1xxxx1001010xxxxxxxxxx
+                                                                     xtn2.  */
+                                                                  return 169;
+                                                                }
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 23) & 0x1) == 0)
+                                                          if (((word >> 16) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 29) & 0x1) == 0)
+                                                              if (((word >> 19) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xx0011100x1x1xx1100010xxxxxxxxxx
-                                                                     frintn.  */
-                                                                  return 177;
+                                                                     0x001110xx1x0xx0011010xxxxxxxxxx
+                                                                     sadalp.  */
+                                                                  return 162;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xx1011100x1x1xx1100010xxxxxxxxxx
-                                                                     frinta.  */
-                                                                  return 225;
+                                                                     0x001110xx1x1xx0011010xxxxxxxxxx
+                                                                     aesmc.  */
+                                                                  return 667;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx011101x1x1xx1100010xxxxxxxxxx
-                                                                 frintp.  */
-                                                              return 197;
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     00001110xx1xxxx1011010xxxxxxxxxx
+                                                                     fcvtn.  */
+                                                                  return 172;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     01001110xx1xxxx1011010xxxxxxxxxx
+                                                                     fcvtn2.  */
+                                                                  return 173;
+                                                                }
                                                             }
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x0011110xx1xxxxx100010xxxxxxxxxx
-                                                             fnmul.  */
-                                                          return 838;
+                                                             0x001110xx1xxxxx000110xxxxxxxxxx
+                                                             rev16.  */
+                                                          return 157;
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1011110xx1xxxxx100010xxxxxxxxxx
-                                                             cmgt.  */
-                                                          return 476;
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x001110xx1x0xxx010110xxxxxxxxxx
+                                                                 cnt.  */
+                                                              return 161;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x001110xx1x1xxx010110xxxxxxxxxx
+                                                                 aesd.  */
+                                                              return 666;
+                                                            }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx111110xx1xxxxx100010xxxxxxxxxx
-                                                         cmge.  */
-                                                      return 505;
-                                                    }
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 15) & 0x1) == 0)
-                                            {
-                                              if (((word >> 28) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 16) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 19) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          if (((word >> 20) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx001110xx1x0xx0010010xxxxxxxxxx
-                                                                 cls.  */
-                                                              return 160;
+                                                                 0x001110xx10xxxx001110xxxxxxxxxx
+                                                                 suqadd.  */
+                                                              return 159;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx101110xx1x0xx0010010xxxxxxxxxx
-                                                                 clz.  */
-                                                              return 210;
+                                                                 0x001110xx11xxxx001110xxxxxxxxxx
+                                                                 saddlv.  */
+                                                              return 27;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     0x001110xx1x0xx0011110xxxxxxxxxx
+                                                                     sqabs.  */
+                                                                  return 163;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     0x001110xx1x1xx0011110xxxxxxxxxx
+                                                                     aesimc.  */
+                                                                  return 668;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     00001110xx1xxxx1011110xxxxxxxxxx
+                                                                     fcvtl.  */
+                                                                  return 174;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     01001110xx1xxxx1011110xxxxxxxxxx
+                                                                     fcvtl2.  */
+                                                                  return 175;
+                                                                }
                                                             }
                                                         }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 11) & 0x1) == 0)
+                                            {
+                                              if (((word >> 12) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 13) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 14) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110xx1xxxxx000001xxxxxxxxxx
+                                                             shadd.  */
+                                                          return 262;
+                                                        }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxx01110xx1x1xx0010010xxxxxxxxxx
-                                                             aese.  */
-                                                          return 665;
+                                                             0x001110xx1xxxxx010001xxxxxxxxxx
+                                                             sshl.  */
+                                                          return 269;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 30) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 x0001110xx1xxxx1010010xxxxxxxxxx
-                                                                 sqxtn.  */
-                                                              return 170;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 x1001110xx1xxxx1010010xxxxxxxxxx
-                                                                 sqxtn2.  */
-                                                              return 171;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110xx1xxxxx001001xxxxxxxxxx
+                                                             shsub.  */
+                                                          return 265;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 30) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 x0101110xx1xxxx1010010xxxxxxxxxx
-                                                                 uqxtn.  */
-                                                              return 220;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 x1101110xx1xxxx1010010xxxxxxxxxx
-                                                                 uqxtn2.  */
-                                                              return 221;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110xx1xxxxx011001xxxxxxxxxx
+                                                             smax.  */
+                                                          return 273;
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x0011110xx1xxxxx010010xxxxxxxxxx
-                                                             fmax.  */
-                                                          return 830;
+                                                             0x001110xx1xxxxx000101xxxxxxxxxx
+                                                             srhadd.  */
+                                                          return 264;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x1011110xx1xxxxx010010xxxxxxxxxx
-                                                             sqxtn.  */
-                                                          return 480;
+                                                             0x001110xx1xxxxx010101xxxxxxxxxx
+                                                             srshl.  */
+                                                          return 271;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx111110xx1xxxxx010010xxxxxxxxxx
-                                                         uqxtn.  */
-                                                      return 509;
+                                                      if (((word >> 14) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110xx1xxxxx001101xxxxxxxxxx
+                                                             cmgt.  */
+                                                          return 267;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110xx1xxxxx011101xxxxxxxxxx
+                                                             sabd.  */
+                                                          return 275;
+                                                        }
                                                     }
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 16) & 0x1) == 0)
+                                              if (((word >> 12) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110xx1xxxxx000011xxxxxxxxxx
+                                                             sqadd.  */
+                                                          return 263;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110xx1xxxxx010011xxxxxxxxxx
+                                                             sqshl.  */
+                                                          return 270;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 14) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110xx1xxxxx001011xxxxxxxxxx
+                                                             sqsub.  */
+                                                          return 266;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110xx1xxxxx011011xxxxxxxxxx
+                                                             smin.  */
+                                                          return 274;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 13) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
+                                                          if (((word >> 22) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 29) & 0x1) == 0)
+                                                              if (((word >> 23) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xx001110xx100xx0110010xxxxxxxxxx
-                                                                     fcmgt.  */
-                                                                  return 188;
+                                                                     0x001110001xxxxx000111xxxxxxxxxx
+                                                                     and.  */
+                                                                  return 299;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xx101110xx100xx0110010xxxxxxxxxx
-                                                                     fcmge.  */
-                                                                  return 239;
+                                                                     0x001110101xxxxx000111xxxxxxxxxx
+                                                                     orr.  */
+                                                                  return 311;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 29) & 0x1) == 0)
+                                                              if (((word >> 23) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xx011110xx100xx0110010xxxxxxxxxx
-                                                                     fcmgt.  */
-                                                                  return 489;
+                                                                     0x001110011xxxxx000111xxxxxxxxxx
+                                                                     bic.  */
+                                                                  return 300;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xx111110xx100xx0110010xxxxxxxxxx
-                                                                     fcmge.  */
-                                                                  return 519;
+                                                                     0x001110111xxxxx000111xxxxxxxxxx
+                                                                     orn.  */
+                                                                  return 313;
                                                                 }
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 23) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 28) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx0011100x110xx0110010xxxxxxxxxx
-                                                                         fmaxnmv.  */
-                                                                      return 35;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx1011100x110xx0110010xxxxxxxxxx
-                                                                         fmaxnmv.  */
-                                                                      return 34;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx0111100x110xx0110010xxxxxxxxxx
-                                                                         fmaxnmp.  */
-                                                                      return 533;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx1111100x110xx0110010xxxxxxxxxx
-                                                                         fmaxnmp.  */
-                                                                      return 532;
-                                                                    }
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 28) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx0011101x110xx0110010xxxxxxxxxx
-                                                                         fminnmv.  */
-                                                                      return 39;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx1011101x110xx0110010xxxxxxxxxx
-                                                                         fminnmv.  */
-                                                                      return 38;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx0111101x110xx0110010xxxxxxxxxx
-                                                                         fminnmp.  */
-                                                                      return 539;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx1111101x110xx0110010xxxxxxxxxx
-                                                                         fminnmp.  */
-                                                                      return 538;
-                                                                    }
-                                                                }
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110xx1xxxxx010111xxxxxxxxxx
+                                                             sqrshl.  */
+                                                          return 272;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 28) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx001110xx1x1xx0110010xxxxxxxxxx
-                                                                 fcmgt.  */
-                                                              return 189;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx101110xx1x1xx0110010xxxxxxxxxx
-                                                                 fcmge.  */
-                                                              return 240;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 29) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx011110xx1x1xx0110010xxxxxxxxxx
-                                                                 fcmgt.  */
-                                                              return 490;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx111110xx1x1xx0110010xxxxxxxxxx
-                                                                 fcmge.  */
-                                                              return 520;
-                                                            }
-                                                        }
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 19) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 23) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 28) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx0011100x1x0xx1110010xxxxxxxxxx
-                                                                     fcvtas.  */
-                                                                  return 184;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx1011100x1x0xx1110010xxxxxxxxxx
-                                                                     fcvtau.  */
-                                                                  return 232;
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx0111100x1x0xx1110010xxxxxxxxxx
-                                                                     fcvtas.  */
-                                                                  return 485;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx1111100x1x0xx1110010xxxxxxxxxx
-                                                                     fcvtau.  */
-                                                                  return 515;
-                                                                }
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 29) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx0x11101x1x0xx1110010xxxxxxxxxx
-                                                                 urecpe.  */
-                                                              return 204;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx1x11101x1x0xx1110010xxxxxxxxxx
-                                                                 ursqrte.  */
-                                                              return 251;
-                                                            }
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 28) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 29) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx001110xx1x1xx1110010xxxxxxxxxx
-                                                                 fcvtas.  */
-                                                              return 185;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx101110xx1x1xx1110010xxxxxxxxxx
-                                                                 fcvtau.  */
-                                                              return 233;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110xx1xxxxx001111xxxxxxxxxx
+                                                             cmge.  */
+                                                          return 268;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx011110xx1x1xx1110010xxxxxxxxxx
-                                                                 fcvtas.  */
-                                                              return 486;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx111110xx1x1xx1110010xxxxxxxxxx
-                                                                 fcvtau.  */
-                                                              return 516;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110xx1xxxxx011111xxxxxxxxxx
+                                                             saba.  */
+                                                          return 276;
                                                         }
                                                     }
                                                 }
@@ -14645,339 +13977,185 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     }
                                   else
                                     {
-                                      if (((word >> 14) & 0x1) == 0)
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         1x001110xx1xxxxx0xxxxxxxxxxxxxxx
+                                         bcax.  */
+                                      return 1997;
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 10) & 0x1) == 0)
+                                    {
+                                      if (((word >> 11) & 0x1) == 0)
                                         {
-                                          if (((word >> 15) & 0x1) == 0)
+                                          if (((word >> 12) & 0x1) == 0)
                                             {
-                                              if (((word >> 28) & 0x1) == 0)
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 16) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xx001110xx1xxxx0001010xxxxxxxxxx
-                                                             saddlp.  */
-                                                          return 158;
+                                                             x0101110xx1xxxxx000000xxxxxxxxxx
+                                                             uaddl.  */
+                                                          return 74;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xx101110xx1xxxx0001010xxxxxxxxxx
-                                                             uaddlp.  */
-                                                          return 208;
+                                                             x1101110xx1xxxxx000000xxxxxxxxxx
+                                                             uaddl2.  */
+                                                          return 75;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 30) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 x0001110xx1xxxx1001010xxxxxxxxxx
-                                                                 xtn.  */
-                                                              return 168;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 x1001110xx1xxxx1001010xxxxxxxxxx
-                                                                 xtn2.  */
-                                                              return 169;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0101110xx1xxxxx010000xxxxxxxxxx
+                                                             raddhn.  */
+                                                          return 82;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 30) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 x0101110xx1xxxx1001010xxxxxxxxxx
-                                                                 sqxtun.  */
-                                                              return 216;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 x1101110xx1xxxx1001010xxxxxxxxxx
-                                                                 sqxtun2.  */
-                                                              return 217;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1101110xx1xxxxx010000xxxxxxxxxx
+                                                             raddhn2.  */
+                                                          return 83;
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
                                                       if (((word >> 30) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x0011110xx1xxxxx001010xxxxxxxxxx
-                                                             fadd.  */
-                                                          return 826;
+                                                             x0101110xx1xxxxx001000xxxxxxxxxx
+                                                             usubl.  */
+                                                          return 78;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x1011110xx1xxxxx001010xxxxxxxxxx
-                                                             sha256su0.  */
-                                                          return 671;
+                                                             x1101110xx1xxxxx001000xxxxxxxxxx
+                                                             usubl2.  */
+                                                          return 79;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx111110xx1xxxxx001010xxxxxxxxxx
-                                                         sqxtun.  */
-                                                      return 508;
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0101110xx1xxxxx011000xxxxxxxxxx
+                                                             rsubhn.  */
+                                                          return 86;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1101110xx1xxxxx011000xxxxxxxxxx
+                                                             rsubhn2.  */
+                                                          return 87;
+                                                        }
                                                     }
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 16) & 0x1) == 0)
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 20) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 28) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxx01110xx10xxx0101010xxxxxxxxxx
-                                                             cmlt.  */
-                                                          return 166;
+                                                             x0101110xx1xxxxx000100xxxxxxxxxx
+                                                             uaddw.  */
+                                                          return 76;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxx11110xx10xxx0101010xxxxxxxxxx
-                                                             cmlt.  */
-                                                          return 478;
+                                                             x1101110xx1xxxxx000100xxxxxxxxxx
+                                                             uaddw2.  */
+                                                          return 77;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xx0x1110xx11xxx0101010xxxxxxxxxx
-                                                             smaxv.  */
-                                                          return 28;
+                                                             x0101110xx1xxxxx010100xxxxxxxxxx
+                                                             uabal.  */
+                                                          return 84;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xx1x1110xx11xxx0101010xxxxxxxxxx
-                                                             umaxv.  */
-                                                          return 32;
+                                                             x1101110xx1xxxxx010100xxxxxxxxxx
+                                                             uabal2.  */
+                                                          return 85;
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 23) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 28) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx0011100x100xx1101010xxxxxxxxxx
-                                                                         fcvtns.  */
-                                                                      return 180;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx1011100x100xx1101010xxxxxxxxxx
-                                                                         fcvtnu.  */
-                                                                      return 228;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx0111100x100xx1101010xxxxxxxxxx
-                                                                         fcvtns.  */
-                                                                      return 481;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx1111100x100xx1101010xxxxxxxxxx
-                                                                         fcvtnu.  */
-                                                                      return 511;
-                                                                    }
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 28) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx0011101x100xx1101010xxxxxxxxxx
-                                                                         fcvtps.  */
-                                                                      return 200;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx1011101x100xx1101010xxxxxxxxxx
-                                                                         fcvtpu.  */
-                                                                      return 247;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx0111101x100xx1101010xxxxxxxxxx
-                                                                         fcvtps.  */
-                                                                      return 495;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx1111101x100xx1101010xxxxxxxxxx
-                                                                         fcvtpu.  */
-                                                                      return 523;
-                                                                    }
-                                                                }
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0101110xx1xxxxx001100xxxxxxxxxx
+                                                             usubw.  */
+                                                          return 80;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx0x1110xx110xx1101010xxxxxxxxxx
-                                                                 sminv.  */
-                                                              return 29;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx1x1110xx110xx1101010xxxxxxxxxx
-                                                                 uminv.  */
-                                                              return 33;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1101110xx1xxxxx001100xxxxxxxxxx
+                                                             usubw2.  */
+                                                          return 81;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx0011100x1x1xx1101010xxxxxxxxxx
-                                                                     fcvtns.  */
-                                                                  return 181;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx1011100x1x1xx1101010xxxxxxxxxx
-                                                                     fcvtnu.  */
-                                                                  return 229;
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx0111100x1x1xx1101010xxxxxxxxxx
-                                                                     fcvtns.  */
-                                                                  return 482;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx1111100x1x1xx1101010xxxxxxxxxx
-                                                                     fcvtnu.  */
-                                                                  return 512;
-                                                                }
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0101110xx1xxxxx011100xxxxxxxxxx
+                                                             uabdl.  */
+                                                          return 88;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx0011101x1x1xx1101010xxxxxxxxxx
-                                                                     fcvtps.  */
-                                                                  return 201;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx1011101x1x1xx1101010xxxxxxxxxx
-                                                                     fcvtpu.  */
-                                                                  return 248;
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx0111101x1x1xx1101010xxxxxxxxxx
-                                                                     fcvtps.  */
-                                                                  return 496;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx1111101x1x1xx1101010xxxxxxxxxx
-                                                                     fcvtpu.  */
-                                                                  return 524;
-                                                                }
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1101110xx1xxxxx011100xxxxxxxxxx
+                                                             uabdl2.  */
+                                                          return 89;
                                                         }
                                                     }
                                                 }
@@ -14985,61 +14163,91 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         }
                                       else
                                         {
-                                          if (((word >> 15) & 0x1) == 0)
+                                          if (((word >> 12) & 0x1) == 0)
                                             {
-                                              if (((word >> 28) & 0x1) == 0)
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 16) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 19) & 0x1) == 0)
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx000010xxxxxxxxxx
+                                                         rev32.  */
+                                                      return 207;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 16) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx101110xx1xxxx0010010xxxxxxxxxx
+                                                             clz.  */
+                                                          return 210;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 30) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx001110xx1x0xx0011010xxxxxxxxxx
-                                                                 sadalp.  */
-                                                              return 162;
+                                                                 x0101110xx1xxxx1010010xxxxxxxxxx
+                                                                 uqxtn.  */
+                                                              return 220;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx101110xx1x0xx0011010xxxxxxxxxx
-                                                                 uadalp.  */
-                                                              return 211;
+                                                                 x1101110xx1xxxx1010010xxxxxxxxxx
+                                                                 uqxtn2.  */
+                                                              return 221;
                                                             }
                                                         }
-                                                      else
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 16) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxx01110xx1x1xx0011010xxxxxxxxxx
-                                                             aesmc.  */
-                                                          return 667;
+                                                             xx101110xx1xxxx0001010xxxxxxxxxx
+                                                             uaddlp.  */
+                                                          return 208;
                                                         }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      else
                                                         {
                                                           if (((word >> 30) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 x0001110xx1xxxx1011010xxxxxxxxxx
-                                                                 fcvtn.  */
-                                                              return 172;
+                                                                 x0101110xx1xxxx1001010xxxxxxxxxx
+                                                                 sqxtun.  */
+                                                              return 216;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 x1001110xx1xxxx1011010xxxxxxxxxx
-                                                                 fcvtn2.  */
-                                                              return 173;
+                                                                 x1101110xx1xxxx1001010xxxxxxxxxx
+                                                                 sqxtun2.  */
+                                                              return 217;
                                                             }
                                                         }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx101110xx1xxxx0011010xxxxxxxxxx
+                                                             uadalp.  */
+                                                          return 211;
+                                                        }
                                                       else
                                                         {
                                                           if (((word >> 30) & 0x1) == 0)
@@ -15061,889 +14269,777 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         }
                                                     }
                                                 }
-                                              else
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx011110xx1xxxxx011010xxxxxxxxxx
-                                                         fmaxnm.  */
-                                                      return 834;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx111110xx1xxxxx011010xxxxxxxxxx
-                                                         fcvtxn.  */
-                                                      return 510;
-                                                    }
-                                                }
                                             }
                                           else
                                             {
-                                              if (((word >> 19) & 0x1) == 0)
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 28) & 0x1) == 0)
+                                                  if (((word >> 22) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxx01110xx1x0xxx111010xxxxxxxxxx
-                                                         fcmlt.  */
-                                                      return 192;
+                                                         xx101110x01xxxxx0x0110xxxxxxxxxx
+                                                         not.  */
+                                                      return 236;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxx11110xx1x0xxx111010xxxxxxxxxx
-                                                         fcmlt.  */
-                                                      return 493;
+                                                         xx101110x11xxxxx0x0110xxxxxxxxxx
+                                                         rbit.  */
+                                                      return 238;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 28) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxx01110xx1x1xxx111010xxxxxxxxxx
-                                                         fcmlt.  */
-                                                      return 193;
-                                                    }
-                                                  else
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxx11110xx1x1xxx111010xxxxxxxxxx
-                                                         fcmlt.  */
-                                                      return 494;
-                                                    }
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx101110xx10xxx0001110xxxxxxxxxx
+                                                                 usqadd.  */
+                                                              return 209;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx101110xx11xxx0001110xxxxxxxxxx
+                                                                 uaddlv.  */
+                                                              return 31;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x0101110xx1xxxx1001110xxxxxxxxxx
+                                                                 shll.  */
+                                                              return 218;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x1101110xx1xxxx1001110xxxxxxxxxx
+                                                                 shll2.  */
+                                                              return 219;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx011110xxxxxxxxxx
+                                                         sqneg.  */
+                                                      return 212;
+                                                    }
                                                 }
                                             }
                                         }
                                     }
-                                }
-                              else
-                                {
-                                  if (((word >> 13) & 0x1) == 0)
+                                  else
                                     {
-                                      if (((word >> 14) & 0x1) == 0)
+                                      if (((word >> 11) & 0x1) == 0)
                                         {
-                                          if (((word >> 15) & 0x1) == 0)
+                                          if (((word >> 12) & 0x1) == 0)
                                             {
-                                              if (((word >> 28) & 0x1) == 0)
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxx01110xx1xxxxx000110xxxxxxxxxx
-                                                     rev16.  */
-                                                  return 157;
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx000001xxxxxxxxxx
+                                                         uhadd.  */
+                                                      return 314;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx010001xxxxxxxxxx
+                                                         ushl.  */
+                                                      return 321;
+                                                    }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 30) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x0x11110xx1xxxxx000110xxxxxxxxxx
-                                                         fdiv.  */
-                                                      return 824;
+                                                         xx101110xx1xxxxx001001xxxxxxxxxx
+                                                         uhsub.  */
+                                                      return 317;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x1x11110xx1xxxxx000110xxxxxxxxxx
-                                                         sha1su1.  */
-                                                      return 670;
+                                                         xx101110xx1xxxxx011001xxxxxxxxxx
+                                                         umax.  */
+                                                      return 325;
                                                     }
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 16) & 0x1) == 0)
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 28) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx001110xx1xxxx0100110xxxxxxxxxx
-                                                             cmeq.  */
-                                                          return 165;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx101110xx1xxxx0100110xxxxxxxxxx
-                                                             cmle.  */
-                                                          return 214;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx000101xxxxxxxxxx
+                                                         urhadd.  */
+                                                      return 316;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx011110xx1xxxx0100110xxxxxxxxxx
-                                                             cmeq.  */
-                                                          return 477;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx111110xx1xxxx0100110xxxxxxxxxx
-                                                             cmle.  */
-                                                          return 506;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx010101xxxxxxxxxx
+                                                         urshl.  */
+                                                      return 323;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 29) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx0x11100x1x0xx1100110xxxxxxxxxx
-                                                                 frintm.  */
-                                                              return 178;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx1x11100x1x0xx1100110xxxxxxxxxx
-                                                                 frintx.  */
-                                                              return 226;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 29) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx0x11101x1x0xx1100110xxxxxxxxxx
-                                                                 frintz.  */
-                                                              return 198;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx1x11101x1x0xx1100110xxxxxxxxxx
-                                                                 frinti.  */
-                                                              return 245;
-                                                            }
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx001101xxxxxxxxxx
+                                                         cmhi.  */
+                                                      return 319;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx011101xxxxxxxxxx
+                                                         uabd.  */
+                                                      return 327;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 12) & 0x1) == 0)
+                                            {
+                                              if (((word >> 13) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx000011xxxxxxxxxx
+                                                         uqadd.  */
+                                                      return 315;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx010011xxxxxxxxxx
+                                                         uqshl.  */
+                                                      return 322;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx001011xxxxxxxxxx
+                                                         uqsub.  */
+                                                      return 318;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx011011xxxxxxxxxx
+                                                         umin.  */
+                                                      return 326;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 13) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx0x11100x1x1xx1100110xxxxxxxxxx
-                                                                 frintm.  */
-                                                              return 179;
+                                                                 xx101110001xxxxx000111xxxxxxxxxx
+                                                                 eor.  */
+                                                              return 350;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx1x11100x1x1xx1100110xxxxxxxxxx
-                                                                 frintx.  */
-                                                              return 227;
+                                                                 xx101110101xxxxx000111xxxxxxxxxx
+                                                                 bit.  */
+                                                              return 362;
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx0x11101x1x1xx1100110xxxxxxxxxx
-                                                                 frintz.  */
-                                                              return 199;
+                                                                 xx101110011xxxxx000111xxxxxxxxxx
+                                                                 bsl.  */
+                                                              return 351;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx1x11101x1x1xx1100110xxxxxxxxxx
-                                                                 frinti.  */
-                                                              return 246;
+                                                                 xx101110111xxxxx000111xxxxxxxxxx
+                                                                 bif.  */
+                                                              return 363;
                                                             }
                                                         }
                                                     }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx010111xxxxxxxxxx
+                                                         uqrshl.  */
+                                                      return 324;
+                                                    }
                                                 }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 15) & 0x1) == 0)
-                                            {
-                                              if (((word >> 28) & 0x1) == 0)
+                                              else
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx001111xxxxxxxxxx
+                                                         cmhs.  */
+                                                      return 320;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx011111xxxxxxxxxx
+                                                         uaba.  */
+                                                      return 328;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 10) & 0x1) == 0)
+                                {
+                                  if (((word >> 11) & 0x1) == 0)
+                                    {
+                                      if (((word >> 12) & 0x1) == 0)
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 29) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xx001110xx1x0xxx010110xxxxxxxxxx
-                                                             cnt.  */
-                                                          return 161;
+                                                             x0001110xx1xxxxx100000xxxxxxxxxx
+                                                             smlal.  */
+                                                          return 58;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 22) & 0x1) == 0)
+                                                          if (((word >> 31) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx101110x01x0xxx010110xxxxxxxxxx
-                                                                 not.  */
-                                                              return 236;
+                                                                 01001110xx1xxxxx100000xxxxxxxxxx
+                                                                 smlal2.  */
+                                                              return 59;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx101110x11x0xxx010110xxxxxxxxxx
-                                                                 rbit.  */
-                                                              return 238;
+                                                                 11001110xx1xxxxx100000xxxxxxxxxx
+                                                                 sha512h.  */
+                                                              return 1990;
                                                             }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxx01110xx1x1xxx010110xxxxxxxxxx
-                                                         aesd.  */
-                                                      return 666;
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0101110xx1xxxxx100000xxxxxxxxxx
+                                                             umlal.  */
+                                                          return 90;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1101110xx1xxxxx100000xxxxxxxxxx
+                                                             umlal2.  */
+                                                          return 91;
+                                                        }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxx11110xx1xxxxx010110xxxxxxxxxx
-                                                     fmin.  */
-                                                  return 832;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 16) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx001110xx100xx0110110xxxxxxxxxx
-                                                                     fcmeq.  */
-                                                                  return 190;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx101110xx100xx0110110xxxxxxxxxx
-                                                                     fcmle.  */
-                                                                  return 241;
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx011110xx100xx0110110xxxxxxxxxx
-                                                                     fcmeq.  */
-                                                                  return 491;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx111110xx100xx0110110xxxxxxxxxx
-                                                                     fcmle.  */
-                                                                  return 521;
-                                                                }
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0001110xx1xxxxx110000xxxxxxxxxx
+                                                             smull.  */
+                                                          return 66;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          if (((word >> 31) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx0x1110xx110xx0110110xxxxxxxxxx
-                                                                 faddp.  */
-                                                              return 535;
+                                                                 01001110xx1xxxxx110000xxxxxxxxxx
+                                                                 smull2.  */
+                                                              return 67;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx1x1110xx110xx0110110xxxxxxxxxx
-                                                                 faddp.  */
-                                                              return 534;
+                                                                 11001110xx1xxxxx110000xxxxxxxxxx
+                                                                 sm3partw1.  */
+                                                              return 2003;
                                                             }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 28) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx001110xx1x1xx0110110xxxxxxxxxx
-                                                                 fcmeq.  */
-                                                              return 191;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx101110xx1x1xx0110110xxxxxxxxxx
-                                                                 fcmle.  */
-                                                              return 242;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0101110xx1xxxxx110000xxxxxxxxxx
+                                                             umull.  */
+                                                          return 94;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx011110xx1x1xx0110110xxxxxxxxxx
-                                                                 fcmeq.  */
-                                                              return 492;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx111110xx1x1xx0110110xxxxxxxxxx
-                                                                 fcmle.  */
-                                                              return 522;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1101110xx1xxxxx110000xxxxxxxxxx
+                                                             umull2.  */
+                                                          return 95;
                                                         }
                                                     }
                                                 }
-                                              else
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx0011100x1x0xx1110110xxxxxxxxxx
-                                                                     scvtf.  */
-                                                                  return 186;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx1011100x1x0xx1110110xxxxxxxxxx
-                                                                     ucvtf.  */
-                                                                  return 234;
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx0111100x1x0xx1110110xxxxxxxxxx
-                                                                     scvtf.  */
-                                                                  return 487;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx1111100x1x0xx1110110xxxxxxxxxx
-                                                                     ucvtf.  */
-                                                                  return 517;
-                                                                }
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0001110xx1xxxxx101000xxxxxxxxxx
+                                                             smlsl.  */
+                                                          return 62;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx0011101x1x0xx1110110xxxxxxxxxx
-                                                                     frecpe.  */
-                                                                  return 205;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx1011101x1x0xx1110110xxxxxxxxxx
-                                                                     frsqrte.  */
-                                                                  return 252;
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx0111101x1x0xx1110110xxxxxxxxxx
-                                                                     frecpe.  */
-                                                                  return 499;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx1111101x1x0xx1110110xxxxxxxxxx
-                                                                     frsqrte.  */
-                                                                  return 527;
-                                                                }
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1001110xx1xxxxx101000xxxxxxxxxx
+                                                             smlsl2.  */
+                                                          return 63;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx0011100x1x1xx1110110xxxxxxxxxx
-                                                                     scvtf.  */
-                                                                  return 187;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx1011100x1x1xx1110110xxxxxxxxxx
-                                                                     ucvtf.  */
-                                                                  return 235;
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx0111100x1x1xx1110110xxxxxxxxxx
-                                                                     scvtf.  */
-                                                                  return 488;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx1111100x1x1xx1110110xxxxxxxxxx
-                                                                     ucvtf.  */
-                                                                  return 518;
-                                                                }
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0101110xx1xxxxx101000xxxxxxxxxx
+                                                             umlsl.  */
+                                                          return 92;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx0011101x1x1xx1110110xxxxxxxxxx
-                                                                     frecpe.  */
-                                                                  return 206;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx1011101x1x1xx1110110xxxxxxxxxx
-                                                                     frsqrte.  */
-                                                                  return 253;
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx0111101x1x1xx1110110xxxxxxxxxx
-                                                                     frecpe.  */
-                                                                  return 500;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx1111101x1x1xx1110110xxxxxxxxxx
-                                                                     frsqrte.  */
-                                                                  return 528;
-                                                                }
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1101110xx1xxxxx101000xxxxxxxxxx
+                                                             umlsl2.  */
+                                                          return 93;
                                                         }
                                                     }
                                                 }
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 14) & 0x1) == 0)
-                                        {
-                                          if (((word >> 15) & 0x1) == 0)
-                                            {
-                                              if (((word >> 28) & 0x1) == 0)
+                                              else
                                                 {
-                                                  if (((word >> 16) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 20) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 29) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx001110xx10xxx0001110xxxxxxxxxx
-                                                                 suqadd.  */
-                                                              return 159;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx101110xx10xxx0001110xxxxxxxxxx
-                                                                 usqadd.  */
-                                                              return 209;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 29) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx001110xx11xxx0001110xxxxxxxxxx
-                                                                 saddlv.  */
-                                                              return 27;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx101110xx11xxx0001110xxxxxxxxxx
-                                                                 uaddlv.  */
-                                                              return 31;
-                                                            }
-                                                        }
-                                                    }
-                                                  else
+                                                  if (((word >> 22) & 0x1) == 0)
                                                     {
                                                       if (((word >> 30) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x0x01110xx1xxxx1001110xxxxxxxxxx
-                                                             shll.  */
-                                                          return 218;
+                                                             x0x01110x01xxxxx111000xxxxxxxxxx
+                                                             pmull.  */
+                                                          return 70;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x1x01110xx1xxxx1001110xxxxxxxxxx
-                                                             shll2.  */
-                                                          return 219;
+                                                             x1x01110x01xxxxx111000xxxxxxxxxx
+                                                             pmull2.  */
+                                                          return 72;
                                                         }
                                                     }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  else
                                                     {
                                                       if (((word >> 30) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x0011110xx1xxxxx001110xxxxxxxxxx
-                                                             fsub.  */
-                                                          return 828;
+                                                             x0x01110x11xxxxx111000xxxxxxxxxx
+                                                             pmull.  */
+                                                          return 71;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x1011110xx1xxxxx001110xxxxxxxxxx
-                                                             suqadd.  */
-                                                          return 474;
+                                                             x1x01110x11xxxxx111000xxxxxxxxxx
+                                                             pmull2.  */
+                                                          return 73;
                                                         }
                                                     }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 30) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x0x01110xx1xxxxx100100xxxxxxxxxx
+                                                         sqdmlal.  */
+                                                      return 60;
+                                                    }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx111110xx1xxxxx001110xxxxxxxxxx
-                                                         usqadd.  */
-                                                      return 503;
+                                                         x1x01110xx1xxxxx100100xxxxxxxxxx
+                                                         sqdmlal2.  */
+                                                      return 61;
                                                     }
                                                 }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 16) & 0x1) == 0)
+                                              else
                                                 {
-                                                  if (((word >> 28) & 0x1) == 0)
+                                                  if (((word >> 30) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx001110xx1xxxx0101110xxxxxxxxxx
-                                                             abs.  */
-                                                          return 167;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx101110xx1xxxx0101110xxxxxxxxxx
-                                                             neg.  */
-                                                          return 215;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x0x01110xx1xxxxx110100xxxxxxxxxx
+                                                         sqdmull.  */
+                                                      return 68;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx011110xx1xxxx0101110xxxxxxxxxx
-                                                             abs.  */
-                                                          return 479;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx111110xx1xxxx0101110xxxxxxxxxx
-                                                             neg.  */
-                                                          return 507;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x1x01110xx1xxxxx110100xxxxxxxxxx
+                                                         sqdmull2.  */
+                                                      return 69;
                                                     }
                                                 }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0x01110xx1xxxxx1x1100xxxxxxxxxx
+                                                     sqdmlsl.  */
+                                                  return 64;
+                                                }
                                               else
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1x01110xx1xxxxx1x1100xxxxxxxxxx
+                                                     sqdmlsl2.  */
+                                                  return 65;
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 12) & 0x1) == 0)
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 31) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 23) & 0x1) == 0)
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x001110xx1xxxx0100010xxxxxxxxxx
+                                                                 cmgt.  */
+                                                              return 164;
+                                                            }
+                                                          else
                                                             {
-                                                              if (((word >> 28) & 0x1) == 0)
+                                                              if (((word >> 19) & 0x1) == 0)
                                                                 {
-                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                  if (((word >> 23) & 0x1) == 0)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xx0011100x100xx1101110xxxxxxxxxx
-                                                                         fcvtms.  */
-                                                                      return 182;
+                                                                         0x0011100x1x0xx1100010xxxxxxxxxx
+                                                                         frintn.  */
+                                                                      return 176;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xx1011100x100xx1101110xxxxxxxxxx
-                                                                         fcvtmu.  */
-                                                                      return 230;
+                                                                         0x0011101x1x0xx1100010xxxxxxxxxx
+                                                                         frintp.  */
+                                                                      return 196;
                                                                     }
                                                                 }
                                                               else
                                                                 {
-                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                  if (((word >> 23) & 0x1) == 0)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xx0111100x100xx1101110xxxxxxxxxx
-                                                                         fcvtms.  */
-                                                                      return 483;
+                                                                         0x0011100x1x1xx1100010xxxxxxxxxx
+                                                                         frintn.  */
+                                                                      return 177;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xx1111100x100xx1101110xxxxxxxxxx
-                                                                         fcvtmu.  */
-                                                                      return 513;
-                                                                    }
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 28) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx0011101x100xx1101110xxxxxxxxxx
-                                                                         fcvtzs.  */
-                                                                      return 202;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx1011101x100xx1101110xxxxxxxxxx
-                                                                         fcvtzu.  */
-                                                                      return 249;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx0111101x100xx1101110xxxxxxxxxx
-                                                                         fcvtzs.  */
-                                                                      return 497;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx1111101x100xx1101110xxxxxxxxxx
-                                                                         fcvtzu.  */
-                                                                      return 525;
+                                                                         0x0011101x1x1xx1100010xxxxxxxxxx
+                                                                         frintp.  */
+                                                                      return 197;
                                                                     }
                                                                 }
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             1x001110xx1xxxxx100010xxxxxxxxxx
+                                                             sha512su1.  */
+                                                          return 1993;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx101110xx1xxxx0100010xxxxxxxxxx
+                                                             cmge.  */
+                                                          return 213;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxx01110xx110xx1101110xxxxxxxxxx
-                                                                 addv.  */
-                                                              return 30;
+                                                                 xx101110xx1x0xx1100010xxxxxxxxxx
+                                                                 frinta.  */
+                                                              return 224;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxx11110xx110xx1101110xxxxxxxxxx
-                                                                 addp.  */
-                                                              return 531;
+                                                                 xx101110xx1x1xx1100010xxxxxxxxxx
+                                                                 frinta.  */
+                                                              return 225;
                                                             }
                                                         }
                                                     }
-                                                  else
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      if (((word >> 29) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
+                                                          if (((word >> 31) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 29) & 0x1) == 0)
+                                                              if (((word >> 16) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xx0011100x1x1xx1101110xxxxxxxxxx
-                                                                     fcvtms.  */
-                                                                  return 183;
+                                                                     0x0011100x1xxxx0110010xxxxxxxxxx
+                                                                     fmaxnmv.  */
+                                                                  return 35;
                                                                 }
                                                               else
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx1011100x1x1xx1101110xxxxxxxxxx
-                                                                     fcvtmu.  */
-                                                                  return 231;
+                                                                  if (((word >> 19) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         0x0011100x1x0xx1110010xxxxxxxxxx
+                                                                         fcvtas.  */
+                                                                      return 184;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         0x0011100x1x1xx1110010xxxxxxxxxx
+                                                                         fcvtas.  */
+                                                                      return 185;
+                                                                    }
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 29) & 0x1) == 0)
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 1x0011100x1xxxxx110010xxxxxxxxxx
+                                                                 sm4ekey.  */
+                                                              return 2006;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx1011100x1xxxx0110010xxxxxxxxxx
+                                                                 fmaxnmv.  */
+                                                              return 34;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 19) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xx0111100x1x1xx1101110xxxxxxxxxx
-                                                                     fcvtms.  */
-                                                                  return 484;
+                                                                     xx1011100x1x0xx1110010xxxxxxxxxx
+                                                                     fcvtau.  */
+                                                                  return 232;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xx1111100x1x1xx1101110xxxxxxxxxx
-                                                                     fcvtmu.  */
-                                                                  return 514;
+                                                                     xx1011100x1x1xx1110010xxxxxxxxxx
+                                                                     fcvtau.  */
+                                                                  return 233;
                                                                 }
                                                             }
                                                         }
-                                                      else
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 16) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 29) & 0x1) == 0)
+                                                              if (((word >> 20) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx0011101x1x1xx1101110xxxxxxxxxx
-                                                                     fcvtzs.  */
-                                                                  return 203;
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0011101x100xx0110010xxxxxxxxxx
+                                                                         fcmgt.  */
+                                                                      return 188;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1011101x100xx0110010xxxxxxxxxx
+                                                                         fcmge.  */
+                                                                      return 239;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xx1011101x1x1xx1101110xxxxxxxxxx
-                                                                     fcvtzu.  */
-                                                                  return 250;
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0011101x110xx0110010xxxxxxxxxx
+                                                                         fminnmv.  */
+                                                                      return 39;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1011101x110xx0110010xxxxxxxxxx
+                                                                         fminnmv.  */
+                                                                      return 38;
+                                                                    }
                                                                 }
                                                             }
                                                           else
@@ -15952,650 +15048,1689 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xx0111101x1x1xx1101110xxxxxxxxxx
-                                                                     fcvtzs.  */
-                                                                  return 498;
+                                                                     xx0011101x1x1xx0110010xxxxxxxxxx
+                                                                     fcmgt.  */
+                                                                  return 189;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xx1111101x1x1xx1101110xxxxxxxxxx
-                                                                     fcvtzu.  */
-                                                                  return 526;
+                                                                     xx1011101x1x1xx0110010xxxxxxxxxx
+                                                                     fcmge.  */
+                                                                  return 240;
                                                                 }
                                                             }
                                                         }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 15) & 0x1) == 0)
-                                            {
-                                              if (((word >> 28) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 16) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 19) & 0x1) == 0)
+                                                      else
                                                         {
                                                           if (((word >> 29) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx001110xx1x0xx0011110xxxxxxxxxx
-                                                                 sqabs.  */
-                                                              return 163;
+                                                                 xx0011101x1xxxx1110010xxxxxxxxxx
+                                                                 urecpe.  */
+                                                              return 204;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx101110xx1x0xx0011110xxxxxxxxxx
-                                                                 sqneg.  */
-                                                              return 212;
+                                                                 xx1011101x1xxxx1110010xxxxxxxxxx
+                                                                 ursqrte.  */
+                                                              return 251;
                                                             }
                                                         }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxx01110xx1x1xx0011110xxxxxxxxxx
-                                                             aesimc.  */
-                                                          return 668;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 30) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x0x01110xx1xxxx1011110xxxxxxxxxx
-                                                             fcvtl.  */
-                                                          return 174;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1x01110xx1xxxx1011110xxxxxxxxxx
-                                                             fcvtl2.  */
-                                                          return 175;
-                                                        }
                                                     }
                                                 }
-                                              else
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 16) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 20) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x0011110xx1xxxxx011110xxxxxxxxxx
-                                                             fminnm.  */
-                                                          return 836;
+                                                             xxx01110xx10xxx0101010xxxxxxxxxx
+                                                             cmlt.  */
+                                                          return 166;
                                                         }
                                                       else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1011110xx1xxxxx011110xxxxxxxxxx
-                                                             sqabs.  */
-                                                          return 475;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx111110xx1xxxxx011110xxxxxxxxxx
-                                                         sqneg.  */
-                                                      return 504;
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 16) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 19) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 20) & 0x1) == 0)
                                                         {
                                                           if (((word >> 29) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx0x1110xx100xx0111110xxxxxxxxxx
-                                                                 fabs.  */
-                                                              return 194;
+                                                                 xx001110xx11xxx0101010xxxxxxxxxx
+                                                                 smaxv.  */
+                                                              return 28;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx1x1110xx100xx0111110xxxxxxxxxx
-                                                                 fneg.  */
-                                                              return 243;
+                                                                 xx101110xx11xxx0101010xxxxxxxxxx
+                                                                 umaxv.  */
+                                                              return 32;
                                                             }
                                                         }
-                                                      else
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 23) & 0x1) == 0)
+                                                          if (((word >> 20) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 28) & 0x1) == 0)
+                                                              if (((word >> 23) & 0x1) == 0)
                                                                 {
                                                                   if (((word >> 29) & 0x1) == 0)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xx0011100x110xx0111110xxxxxxxxxx
-                                                                         fmaxv.  */
-                                                                      return 37;
+                                                                         xx0011100x100xx1101010xxxxxxxxxx
+                                                                         fcvtns.  */
+                                                                      return 180;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xx1011100x110xx0111110xxxxxxxxxx
-                                                                         fmaxv.  */
-                                                                      return 36;
-                                                                    }
-                                                                }
+                                                                         xx1011100x100xx1101010xxxxxxxxxx
+                                                                         fcvtnu.  */
+                                                                      return 228;
+                                                                    }
+                                                                }
                                                               else
                                                                 {
                                                                   if (((word >> 29) & 0x1) == 0)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xx0111100x110xx0111110xxxxxxxxxx
-                                                                         fmaxp.  */
-                                                                      return 537;
+                                                                         xx0011101x100xx1101010xxxxxxxxxx
+                                                                         fcvtps.  */
+                                                                      return 200;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xx1111100x110xx0111110xxxxxxxxxx
-                                                                         fmaxp.  */
-                                                                      return 536;
+                                                                         xx1011101x100xx1101010xxxxxxxxxx
+                                                                         fcvtpu.  */
+                                                                      return 247;
                                                                     }
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 28) & 0x1) == 0)
+                                                              if (((word >> 29) & 0x1) == 0)
                                                                 {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx0011101x110xx0111110xxxxxxxxxx
-                                                                         fminv.  */
-                                                                      return 41;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx1011101x110xx0111110xxxxxxxxxx
-                                                                         fminv.  */
-                                                                      return 40;
-                                                                    }
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx001110xx110xx1101010xxxxxxxxxx
+                                                                     sminv.  */
+                                                                  return 29;
                                                                 }
                                                               else
                                                                 {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx0111101x110xx0111110xxxxxxxxxx
-                                                                         fminp.  */
-                                                                      return 541;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xx1111101x110xx0111110xxxxxxxxxx
-                                                                         fminp.  */
-                                                                      return 540;
-                                                                    }
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx101110xx110xx1101010xxxxxxxxxx
+                                                                     uminv.  */
+                                                                  return 33;
                                                                 }
                                                             }
                                                         }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx0x1110xx1x1xx0111110xxxxxxxxxx
-                                                             fabs.  */
-                                                          return 195;
-                                                        }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx1x1110xx1x1xx0111110xxxxxxxxxx
-                                                             fneg.  */
-                                                          return 244;
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011100x1x1xx1101010xxxxxxxxxx
+                                                                     fcvtns.  */
+                                                                  return 181;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011100x1x1xx1101010xxxxxxxxxx
+                                                                     fcvtnu.  */
+                                                                  return 229;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011101x1x1xx1101010xxxxxxxxxx
+                                                                     fcvtps.  */
+                                                                  return 201;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011101x1x1xx1101010xxxxxxxxxx
+                                                                     fcvtpu.  */
+                                                                  return 248;
+                                                                }
+                                                            }
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
                                                   if (((word >> 19) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 28) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxx01110xx1x0xx1111110xxxxxxxxxx
-                                                             fsqrt.  */
-                                                          return 254;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxx11110xx1x0xx1111110xxxxxxxxxx
-                                                             frecpx.  */
-                                                          return 501;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 28) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxx01110xx1x1xx1111110xxxxxxxxxx
-                                                             fsqrt.  */
-                                                          return 255;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxx11110xx1x1xx1111110xxxxxxxxxx
-                                                             frecpx.  */
-                                                          return 502;
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                      else
-                        {
-                          if (((word >> 11) & 0x1) == 0)
-                            {
-                              if (((word >> 28) & 0x1) == 0)
-                                {
-                                  if (((word >> 12) & 0x1) == 0)
-                                    {
-                                      if (((word >> 13) & 0x1) == 0)
-                                        {
-                                          if (((word >> 14) & 0x1) == 0)
-                                            {
-                                              if (((word >> 15) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx001110xx1xxxxx000001xxxxxxxxxx
-                                                         shadd.  */
-                                                      return 262;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx101110xx1xxxxx000001xxxxxxxxxx
-                                                         uhadd.  */
-                                                      return 314;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx001110xx1xxxxx100001xxxxxxxxxx
-                                                         add.  */
-                                                      return 277;
+                                                         xxx01110xx1x0xxx111010xxxxxxxxxx
+                                                         fcmlt.  */
+                                                      return 192;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx101110xx1xxxxx100001xxxxxxxxxx
-                                                         sub.  */
-                                                      return 329;
+                                                         xxx01110xx1x1xxx111010xxxxxxxxxx
+                                                         fcmlt.  */
+                                                      return 193;
                                                     }
                                                 }
                                             }
-                                          else
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
                                             {
-                                              if (((word >> 15) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx001110xx1xxxxx010001xxxxxxxxxx
-                                                         sshl.  */
-                                                      return 269;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx101110xx1xxxxx010001xxxxxxxxxx
-                                                         ushl.  */
-                                                      return 321;
-                                                    }
-                                                }
-                                              else
+                                              if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 16) & 0x1) == 0)
                                                     {
                                                       if (((word >> 29) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xx0011100x1xxxxx110001xxxxxxxxxx
-                                                             fmaxnm.  */
-                                                          return 285;
+                                                             xx001110xx1xxxx0100110xxxxxxxxxx
+                                                             cmeq.  */
+                                                          return 165;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xx1011100x1xxxxx110001xxxxxxxxxx
-                                                             fmaxnmp.  */
-                                                          return 336;
+                                                             xx101110xx1xxxx0100110xxxxxxxxxx
+                                                             cmle.  */
+                                                          return 214;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx0011101x1xxxxx110001xxxxxxxxxx
-                                                             fminnm.  */
-                                                          return 301;
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011100x1x0xx1100110xxxxxxxxxx
+                                                                     frintm.  */
+                                                                  return 178;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011100x1x0xx1100110xxxxxxxxxx
+                                                                     frintx.  */
+                                                                  return 226;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011101x1x0xx1100110xxxxxxxxxx
+                                                                     frintz.  */
+                                                                  return 198;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011101x1x0xx1100110xxxxxxxxxx
+                                                                     frinti.  */
+                                                                  return 245;
+                                                                }
+                                                            }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx1011101x1xxxxx110001xxxxxxxxxx
-                                                             fminnmp.  */
-                                                          return 352;
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 14) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011100x1x1xx1100110xxxxxxxxxx
+                                                                     frintm.  */
+                                                                  return 179;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011100x1x1xx1100110xxxxxxxxxx
+                                                                     frintx.  */
+                                                                  return 227;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011101x1x1xx1100110xxxxxxxxxx
+                                                                     frintz.  */
+                                                                  return 199;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011101x1x1xx1100110xxxxxxxxxx
+                                                                     frinti.  */
+                                                                  return 246;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 16) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 29) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx001110xx1x0xx0110110xxxxxxxxxx
+                                                                 fcmeq.  */
+                                                              return 190;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx101110xx1x0xx0110110xxxxxxxxxx
+                                                                 fcmle.  */
+                                                              return 241;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 29) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx001110xx1x1xx0110110xxxxxxxxxx
+                                                                 fcmeq.  */
+                                                              return 191;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx101110xx1x1xx0110110xxxxxxxxxx
+                                                                 fcmle.  */
+                                                              return 242;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011100x1x0xx1110110xxxxxxxxxx
+                                                                     scvtf.  */
+                                                                  return 186;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011100x1x0xx1110110xxxxxxxxxx
+                                                                     ucvtf.  */
+                                                                  return 234;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011101x1x0xx1110110xxxxxxxxxx
+                                                                     frecpe.  */
+                                                                  return 205;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011101x1x0xx1110110xxxxxxxxxx
+                                                                     frsqrte.  */
+                                                                  return 252;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011100x1x1xx1110110xxxxxxxxxx
+                                                                     scvtf.  */
+                                                                  return 187;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011100x1x1xx1110110xxxxxxxxxx
+                                                                     ucvtf.  */
+                                                                  return 235;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011101x1x1xx1110110xxxxxxxxxx
+                                                                     frecpe.  */
+                                                                  return 206;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011101x1x1xx1110110xxxxxxxxxx
+                                                                     frsqrte.  */
+                                                                  return 253;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 16) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx001110xx1xxxx0101110xxxxxxxxxx
+                                                             abs.  */
+                                                          return 167;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx101110xx1xxxx0101110xxxxxxxxxx
+                                                             neg.  */
+                                                          return 215;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0011100x100xx1101110xxxxxxxxxx
+                                                                         fcvtms.  */
+                                                                      return 182;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1011100x100xx1101110xxxxxxxxxx
+                                                                         fcvtmu.  */
+                                                                      return 230;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0011101x100xx1101110xxxxxxxxxx
+                                                                         fcvtzs.  */
+                                                                      return 202;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1011101x100xx1101110xxxxxxxxxx
+                                                                         fcvtzu.  */
+                                                                      return 249;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx01110xx110xx1101110xxxxxxxxxx
+                                                                 addv.  */
+                                                              return 30;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011100x1x1xx1101110xxxxxxxxxx
+                                                                     fcvtms.  */
+                                                                  return 183;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011100x1x1xx1101110xxxxxxxxxx
+                                                                     fcvtmu.  */
+                                                                  return 231;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011101x1x1xx1101110xxxxxxxxxx
+                                                                     fcvtzs.  */
+                                                                  return 203;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011101x1x1xx1101110xxxxxxxxxx
+                                                                     fcvtzu.  */
+                                                                  return 250;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 16) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx001110xx100xx0111110xxxxxxxxxx
+                                                                     fabs.  */
+                                                                  return 194;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx101110xx100xx0111110xxxxxxxxxx
+                                                                     fneg.  */
+                                                                  return 243;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0011100x110xx0111110xxxxxxxxxx
+                                                                         fmaxv.  */
+                                                                      return 37;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1011100x110xx0111110xxxxxxxxxx
+                                                                         fmaxv.  */
+                                                                      return 36;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0011101x110xx0111110xxxxxxxxxx
+                                                                         fminv.  */
+                                                                      return 41;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1011101x110xx0111110xxxxxxxxxx
+                                                                         fminv.  */
+                                                                      return 40;
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 29) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx001110xx1x1xx0111110xxxxxxxxxx
+                                                                 fabs.  */
+                                                              return 195;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx101110xx1x1xx0111110xxxxxxxxxx
+                                                                 fneg.  */
+                                                              return 244;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx01110xx1x0xx1111110xxxxxxxxxx
+                                                             fsqrt.  */
+                                                          return 254;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx01110xx1x1xx1111110xxxxxxxxxx
+                                                             fsqrt.  */
+                                                          return 255;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 11) & 0x1) == 0)
+                                    {
+                                      if (((word >> 12) & 0x1) == 0)
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 29) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 31) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110xx1xxxxx100001xxxxxxxxxx
+                                                             add.  */
+                                                          return 277;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             1x001110xx1xxxxx100001xxxxxxxxxx
+                                                             sha512h2.  */
+                                                          return 1991;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx100001xxxxxxxxxx
+                                                         sub.  */
+                                                      return 329;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x0011100x1xxxxx110001xxxxxxxxxx
+                                                                 fmaxnm.  */
+                                                              return 285;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 1x0011100x1xxxxx110001xxxxxxxxxx
+                                                                 sm3partw2.  */
+                                                              return 2004;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx1011100x1xxxxx110001xxxxxxxxxx
+                                                             fmaxnmp.  */
+                                                          return 336;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx0011101x1xxxxx110001xxxxxxxxxx
+                                                             fminnm.  */
+                                                          return 301;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx1011101x1xxxxx110001xxxxxxxxxx
+                                                             fminnmp.  */
+                                                          return 352;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 29) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx001110xx1xxxxx101001xxxxxxxxxx
+                                                         smaxp.  */
+                                                      return 281;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx101001xxxxxxxxxx
+                                                         umaxp.  */
+                                                      return 333;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx0011100x1xxxxx111001xxxxxxxxxx
+                                                             fcmeq.  */
+                                                          return 293;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx1011100x1xxxxx111001xxxxxxxxxx
+                                                             fcmge.  */
+                                                          return 342;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxx011101x1xxxxx111001xxxxxxxxxx
+                                                         fcmgt.  */
+                                                      return 356;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 29) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx001110xx1xxxxx100101xxxxxxxxxx
+                                                         mla.  */
+                                                      return 279;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx100101xxxxxxxxxx
+                                                         mls.  */
+                                                      return 331;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx0011100x1xxxxx110101xxxxxxxxxx
+                                                             fadd.  */
+                                                          return 289;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx1011100x1xxxxx110101xxxxxxxxxx
+                                                             faddp.  */
+                                                          return 338;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx0011101x1xxxxx110101xxxxxxxxxx
+                                                             fsub.  */
+                                                          return 305;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx1011101x1xxxxx110101xxxxxxxxxx
+                                                             fabd.  */
+                                                          return 354;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 29) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx001110xx1xxxxx101101xxxxxxxxxx
+                                                         sqdmulh.  */
+                                                      return 283;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx101101xxxxxxxxxx
+                                                         sqrdmulh.  */
+                                                      return 335;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx0011100x1xxxxx111101xxxxxxxxxx
+                                                             fmax.  */
+                                                          return 295;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx1011100x1xxxxx111101xxxxxxxxxx
+                                                             fmaxp.  */
+                                                          return 346;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx0011101x1xxxxx111101xxxxxxxxxx
+                                                             fmin.  */
+                                                          return 307;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx1011101x1xxxxx111101xxxxxxxxxx
+                                                             fminp.  */
+                                                          return 360;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 12) & 0x1) == 0)
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 29) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 31) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110xx1xxxxx100011xxxxxxxxxx
+                                                             cmtst.  */
+                                                          return 278;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             1x001110xx1xxxxx100011xxxxxxxxxx
+                                                             rax1.  */
+                                                          return 1995;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx100011xxxxxxxxxx
+                                                         cmeq.  */
+                                                      return 330;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx0011100x1xxxxx110011xxxxxxxxxx
+                                                             fmla.  */
+                                                          return 287;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x01011100x1xxxxx110011xxxxxxxxxx
+                                                                 fmlal2.  */
+                                                              return 2009;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x11011100x1xxxxx110011xxxxxxxxxx
+                                                                 fmlal2.  */
+                                                              return 2013;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx0011101x1xxxxx110011xxxxxxxxxx
+                                                             fmls.  */
+                                                          return 303;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x01011101x1xxxxx110011xxxxxxxxxx
+                                                                 fmlsl2.  */
+                                                              return 2010;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x11011101x1xxxxx110011xxxxxxxxxx
+                                                                 fmlsl2.  */
+                                                              return 2014;
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 29) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx001110xx1xxxxx101011xxxxxxxxxx
+                                                         sminp.  */
+                                                      return 282;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx101011xxxxxxxxxx
+                                                         uminp.  */
+                                                      return 334;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x00011100x1xxxxx111011xxxxxxxxxx
+                                                                 fmlal.  */
+                                                              return 2007;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x10011100x1xxxxx111011xxxxxxxxxx
+                                                                 fmlal.  */
+                                                              return 2011;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx1011100x1xxxxx111011xxxxxxxxxx
+                                                             facge.  */
+                                                          return 344;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x00011101x1xxxxx111011xxxxxxxxxx
+                                                                 fmlsl.  */
+                                                              return 2008;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x10011101x1xxxxx111011xxxxxxxxxx
+                                                                 fmlsl.  */
+                                                              return 2012;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx1011101x1xxxxx111011xxxxxxxxxx
+                                                             facgt.  */
+                                                          return 358;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
                                             {
-                                              if (((word >> 15) & 0x1) == 0)
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 29) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx001110xx1xxxxx100111xxxxxxxxxx
+                                                         mul.  */
+                                                      return 280;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx100111xxxxxxxxxx
+                                                         pmul.  */
+                                                      return 332;
+                                                    }
+                                                }
+                                              else
                                                 {
                                                   if (((word >> 29) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx001110xx1xxxxx001001xxxxxxxxxx
-                                                         shsub.  */
-                                                      return 265;
+                                                         xx001110xx1xxxxx110111xxxxxxxxxx
+                                                         fmulx.  */
+                                                      return 291;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx110111xxxxxxxxxx
+                                                         fmul.  */
+                                                      return 340;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxx01110xx1xxxxx101111xxxxxxxxxx
+                                                     addp.  */
+                                                  return 284;
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx0011100x1xxxxx111111xxxxxxxxxx
+                                                             frecps.  */
+                                                          return 297;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx1011100x1xxxxx111111xxxxxxxxxx
+                                                             fdiv.  */
+                                                          return 348;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxx011101x1xxxxx111111xxxxxxxxxx
+                                                         frsqrts.  */
+                                                      return 309;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                      else
+                        {
+                          if (((word >> 10) & 0x1) == 0)
+                            {
+                              if (((word >> 11) & 0x1) == 0)
+                                {
+                                  if (((word >> 12) & 0x1) == 0)
+                                    {
+                                      if (((word >> 13) & 0x1) == 0)
+                                        {
+                                          if (((word >> 14) & 0x1) == 0)
+                                            {
+                                              if (((word >> 16) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 17) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx100000x00000xxxxxxxxxx
+                                                                     fcvtns.  */
+                                                                  return 756;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx110000x00000xxxxxxxxxx
+                                                                     fcvtms.  */
+                                                                  return 776;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx101000x00000xxxxxxxxxx
+                                                                     fcvtps.  */
+                                                                  return 772;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx111000x00000xxxxxxxxxx
+                                                                     fcvtzs.  */
+                                                                  return 780;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx11110xx1xx100x00000xxxxxxxxxx
+                                                             fcvtas.  */
+                                                          return 764;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx11110xx1xx010x00000xxxxxxxxxx
+                                                             scvtf.  */
+                                                          return 760;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1x0110x00000xxxxxxxxxx
+                                                                 fmov.  */
+                                                              return 768;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx101110x00000xxxxxxxxxx
+                                                                     fmov.  */
+                                                                  return 784;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx111110x00000xxxxxxxxxx
+                                                                     fjcvtzs.  */
+                                                                  return 786;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 17) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx100001x00000xxxxxxxxxx
+                                                                     fcvtnu.  */
+                                                                  return 758;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx110001x00000xxxxxxxxxx
+                                                                     fcvtmu.  */
+                                                                  return 778;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx101001x00000xxxxxxxxxx
+                                                                     fcvtpu.  */
+                                                                  return 774;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx111001x00000xxxxxxxxxx
+                                                                     fcvtzu.  */
+                                                                  return 782;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx11110xx1xx101x00000xxxxxxxxxx
+                                                             fcvtau.  */
+                                                          return 766;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx101110xx1xxxxx001001xxxxxxxxxx
-                                                         uhsub.  */
-                                                      return 317;
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx11110xx1xx011x00000xxxxxxxxxx
+                                                             ucvtf.  */
+                                                          return 762;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1x0111x00000xxxxxxxxxx
+                                                                 fmov.  */
+                                                              return 770;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1x1111x00000xxxxxxxxxx
+                                                                 fmov.  */
+                                                              return 785;
+                                                            }
+                                                        }
                                                     }
                                                 }
-                                              else
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 17) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 15) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx001110xx1xxxxx101001xxxxxxxxxx
-                                                         smaxp.  */
-                                                      return 281;
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 18) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx000010000xxxxxxxxxx
+                                                                 fmov.  */
+                                                              return 799;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx100010000xxxxxxxxxx
+                                                                 frintn.  */
+                                                              return 808;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 18) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx001010000xxxxxxxxxx
+                                                                 fneg.  */
+                                                              return 803;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx101010000xxxxxxxxxx
+                                                                 frintm.  */
+                                                              return 812;
+                                                            }
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx101110xx1xxxxx101001xxxxxxxxxx
-                                                         umaxp.  */
-                                                      return 333;
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 18) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx000110000xxxxxxxxxx
+                                                                 fabs.  */
+                                                              return 801;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx100110000xxxxxxxxxx
+                                                                 frintp.  */
+                                                              return 810;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 18) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx001110000xxxxxxxxxx
+                                                                 fsqrt.  */
+                                                              return 805;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx101110000xxxxxxxxxx
+                                                                 frintz.  */
+                                                              return 814;
+                                                            }
+                                                        }
                                                     }
                                                 }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 15) & 0x1) == 0)
+                                              else
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 18) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx001110xx1xxxxx011001xxxxxxxxxx
-                                                         smax.  */
-                                                      return 273;
+                                                         xxx11110xx1xx01xx10000xxxxxxxxxx
+                                                         fcvt.  */
+                                                      return 807;
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx101110xx1xxxxx011001xxxxxxxxxx
-                                                         umax.  */
-                                                      return 325;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 15) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx0011100x1xxxxx111001xxxxxxxxxx
-                                                             fcmeq.  */
-                                                          return 293;
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx110010000xxxxxxxxxx
+                                                                 frinta.  */
+                                                              return 816;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx111010000xxxxxxxxxx
+                                                                 frintx.  */
+                                                              return 818;
+                                                            }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xx1011100x1xxxxx111001xxxxxxxxxx
-                                                             fcmge.  */
-                                                          return 342;
+                                                             xxx11110xx1xx11x110000xxxxxxxxxx
+                                                             frinti.  */
+                                                          return 820;
                                                         }
                                                     }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxx011101x1xxxxx111001xxxxxxxxxx
-                                                         fcmgt.  */
-                                                      return 356;
-                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 3) & 0x1) == 0)
+                                            {
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxx11110xx1xxxxxxx1000xxxxx00xxx
+                                                     fcmp.  */
+                                                  return 791;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxx11110xx1xxxxxxx1000xxxxx10xxx
+                                                     fcmpe.  */
+                                                  return 793;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxx11110xx1xxxxxxx1000xxxxx01xxx
+                                                     fcmp.  */
+                                                  return 795;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxx11110xx1xxxxxxx1000xxxxx11xxx
+                                                     fcmpe.  */
+                                                  return 797;
                                                 }
                                             }
                                         }
                                     }
                                   else
                                     {
-                                      if (((word >> 13) & 0x1) == 0)
+                                      if (((word >> 30) & 0x1) == 0)
                                         {
-                                          if (((word >> 14) & 0x1) == 0)
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             x0x11110xx1xxxxxxxx100xxxxxxxxxx
+                                             fmov.  */
+                                          return 848;
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
                                             {
-                                              if (((word >> 15) & 0x1) == 0)
+                                              if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx001110xx1xxxxx000101xxxxxxxxxx
-                                                         srhadd.  */
-                                                      return 264;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx101110xx1xxxxx000101xxxxxxxxxx
-                                                         urhadd.  */
-                                                      return 316;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1x11110xx1xxxxxx00100xxxxxxxxxx
+                                                     sqdmlal.  */
+                                                  return 416;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx001110xx1xxxxx100101xxxxxxxxxx
-                                                         mla.  */
-                                                      return 279;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx101110xx1xxxxx100101xxxxxxxxxx
-                                                         mls.  */
-                                                      return 331;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1x11110xx1xxxxxx10100xxxxxxxxxx
+                                                     sqdmull.  */
+                                                  return 418;
                                                 }
                                             }
                                           else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x1x11110xx1xxxxxxx1100xxxxxxxxxx
+                                                 sqdmlsl.  */
+                                              return 417;
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 12) & 0x1) == 0)
+                                    {
+                                      if (((word >> 13) & 0x1) == 0)
+                                        {
+                                          if (((word >> 14) & 0x1) == 0)
                                             {
                                               if (((word >> 15) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 30) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx001110xx1xxxxx010101xxxxxxxxxx
-                                                         srshl.  */
-                                                      return 271;
+                                                         x0x11110xx1xxxxx000010xxxxxxxxxx
+                                                         fmul.  */
+                                                      return 822;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx101110xx1xxxxx010101xxxxxxxxxx
-                                                         urshl.  */
-                                                      return 323;
+                                                         x1x11110xx1xxxxx000010xxxxxxxxxx
+                                                         sha1h.  */
+                                                      return 669;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx0011100x1xxxxx110101xxxxxxxxxx
-                                                             fadd.  */
-                                                          return 289;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx1011100x1xxxxx110101xxxxxxxxxx
-                                                             faddp.  */
-                                                          return 338;
-                                                        }
-                                                    }
-                                                  else
+                                                  if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xx0011101x1xxxxx110101xxxxxxxxxx
-                                                             fsub.  */
-                                                          return 305;
+                                                             x0011110xx1xxxxx100010xxxxxxxxxx
+                                                             fnmul.  */
+                                                          return 838;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xx1011101x1xxxxx110101xxxxxxxxxx
-                                                             fabd.  */
-                                                          return 354;
+                                                             x1011110xx1xxxxx100010xxxxxxxxxx
+                                                             cmgt.  */
+                                                          return 476;
                                                         }
                                                     }
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 14) & 0x1) == 0)
-                                            {
-                                              if (((word >> 15) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx001110xx1xxxxx001101xxxxxxxxxx
-                                                         cmgt.  */
-                                                      return 267;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx101110xx1xxxxx001101xxxxxxxxxx
-                                                         cmhi.  */
-                                                      return 319;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx001110xx1xxxxx101101xxxxxxxxxx
-                                                         sqdmulh.  */
-                                                      return 283;
-                                                    }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx101110xx1xxxxx101101xxxxxxxxxx
-                                                         sqrdmulh.  */
-                                                      return 335;
+                                                         xx111110xx1xxxxx100010xxxxxxxxxx
+                                                         cmge.  */
+                                                      return 505;
                                                     }
                                                 }
                                             }
@@ -16605,249 +16740,295 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx001110xx1xxxxx011101xxxxxxxxxx
-                                                         sabd.  */
-                                                      return 275;
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0011110xx1xxxxx010010xxxxxxxxxx
+                                                             fmax.  */
+                                                          return 830;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1011110xx1xxxxx010010xxxxxxxxxx
+                                                             sqxtn.  */
+                                                          return 480;
+                                                        }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx101110xx1xxxxx011101xxxxxxxxxx
-                                                         uabd.  */
-                                                      return 327;
+                                                         xx111110xx1xxxxx010010xxxxxxxxxx
+                                                         uqxtn.  */
+                                                      return 509;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 16) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx0011100x1xxxxx111101xxxxxxxxxx
-                                                             fmax.  */
-                                                          return 295;
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx011110xx100xx0110010xxxxxxxxxx
+                                                                     fcmgt.  */
+                                                                  return 489;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx111110xx100xx0110010xxxxxxxxxx
+                                                                     fcmge.  */
+                                                                  return 519;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0111100x110xx0110010xxxxxxxxxx
+                                                                         fmaxnmp.  */
+                                                                      return 533;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1111100x110xx0110010xxxxxxxxxx
+                                                                         fmaxnmp.  */
+                                                                      return 532;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0111101x110xx0110010xxxxxxxxxx
+                                                                         fminnmp.  */
+                                                                      return 539;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1111101x110xx0110010xxxxxxxxxx
+                                                                         fminnmp.  */
+                                                                      return 538;
+                                                                    }
+                                                                }
+                                                            }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx1011100x1xxxxx111101xxxxxxxxxx
-                                                             fmaxp.  */
-                                                          return 346;
+                                                          if (((word >> 29) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx011110xx1x1xx0110010xxxxxxxxxx
+                                                                 fcmgt.  */
+                                                              return 490;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx111110xx1x1xx0110010xxxxxxxxxx
+                                                                 fcmge.  */
+                                                              return 520;
+                                                            }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx0011101x1xxxxx111101xxxxxxxxxx
-                                                             fmin.  */
-                                                          return 307;
+                                                          if (((word >> 29) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx011110xx1x0xx1110010xxxxxxxxxx
+                                                                 fcvtas.  */
+                                                              return 485;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx111110xx1x0xx1110010xxxxxxxxxx
+                                                                 fcvtau.  */
+                                                              return 515;
+                                                            }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx1011101x1xxxxx111101xxxxxxxxxx
-                                                             fminp.  */
-                                                          return 360;
+                                                          if (((word >> 29) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx011110xx1x1xx1110010xxxxxxxxxx
+                                                                 fcvtas.  */
+                                                              return 486;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx111110xx1x1xx1110010xxxxxxxxxx
+                                                                 fcvtau.  */
+                                                              return 516;
+                                                            }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 29) & 0x1) == 0)
-                                    {
-                                      if (((word >> 30) & 0x1) == 0)
-                                        {
-                                          if (((word >> 4) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x0011110xx1xxxxxxxxx01xxxxx0xxxx
-                                                 fccmp.  */
-                                              return 787;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x0011110xx1xxxxxxxxx01xxxxx1xxxx
-                                                 fccmpe.  */
-                                              return 789;
-                                            }
-                                        }
                                       else
                                         {
-                                          if (((word >> 12) & 0x1) == 0)
+                                          if (((word >> 14) & 0x1) == 0)
                                             {
-                                              if (((word >> 13) & 0x1) == 0)
+                                              if (((word >> 15) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 14) & 0x1) == 0)
+                                                  if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x1011110xx1xxxxxx00001xxxxxxxxxx
-                                                         add.  */
-                                                      return 559;
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0011110xx1xxxxx001010xxxxxxxxxx
+                                                             fadd.  */
+                                                          return 826;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1011110xx1xxxxx001010xxxxxxxxxx
+                                                             sha256su0.  */
+                                                          return 671;
+                                                        }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x1011110xx1xxxxxx10001xxxxxxxxxx
-                                                         sshl.  */
-                                                      return 557;
+                                                         xx111110xx1xxxxx001010xxxxxxxxxx
+                                                         sqxtun.  */
+                                                      return 508;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x1011110xx1xxxxxxx1001xxxxxxxxxx
-                                                     fcmeq.  */
-                                                  return 549;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 13) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x1011110xx1xxxxxxx0101xxxxxxxxxx
-                                                     srshl.  */
-                                                  return 558;
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 15) & 0x1) == 0)
+                                                  if (((word >> 16) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x1011110xx1xxxxx0x1101xxxxxxxxxx
-                                                         cmgt.  */
-                                                      return 555;
+                                                         xxx11110xx1xxxx0101010xxxxxxxxxx
+                                                         cmlt.  */
+                                                      return 478;
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x1011110xx1xxxxx1x1101xxxxxxxxxx
-                                                         sqdmulh.  */
-                                                      return 546;
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 12) & 0x1) == 0)
-                                        {
-                                          if (((word >> 13) & 0x1) == 0)
-                                            {
-                                              if (((word >> 14) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xx111110xx1xxxxxx00001xxxxxxxxxx
-                                                     sub.  */
-                                                  return 580;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xx111110xx1xxxxxx10001xxxxxxxxxx
-                                                     ushl.  */
-                                                  return 578;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xx1111100x1xxxxxxx1001xxxxxxxxxx
-                                                     fcmge.  */
-                                                  return 566;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xx1111101x1xxxxxxx1001xxxxxxxxxx
-                                                     fcmgt.  */
-                                                  return 572;
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 13) & 0x1) == 0)
-                                            {
-                                              if (((word >> 15) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xx111110xx1xxxxx0x0101xxxxxxxxxx
-                                                     urshl.  */
-                                                  return 579;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xx111110xx1xxxxx1x0101xxxxxxxxxx
-                                                     fabd.  */
-                                                  return 570;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 15) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xx111110xx1xxxxx0x1101xxxxxxxxxx
-                                                     cmhi.  */
-                                                  return 576;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xx111110xx1xxxxx1x1101xxxxxxxxxx
-                                                     sqrdmulh.  */
-                                                  return 565;
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111100x1x0xx1101010xxxxxxxxxx
+                                                                     fcvtns.  */
+                                                                  return 481;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111100x1x0xx1101010xxxxxxxxxx
+                                                                     fcvtnu.  */
+                                                                  return 511;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111101x1x0xx1101010xxxxxxxxxx
+                                                                     fcvtps.  */
+                                                                  return 495;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111101x1x0xx1101010xxxxxxxxxx
+                                                                     fcvtpu.  */
+                                                                  return 523;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111100x1x1xx1101010xxxxxxxxxx
+                                                                     fcvtns.  */
+                                                                  return 482;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111100x1x1xx1101010xxxxxxxxxx
+                                                                     fcvtnu.  */
+                                                                  return 512;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111101x1x1xx1101010xxxxxxxxxx
+                                                                     fcvtps.  */
+                                                                  return 496;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111101x1x1xx1101010xxxxxxxxxx
+                                                                     fcvtpu.  */
+                                                                  return 524;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
                                                 }
                                             }
-                                        }
-                                    }
-                                }
-                            }
-                          else
-                            {
-                              if (((word >> 28) & 0x1) == 0)
-                                {
-                                  if (((word >> 12) & 0x1) == 0)
-                                    {
-                                      if (((word >> 13) & 0x1) == 0)
-                                        {
-                                          if (((word >> 14) & 0x1) == 0)
+                                          else
                                             {
                                               if (((word >> 15) & 0x1) == 0)
                                                 {
@@ -16855,217 +17036,437 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx001110xx1xxxxx000011xxxxxxxxxx
-                                                         sqadd.  */
-                                                      return 263;
+                                                         xx011110xx1xxxxx011010xxxxxxxxxx
+                                                         fmaxnm.  */
+                                                      return 834;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx101110xx1xxxxx000011xxxxxxxxxx
-                                                         uqadd.  */
-                                                      return 315;
+                                                         xx111110xx1xxxxx011010xxxxxxxxxx
+                                                         fcvtxn.  */
+                                                      return 510;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 19) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx001110xx1xxxxx100011xxxxxxxxxx
-                                                         cmtst.  */
-                                                      return 278;
+                                                         xxx11110xx1x0xxx111010xxxxxxxxxx
+                                                         fcmlt.  */
+                                                      return 493;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx101110xx1xxxxx100011xxxxxxxxxx
-                                                         cmeq.  */
-                                                      return 330;
+                                                         xxx11110xx1x1xxx111010xxxxxxxxxx
+                                                         fcmlt.  */
+                                                      return 494;
                                                     }
                                                 }
                                             }
-                                          else
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 13) & 0x1) == 0)
+                                        {
+                                          if (((word >> 14) & 0x1) == 0)
                                             {
                                               if (((word >> 15) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 30) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx001110xx1xxxxx010011xxxxxxxxxx
-                                                         sqshl.  */
-                                                      return 270;
+                                                         x0x11110xx1xxxxx000110xxxxxxxxxx
+                                                         fdiv.  */
+                                                      return 824;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx101110xx1xxxxx010011xxxxxxxxxx
-                                                         uqshl.  */
-                                                      return 322;
+                                                         x1x11110xx1xxxxx000110xxxxxxxxxx
+                                                         sha1su1.  */
+                                                      return 670;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 29) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxx011100x1xxxxx110011xxxxxxxxxx
-                                                         fmla.  */
-                                                      return 287;
+                                                         xx011110xx1xxxxx100110xxxxxxxxxx
+                                                         cmeq.  */
+                                                      return 477;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxx011101x1xxxxx110011xxxxxxxxxx
-                                                         fmls.  */
-                                                      return 303;
+                                                         xx111110xx1xxxxx100110xxxxxxxxxx
+                                                         cmle.  */
+                                                      return 506;
                                                     }
                                                 }
                                             }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 14) & 0x1) == 0)
+                                          else
                                             {
                                               if (((word >> 15) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx001110xx1xxxxx001011xxxxxxxxxx
-                                                         sqsub.  */
-                                                      return 266;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx101110xx1xxxxx001011xxxxxxxxxx
-                                                         uqsub.  */
-                                                      return 318;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxx11110xx1xxxxx010110xxxxxxxxxx
+                                                     fmin.  */
+                                                  return 832;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 16) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx001110xx1xxxxx101011xxxxxxxxxx
-                                                         sminp.  */
-                                                      return 282;
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx011110xx100xx0110110xxxxxxxxxx
+                                                                     fcmeq.  */
+                                                                  return 491;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx111110xx100xx0110110xxxxxxxxxx
+                                                                     fcmle.  */
+                                                                  return 521;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx011110xx110xx0110110xxxxxxxxxx
+                                                                     faddp.  */
+                                                                  return 535;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx111110xx110xx0110110xxxxxxxxxx
+                                                                     faddp.  */
+                                                                  return 534;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 29) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx011110xx1x1xx0110110xxxxxxxxxx
+                                                                 fcmeq.  */
+                                                              return 492;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx111110xx1x1xx0110110xxxxxxxxxx
+                                                                 fcmle.  */
+                                                              return 522;
+                                                            }
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx101110xx1xxxxx101011xxxxxxxxxx
-                                                         uminp.  */
-                                                      return 334;
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111100x1x0xx1110110xxxxxxxxxx
+                                                                     scvtf.  */
+                                                                  return 487;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111100x1x0xx1110110xxxxxxxxxx
+                                                                     ucvtf.  */
+                                                                  return 517;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111101x1x0xx1110110xxxxxxxxxx
+                                                                     frecpe.  */
+                                                                  return 499;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111101x1x0xx1110110xxxxxxxxxx
+                                                                     frsqrte.  */
+                                                                  return 527;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111100x1x1xx1110110xxxxxxxxxx
+                                                                     scvtf.  */
+                                                                  return 488;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111100x1x1xx1110110xxxxxxxxxx
+                                                                     ucvtf.  */
+                                                                  return 518;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111101x1x1xx1110110xxxxxxxxxx
+                                                                     frecpe.  */
+                                                                  return 500;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111101x1x1xx1110110xxxxxxxxxx
+                                                                     frsqrte.  */
+                                                                  return 528;
+                                                                }
+                                                            }
+                                                        }
                                                     }
                                                 }
                                             }
-                                          else
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 14) & 0x1) == 0)
                                             {
                                               if (((word >> 15) & 0x1) == 0)
                                                 {
                                                   if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx001110xx1xxxxx011011xxxxxxxxxx
-                                                         smin.  */
-                                                      return 274;
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0011110xx1xxxxx001110xxxxxxxxxx
+                                                             fsub.  */
+                                                          return 828;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1011110xx1xxxxx001110xxxxxxxxxx
+                                                             suqadd.  */
+                                                          return 474;
+                                                        }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx101110xx1xxxxx011011xxxxxxxxxx
-                                                         umin.  */
-                                                      return 326;
+                                                         xx111110xx1xxxxx001110xxxxxxxxxx
+                                                         usqadd.  */
+                                                      return 503;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 16) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxx011100x1xxxxx111011xxxxxxxxxx
-                                                         facge.  */
-                                                      return 344;
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx011110xx1xxxx0101110xxxxxxxxxx
+                                                             abs.  */
+                                                          return 479;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx111110xx1xxxx0101110xxxxxxxxxx
+                                                             neg.  */
+                                                          return 507;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxx011101x1xxxxx111011xxxxxxxxxx
-                                                         facgt.  */
-                                                      return 358;
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      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 >> 19) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          if (((word >> 20) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx001110001xxxxx000111xxxxxxxxxx
-                                                                 and.  */
-                                                              return 299;
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0111100x100xx1101110xxxxxxxxxx
+                                                                         fcvtms.  */
+                                                                      return 483;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1111100x100xx1101110xxxxxxxxxx
+                                                                         fcvtmu.  */
+                                                                      return 513;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0111101x100xx1101110xxxxxxxxxx
+                                                                         fcvtzs.  */
+                                                                      return 497;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1111101x100xx1101110xxxxxxxxxx
+                                                                         fcvtzu.  */
+                                                                      return 525;
+                                                                    }
+                                                                }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx101110001xxxxx000111xxxxxxxxxx
-                                                                 eor.  */
-                                                              return 350;
+                                                                 xxx11110xx110xx1101110xxxxxxxxxx
+                                                                 addp.  */
+                                                              return 531;
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx001110101xxxxx000111xxxxxxxxxx
-                                                                 orr.  */
-                                                              return 311;
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111100x1x1xx1101110xxxxxxxxxx
+                                                                     fcvtms.  */
+                                                                  return 484;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111100x1x1xx1101110xxxxxxxxxx
+                                                                     fcvtmu.  */
+                                                                  return 514;
+                                                                }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xx101110101xxxxx000111xxxxxxxxxx
-                                                                 bit.  */
-                                                              return 362;
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111101x1x1xx1101110xxxxxxxxxx
+                                                                     fcvtzs.  */
+                                                                  return 498;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111101x1x1xx1101110xxxxxxxxxx
+                                                                     fcvtzu.  */
+                                                                  return 526;
+                                                                }
                                                             }
                                                         }
                                                     }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 15) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 29) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0011110xx1xxxxx011110xxxxxxxxxx
+                                                             fminnm.  */
+                                                          return 836;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1011110xx1xxxxx011110xxxxxxxxxx
+                                                             sqabs.  */
+                                                          return 475;
+                                                        }
+                                                    }
                                                   else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx111110xx1xxxxx011110xxxxxxxxxx
+                                                         sqneg.  */
+                                                      return 504;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 16) & 0x1) == 0)
                                                     {
                                                       if (((word >> 23) & 0x1) == 0)
                                                         {
@@ -17073,17 +17474,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx001110011xxxxx000111xxxxxxxxxx
-                                                                 bic.  */
-                                                              return 300;
+                                                                 xx0111100x1xxxx0111110xxxxxxxxxx
+                                                                 fmaxp.  */
+                                                              return 537;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx101110011xxxxx000111xxxxxxxxxx
-                                                                 bsl.  */
-                                                              return 351;
+                                                                 xx1111100x1xxxx0111110xxxxxxxxxx
+                                                                 fmaxp.  */
+                                                              return 536;
                                                             }
                                                         }
                                                       else
@@ -17092,165 +17493,215 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx001110111xxxxx000111xxxxxxxxxx
-                                                                 orn.  */
-                                                              return 313;
+                                                                 xx0111101x1xxxx0111110xxxxxxxxxx
+                                                                 fminp.  */
+                                                              return 541;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xx101110111xxxxx000111xxxxxxxxxx
-                                                                 bif.  */
-                                                              return 363;
+                                                                 xx1111101x1xxxx0111110xxxxxxxxxx
+                                                                 fminp.  */
+                                                              return 540;
                                                             }
                                                         }
                                                     }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx001110xx1xxxxx100111xxxxxxxxxx
-                                                         mul.  */
-                                                      return 280;
-                                                    }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx101110xx1xxxxx100111xxxxxxxxxx
-                                                         pmul.  */
-                                                      return 332;
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx11110xx1x0xx1111110xxxxxxxxxx
+                                                             frecpx.  */
+                                                          return 501;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx11110xx1x1xx1111110xxxxxxxxxx
+                                                             frecpx.  */
+                                                          return 502;
+                                                        }
                                                     }
                                                 }
                                             }
-                                          else
+                                        }
+                                    }
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 11) & 0x1) == 0)
+                                {
+                                  if (((word >> 29) & 0x1) == 0)
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 4) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x0011110xx1xxxxxxxxx01xxxxx0xxxx
+                                                 fccmp.  */
+                                              return 787;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x0011110xx1xxxxxxxxx01xxxxx1xxxx
+                                                 fccmpe.  */
+                                              return 789;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 12) & 0x1) == 0)
                                             {
-                                              if (((word >> 15) & 0x1) == 0)
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx001110xx1xxxxx010111xxxxxxxxxx
-                                                         sqrshl.  */
-                                                      return 272;
+                                                         x1011110xx1xxxxxx00001xxxxxxxxxx
+                                                         add.  */
+                                                      return 559;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx101110xx1xxxxx010111xxxxxxxxxx
-                                                         uqrshl.  */
-                                                      return 324;
+                                                         x1011110xx1xxxxxx10001xxxxxxxxxx
+                                                         sshl.  */
+                                                      return 557;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1011110xx1xxxxxxx1001xxxxxxxxxx
+                                                     fcmeq.  */
+                                                  return 549;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 13) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1011110xx1xxxxxxx0101xxxxxxxxxx
+                                                     srshl.  */
+                                                  return 558;
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 15) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx001110xx1xxxxx110111xxxxxxxxxx
-                                                         fmulx.  */
-                                                      return 291;
+                                                         x1011110xx1xxxxx0x1101xxxxxxxxxx
+                                                         cmgt.  */
+                                                      return 555;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xx101110xx1xxxxx110111xxxxxxxxxx
-                                                         fmul.  */
-                                                      return 340;
+                                                         x1011110xx1xxxxx1x1101xxxxxxxxxx
+                                                         sqdmulh.  */
+                                                      return 546;
                                                     }
                                                 }
                                             }
                                         }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 12) & 0x1) == 0)
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx111110xx1xxxxxx00001xxxxxxxxxx
+                                                     sub.  */
+                                                  return 580;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx111110xx1xxxxxx10001xxxxxxxxxx
+                                                     ushl.  */
+                                                  return 578;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx1111100x1xxxxxxx1001xxxxxxxxxx
+                                                     fcmge.  */
+                                                  return 566;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx1111101x1xxxxxxx1001xxxxxxxxxx
+                                                     fcmgt.  */
+                                                  return 572;
+                                                }
+                                            }
+                                        }
                                       else
                                         {
-                                          if (((word >> 14) & 0x1) == 0)
+                                          if (((word >> 13) & 0x1) == 0)
                                             {
                                               if (((word >> 15) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx001110xx1xxxxx001111xxxxxxxxxx
-                                                         cmge.  */
-                                                      return 268;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx101110xx1xxxxx001111xxxxxxxxxx
-                                                         cmhs.  */
-                                                      return 320;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx111110xx1xxxxx0x0101xxxxxxxxxx
+                                                     urshl.  */
+                                                  return 579;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxx01110xx1xxxxx101111xxxxxxxxxx
-                                                     addp.  */
-                                                  return 284;
+                                                     xx111110xx1xxxxx1x0101xxxxxxxxxx
+                                                     fabd.  */
+                                                  return 570;
                                                 }
                                             }
                                           else
                                             {
                                               if (((word >> 15) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx001110xx1xxxxx011111xxxxxxxxxx
-                                                         saba.  */
-                                                      return 276;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xx101110xx1xxxxx011111xxxxxxxxxx
-                                                         uaba.  */
-                                                      return 328;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx111110xx1xxxxx0x1101xxxxxxxxxx
+                                                     cmhi.  */
+                                                  return 576;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx0011100x1xxxxx111111xxxxxxxxxx
-                                                             frecps.  */
-                                                          return 297;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xx1011100x1xxxxx111111xxxxxxxxxx
-                                                             fdiv.  */
-                                                          return 348;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxx011101x1xxxxx111111xxxxxxxxxx
-                                                         frsqrts.  */
-                                                      return 309;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx111110xx1xxxxx1x1101xxxxxxxxxx
+                                                     sqrdmulh.  */
+                                                  return 565;
                                                 }
                                             }
                                         }
@@ -17469,19 +17920,63 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       if (((word >> 14) & 0x1) == 0)
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxx01111xxxxxxxx0000x0xxxxxxxxxx
-                                             mla.  */
-                                          return 117;
+                                          if (((word >> 29) & 0x1) == 0)
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0001111xxxxxxxx0000x0xxxxxxxxxx
+                                                     fmlal.  */
+                                                  return 2015;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1001111xxxxxxxx0000x0xxxxxxxxxx
+                                                     fmlal.  */
+                                                  return 2019;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xx101111xxxxxxxx0000x0xxxxxxxxxx
+                                                 mla.  */
+                                              return 117;
+                                            }
                                         }
                                       else
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxx01111xxxxxxxx0100x0xxxxxxxxxx
-                                             mls.  */
-                                          return 120;
+                                          if (((word >> 29) & 0x1) == 0)
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0001111xxxxxxxx0100x0xxxxxxxxxx
+                                                     fmlsl.  */
+                                                  return 2016;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1001111xxxxxxxx0100x0xxxxxxxxxx
+                                                     fmlsl.  */
+                                                  return 2020;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xx101111xxxxxxxx0100x0xxxxxxxxxx
+                                                 mls.  */
+                                              return 120;
+                                            }
                                         }
                                     }
                                   else
@@ -17961,11 +18456,33 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       if (((word >> 13) & 0x1) == 0)
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxx01111xxxxxxxx1000x0xxxxxxxxxx
-                                             mul.  */
-                                          return 104;
+                                          if (((word >> 29) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xx001111xxxxxxxx1000x0xxxxxxxxxx
+                                                 mul.  */
+                                              return 104;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0101111xxxxxxxx1000x0xxxxxxxxxx
+                                                     fmlal2.  */
+                                                  return 2017;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1101111xxxxxxxx1000x0xxxxxxxxxx
+                                                     fmlal2.  */
+                                                  return 2021;
+                                                }
+                                            }
                                         }
                                       else
                                         {
@@ -18211,11 +18728,33 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       if (((word >> 12) & 0x1) == 0)
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxx01111xxxxxxxx1100x0xxxxxxxxxx
-                                             sqdmulh.  */
-                                          return 109;
+                                          if (((word >> 29) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xx001111xxxxxxxx1100x0xxxxxxxxxx
+                                                 sqdmulh.  */
+                                              return 109;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0101111xxxxxxxx1100x0xxxxxxxxxx
+                                                     fmlsl2.  */
+                                                  return 2018;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1101111xxxxxxxx1100x0xxxxxxxxxx
+                                                     fmlsl2.  */
+                                                  return 2022;
+                                                }
+                                            }
                                         }
                                       else
                                         {
@@ -18598,7 +19137,8 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode)
     case 1174: value = 1175; break;    /* dmb --> isb.  */
     case 1175: value = 1176; break;    /* isb --> sys.  */
     case 1176: value = 1181; break;    /* sys --> msr.  */
-    case 1181: return NULL;            /* msr --> NULL.  */
+    case 1181: value = 2023; break;    /* msr --> cfinv.  */
+    case 2023: return NULL;            /* cfinv --> NULL.  */
     case 1182: value = 1183; break;    /* sysl --> mrs.  */
     case 1183: return NULL;            /* mrs --> NULL.  */
     case 434: value = 435; break;      /* st4 --> st1.  */
This page took 0.177852 seconds and 4 git commands to generate.