]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Convert ia64-gen to use getopt(). Add standard GNU options plus --srcdir.
authorNick Clifton <nickc@redhat.com>
Thu, 7 Nov 2002 14:33:48 +0000 (14:33 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 7 Nov 2002 14:33:48 +0000 (14:33 +0000)
Convert Makefile.am to pass --srcdir to ia64-gen.  Fix compile time warnings.

12 files changed:
opcodes/ChangeLog
opcodes/Makefile.am
opcodes/Makefile.in
opcodes/ia64-asmtab.c
opcodes/ia64-gen.c
opcodes/ia64-opc-a.c
opcodes/ia64-opc-b.c
opcodes/ia64-opc-d.c
opcodes/ia64-opc-f.c
opcodes/ia64-opc-i.c
opcodes/ia64-opc-m.c
opcodes/ia64-opc-x.c

index 3eb351101fdc4b7209de0b9c73d97ae52d4c8c1c..275c3bb451a23577c9dd3e0f7bf1615b6b6708b6 100644 (file)
@@ -1,3 +1,28 @@
+2002-11-07  Klee Dienes  <kdienes@apple.com>
+
+         * Makefile.am (ia64-asmtab.c): Update to use the new '--srcdir'
+         argument to ia64-gen.
+        Regenerate dependencies for ia64-len.lo.
+        * Makefile.in: Regenerate.
+         * ia64-gen.c: Convert to use getopt().  Add the standard GNU
+         options, as well as '--srcdir', which controls the directory in
+         which ia64-gen looks for the sources it uses to generate the
+         output table.  Add a 'const' to the declaration of the final
+         output table.  Call xmalloc_set_program_name to set the program
+         name.
+        * ia64-asmtab.c: Regenerate.
+        
+2002-11-07  Nick Clifton  <nickc@redhat.com>
+
+       * ia64-gen.c: Fix comment formatting and compile time warnings.
+       * ia64-opc-a.c: Fix compile time warnings.
+       * ia64-opc-b.c: Likewise.
+       * ia64-opc-d.c: Likewise.
+       * ia64-opc-f.c: Likewise.
+       * ia64-opc-i.c: Likewise.
+       * ia64-opc-m.c: Likewise.
+       * ia64-opc-x.c: Likewise.
+
 2002-11-06  Aldy Hernandez  <aldyh@redhat.com>
 
         * opcodes/ppc-opc.c: Change RD to RS for evmerge*.
index ed6e8134e3217b96667fc72bf18b84397e8a644a..6bdfa36ca1c5a9be1106785ea5e2b0ddc5d40cee 100644 (file)
@@ -403,7 +403,7 @@ ia64-gen.o: ia64-gen.c ia64-opc.c ia64-opc-a.c ia64-opc-b.c ia64-opc-f.c \
   ia64-opc-i.c ia64-opc-m.c ia64-opc-d.c ia64-opc.h
 
 ia64-asmtab.c: @MAINT@ ia64-gen ia64-ic.tbl ia64-raw.tbl ia64-waw.tbl ia64-war.tbl
-       here=`pwd`; cd $(srcdir); $$here/ia64-gen > ia64-asmtab.c
+       ./ia64-gen --srcdir $(srcdir) > $(srcdir)/ia64-asmtab.c
 
 s390-mkopc: s390-mkopc.c
        $(CC_FOR_BUILD) -o s390-mkopc $(srcdir)/s390-mkopc.c
@@ -587,8 +587,8 @@ ia64-opc.lo: ia64-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
   sysdep.h config.h ia64-asmtab.h $(INCDIR)/opcode/ia64.h \
   $(BFD_H) $(INCDIR)/symcat.h ia64-asmtab.c
 ia64-gen.lo: ia64-gen.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
-  $(INCDIR)/safe-ctype.h sysdep.h config.h ia64-opc.h \
-  $(INCDIR)/opcode/ia64.h $(BFD_H) $(INCDIR)/symcat.h \
+  $(INCDIR)/safe-ctype.h sysdep.h config.h $(INCDIR)/getopt.h \
+  ia64-opc.h $(INCDIR)/opcode/ia64.h $(BFD_H) $(INCDIR)/symcat.h \
   ia64-opc-a.c ia64-opc-i.c ia64-opc-m.c ia64-opc-b.c \
   ia64-opc-f.c ia64-opc-x.c ia64-opc-d.c
 ia64-asmtab.lo: ia64-asmtab.c
index c4742303ebf3aae856b645e03d2954b62f07b952..6d1180216938466b2a490e564bf58ec6e3fec130 100644 (file)
@@ -449,7 +449,7 @@ acinclude.m4 aclocal.m4 config.in configure configure.in
 
 DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
-TAR = tar
+TAR = gtar
 GZIP_ENV = --best
 SOURCES = libopcodes.a.c $(libopcodes_la_SOURCES)
 OBJECTS = libopcodes.a.$(OBJEXT) $(libopcodes_la_OBJECTS)
@@ -899,7 +899,7 @@ ia64-gen.o: ia64-gen.c ia64-opc.c ia64-opc-a.c ia64-opc-b.c ia64-opc-f.c \
   ia64-opc-i.c ia64-opc-m.c ia64-opc-d.c ia64-opc.h
 
 ia64-asmtab.c: @MAINT@ ia64-gen ia64-ic.tbl ia64-raw.tbl ia64-waw.tbl ia64-war.tbl
-       here=`pwd`; cd $(srcdir); $$here/ia64-gen > ia64-asmtab.c
+       ./ia64-gen --srcdir $(srcdir) > $(srcdir)/ia64-asmtab.c
 
 s390-mkopc: s390-mkopc.c
        $(CC_FOR_BUILD) -o s390-mkopc $(srcdir)/s390-mkopc.c
@@ -1083,8 +1083,8 @@ ia64-opc.lo: ia64-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
   sysdep.h config.h ia64-asmtab.h $(INCDIR)/opcode/ia64.h \
   $(BFD_H) $(INCDIR)/symcat.h ia64-asmtab.c
 ia64-gen.lo: ia64-gen.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
-  $(INCDIR)/safe-ctype.h sysdep.h config.h ia64-opc.h \
-  $(INCDIR)/opcode/ia64.h $(BFD_H) $(INCDIR)/symcat.h \
+  $(INCDIR)/safe-ctype.h sysdep.h config.h $(INCDIR)/getopt.h \
+  ia64-opc.h $(INCDIR)/opcode/ia64.h $(BFD_H) $(INCDIR)/symcat.h \
   ia64-opc-a.c ia64-opc-i.c ia64-opc-m.c ia64-opc-b.c \
   ia64-opc-f.c ia64-opc-x.c ia64-opc-d.c
 ia64-asmtab.lo: ia64-asmtab.c
index f007f71f0734379228ab3865f320a223b0383fb6..399e2bc40544a15473604cd2fd2cc5ecbde421d3 100644 (file)
@@ -1,5 +1,5 @@
-/* This file is automatically generated by ia64-gen.  Do not edit! */
-static const char *ia64_strings[] = {
+/* This file is automatically generated by ia64-gen.  Do not edit!  */
+static const char * const ia64_strings[] = {
   "", "0", "1", "a", "acq", "add", "addl", "addp4", "adds", "alloc", "and",
   "andcm", "b", "bias", "br", "break", "brl", "brp", "bsw", "c", "call",
   "cexit", "chk", "cloop", "clr", "clrrrb", "cmp", "cmp4", "cmpxchg1",
index 6443c7c4b250f9f7009be8052acc4997c121aa15..f6bfda00620e0267a77131501abf70e24fd13f80 100644 (file)
@@ -1,5 +1,5 @@
 /* ia64-gen.c -- Generate a shrunk set of opcode tables
-   Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
+   Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
    Written by Bob Manson, Cygnus Solutions, <manson@cygnus.com>
 
    This file is part of GDB, GAS, and the GNU binutils.
    required.  
 
    The resource table is constructed based on some text dependency tables, 
-   which are also easier to maintain than the final representation.
-
-*/
+   which are also easier to maintain than the final representation.  */
 
 #include <stdio.h>
+#include <stdarg.h>
+#include <errno.h>
 
 #include "ansidecl.h"
 #include "libiberty.h"
 #include "safe-ctype.h"
 #include "sysdep.h"
+#include "getopt.h"
 #include "ia64-opc.h"
 #include "ia64-opc-a.c"
 #include "ia64-opc-i.c"
 #include "ia64-opc-x.c"
 #include "ia64-opc-d.c"
 
+#include <libintl.h>
+#define _(String) gettext (String)
+
+const char * program_name = NULL;
 int debug = 0;
 
 #define tmalloc(X) (X *) xmalloc (sizeof (X))
 
 /* The main opcode table entry.  Each entry is a unique combination of
    name and flags (no two entries in the table compare as being equal
-   via opcodes_eq). */
+   via opcodes_eq).  */
 struct main_entry
 {
   /* The base name of this opcode.  The names of its completers are
-     appended to it to generate the full instruction name. */
+     appended to it to generate the full instruction name.  */
   struct string_entry *name;
   /* The base opcode entry.  Which one to use is a fairly arbitrary choice;
-     it uses the first one passed to add_opcode_entry. */
+     it uses the first one passed to add_opcode_entry.  */
   struct ia64_opcode *opcode;
-  /* The list of completers that can be applied to this opcode. */
+  /* The list of completers that can be applied to this opcode.  */
   struct completer_entry *completers;
-  /* Next entry in the chain. */
+  /* Next entry in the chain.  */
   struct main_entry *next;
-  /* Index in the  main table. */
+  /* Index in the  main table.  */
   int main_index;
 } *maintable, **ordered_table;
+
 int otlen = 0;
 int ottotlen = 0;
 int opcode_count = 0;
 
-/* The set of possible completers for an opcode. */
+/* The set of possible completers for an opcode.  */
 struct completer_entry
 {
-  /* This entry's index in the ia64_completer_table[] array. */
+  /* This entry's index in the ia64_completer_table[] array.  */
   int num;
 
-  /* The name of the completer. */
+  /* The name of the completer.  */
   struct string_entry *name;
 
-  /* This entry's parent. */
+  /* This entry's parent.  */
   struct completer_entry *parent;
 
   /* Set if this is a terminal completer (occurs at the end of an
-     opcode). */
+     opcode).  */
   int is_terminal;
 
-  /* An alternative completer. */
+  /* An alternative completer.  */
   struct completer_entry *alternative;
 
   /* Additional completers that can be appended to this one.  */
@@ -100,53 +106,53 @@ struct completer_entry
   /* Before compute_completer_bits () is invoked, this contains the actual
      instruction opcode for this combination of opcode and completers.
      Afterwards, it contains those bits that are different from its
-     parent opcode. */
+     parent opcode.  */
   ia64_insn bits;
 
   /* Bits set to 1 correspond to those bits in this completer's opcode
      that are different from its parent completer's opcode (or from
      the base opcode if the entry is the root of the opcode's completer
-     list).  This field is filled in by compute_completer_bits (). */
+     list).  This field is filled in by compute_completer_bits ().  */
   ia64_insn mask;
 
-  /* Index into the opcode dependency list, or -1 if none. */
+  /* Index into the opcode dependency list, or -1 if none.  */
   int dependencies;
 
   /* Remember the order encountered in the opcode tables.  */
   int order;
 };
 
-/* One entry in the disassembler name table. */
+/* One entry in the disassembler name table.  */
 struct disent
 {
-  /* The index into the ia64_name_dis array for this entry. */
+  /* The index into the ia64_name_dis array for this entry.  */
   int ournum;
 
-  /* The index into the main_table[] array. */
+  /* The index into the main_table[] array.  */
   int insn;
 
-  /* The disassmbly priority of this entry. */
+  /* The disassmbly priority of this entry.  */
   int priority;
 
-  /* The completer_index value for this entry. */
+  /* The completer_index value for this entry.  */
   int completer_index;
 
-  /* How many other entries share this decode. */
+  /* How many other entries share this decode.  */
   int nextcnt;
 
-  /* The next entry sharing the same decode. */
+  /* The next entry sharing the same decode.  */
   struct disent *nexte;
 
-  /* The next entry in the name list. */
+  /* The next entry in the name list.  */
   struct disent *next_ent;
 } *disinsntable = NULL;
 
 /* A state machine that will eventually be used to generate the
-   disassembler table. */
+   disassembler table.  */
 struct bittree
 {
   struct disent *disent;
-  struct bittree *bits[3]; /* 0, 1, and X (don't care) */
+  struct bittree *bits[3]; /* 0, 1, and X (don't care) */
   int bits_to_skip;
   int skip_flag;
 } *bittree;
@@ -154,62 +160,63 @@ struct bittree
 /* The string table contains all opcodes and completers sorted in
    alphabetical order.  */
 
-/* One entry in the string table. */
+/* One entry in the string table.  */
 struct string_entry 
 {
-  /* The index in the ia64_strings[] array for this entry. */
+  /* The index in the ia64_strings[] array for this entry.  */
   int num;
-  /* And the string. */
+  /* And the string.  */
   char *s;
 } **string_table = NULL;
+
 int strtablen = 0;
 int strtabtotlen = 0;
 
 \f
-/* resource dependency entries */
+/* Resource dependency entries.  */
 struct rdep
 {
-  char *name;                       /* resource name */
+  char *name;                       /* Resource name.  */
   unsigned 
-    mode:2,                         /* RAW, WAW, or WAR */
-    semantics:3;                    /* dependency semantics */
-  char *extra;                      /* additional semantics info */
+    mode:2,                         /* RAW, WAW, or WAR */
+    semantics:3;                    /* Dependency semantics.  */
+  char *extra;                      /* Additional semantics info.  */
   int nchks;                   
-  int total_chks;                   /* total #of terminal insns */
-  int *chks;                        /* insn classes which read (RAW), write
-                                       (WAW), or write (WAR) this rsrc */
-  int *chknotes;                    /* dependency notes for each class */
+  int total_chks;                   /* Total #of terminal insns.  */
+  int *chks;                        /* Insn classes which read (RAW), write
+                                       (WAW), or write (WAR) this rsrc */
+  int *chknotes;                    /* Dependency notes for each class.  */
   int nregs;
-  int total_regs;                   /* total #of terminal insns */
-  int *regs;                        /* insn class which write (RAW), write2
-                                       (WAW), or read (WAR) this rsrc */
-  int *regnotes;                    /* dependency notes for each class */
+  int total_regs;                   /* Total #of terminal insns.  */
+  int *regs;                        /* Insn class which write (RAW), write2
+                                       (WAW), or read (WAR) this rsrc */
+  int *regnotes;                    /* Dependency notes for each class.  */
 
-  int waw_special;                  /* special WAW dependency note */
+  int waw_special;                  /* Special WAW dependency note.  */
 } **rdeps = NULL;
 
 static int rdepslen = 0;
 static int rdepstotlen = 0;
 
-/* array of all instruction classes */
+/* Array of all instruction classes.  */
 struct iclass
 { 
-  char *name;                       /* instruction class name */
-  int is_class;                     /* is a class, not a terminal */
+  char *name;                       /* Instruction class name.  */
+  int is_class;                     /* Is a class, not a terminal.  */
   int nsubs;                        
-  int *subs;                        /* other classes within this class */
+  int *subs;                        /* Other classes within this class.  */
   int nxsubs;                       
-  int xsubs[4];                     /* exclusions */
-  char *comment;                    /* optional comment */
-  int note;                         /* optional note */
-  int terminal_resolved;            /* did we match this with anything? */
-  int orphan;                       /* detect class orphans */
+  int xsubs[4];                     /* Exclusions.  */
+  char *comment;                    /* Optional comment.  */
+  int note;                         /* Optional note.  */
+  int terminal_resolved;            /* Did we match this with anything?  */
+  int orphan;                       /* Detect class orphans.  */
 } **ics = NULL;
 
 static int iclen = 0;
 static int ictotlen = 0;
 
-/* an opcode dependency (chk/reg pair of dependency lists) */
+/* An opcode dependency (chk/reg pair of dependency lists).  */
 struct opdep
 {
   int chk;                          /* index into dlists */
@@ -219,7 +226,7 @@ struct opdep
 static int opdeplen = 0;
 static int opdeptotlen = 0;
 
-/* a generic list of dependencies w/notes encoded.  these may be shared. */
+/* A generic list of dependencies w/notes encoded.  These may be shared.  */
 struct deplist
 {
   int len;
@@ -229,7 +236,81 @@ struct deplist
 static int dlistlen = 0;
 static int dlisttotlen = 0;
 
-/* add NAME to the resource table, where TYPE is RAW or WAW */
+
+static void fail (const char *, ...);
+static void warn (const char *, ...);
+static struct rdep * insert_resource (const char *, enum ia64_dependency_mode);
+static int  deplist_equals (struct deplist *, struct deplist *);
+static short insert_deplist (int, unsigned short *);
+static short insert_dependencies (int, unsigned short *, int, unsigned short *);
+static void  mark_used (struct iclass *, int);
+static int  fetch_insn_class (const char *, int);
+static int  sub_compare (const void *, const void *);
+static void load_insn_classes (void);
+static void parse_resource_users (const char *, int **, int *, int **);
+static int  parse_semantics (char *);
+static void add_dep (const char *, const char *, const char *, int, int, char *, int);
+static void load_depfile (const char *, enum ia64_dependency_mode);
+static void load_dependencies (void);
+static int  irf_operand (int, const char *);
+static int  in_iclass_mov_x (struct ia64_opcode *, struct iclass *, const char *, const char *);
+static int  in_iclass (struct ia64_opcode *, struct iclass *, const char *, const char *, int *);
+static int  lookup_regindex (const char *, int);
+static int  lookup_specifier (const char *);
+static void print_dependency_table (void);
+static struct string_entry * insert_string (char *);
+static void gen_dis_table (struct bittree *);
+static void print_dis_table (void);
+static void generate_disassembler (void);
+static void print_string_table (void);
+static int  completer_entries_eq (struct completer_entry *, struct completer_entry *);
+static struct completer_entry * insert_gclist (struct completer_entry *);
+static int  get_prefix_len (const char *);
+static void compute_completer_bits (struct main_entry *, struct completer_entry *);
+static void collapse_redundant_completers (void);
+static int  insert_opcode_dependencies (struct ia64_opcode *, struct completer_entry *);
+static void insert_completer_entry (struct ia64_opcode *, struct main_entry *, int);
+static void print_completer_entry (struct completer_entry *);
+static void print_completer_table (void);
+static int  opcodes_eq (struct ia64_opcode *, struct ia64_opcode *);
+static void add_opcode_entry (struct ia64_opcode *);
+static void print_main_table (void);
+static void shrink (struct ia64_opcode *);
+static void print_version (void);
+static void usage (FILE *, int);
+static void finish_distable (void);
+static void insert_bit_table_ent (struct bittree *, int, ia64_insn, ia64_insn, int, int, int);
+static void add_dis_entry (struct bittree *, ia64_insn, ia64_insn, int, struct completer_entry *, int);
+static void compact_distree (struct bittree *);
+static struct bittree * make_bittree_entry (void);
+static struct disent * add_dis_table_ent (struct disent *, int, int, int);
+
+\f
+static void
+fail (const char *message, ...)
+{
+  va_list args;
+  
+  va_start (args, message);
+  fprintf (stderr, _("%s: Error: "), program_name);
+  vfprintf (stderr, message, args);
+  va_end (args);
+  xexit (1);
+}
+
+static void
+warn (const char *message, ...)
+{
+  va_list args;
+
+  va_start (args, message);
+
+  fprintf (stderr, _("%s: Warning: "), program_name);
+  vfprintf (stderr, message, args);
+  va_end (args);
+}
+
+/* Add NAME to the resource table, where TYPE is RAW or WAW.  */
 static struct rdep *
 insert_resource (const char *name, enum ia64_dependency_mode type)
 {
@@ -248,7 +329,7 @@ insert_resource (const char *name, enum ia64_dependency_mode type)
   return rdeps[rdepslen++];
 }
 
-/* are the lists of dependency indexes equivalent? */
+/* Are the lists of dependency indexes equivalent?  */
 static int
 deplist_equals (struct deplist *d1, struct deplist *d2)
 {
@@ -257,55 +338,48 @@ deplist_equals (struct deplist *d1, struct deplist *d2)
   if (d1->len != d2->len)
     return 0;
 
-  for (i=0;i < d1->len;i++)
-    {
-      if (d1->deps[i] != d2->deps[i])
-        return 0;
-    }
+  for (i = 0; i < d1->len; i++)
+    if (d1->deps[i] != d2->deps[i])
+      return 0;
 
   return 1;
 }
 
-/* add the list of dependencies to the list of dependency lists */
+/* Add the list of dependencies to the list of dependency lists.  */
 static short
-insert_deplist(int count, unsigned short *deps)
+insert_deplist (int count, unsigned short *deps)
 {
-  /* sort the list, then see if an equivalent list exists already.
-     this results in a much smaller set of dependency lists
-   */
+  /* Sort the list, then see if an equivalent list exists already.
+     this results in a much smaller set of dependency lists.  */
   struct deplist *list;
   char set[0x10000];
   int i;
 
-  memset ((void *)set, 0, sizeof(set));
-  for (i=0;i < count;i++)
+  memset ((void *)set, 0, sizeof (set));
+  for (i = 0; i < count; i++)
     set[deps[i]] = 1;
+
   count = 0;
-  for (i=0;i < (int)sizeof(set);i++)
+  for (i = 0; i < (int) sizeof (set); i++)
     if (set[i])
       ++count;
 
-  list = tmalloc(struct deplist);
+  list = tmalloc (struct deplist);
   list->len = count;
-  list->deps = (unsigned short *)malloc (sizeof(unsigned short) * count);
-  for (i=0, count=0;i < (int)sizeof(set);i++)
-    {
-      if (set[i])
-        {
-          list->deps[count++] = i;
-        }
-    }
+  list->deps = (unsigned short *) malloc (sizeof (unsigned short) * count);
 
-  /* does this list exist already? */
-  for (i=0;i < dlistlen;i++)
-    {
-      if (deplist_equals (list, dlists[i]))
-        {
-          free (list->deps);
-          free (list);
-          return i;
-        }
-    }
+  for (i = 0, count = 0; i < (int) sizeof (set); i++)
+    if (set[i])
+      list->deps[count++] = i;
+
+  /* Does this list exist already?  */
+  for (i = 0; i < dlistlen; i++)
+    if (deplist_equals (list, dlists[i]))
+      {
+       free (list->deps);
+       free (list);
+       return i;
+      }
 
   if (dlistlen == dlisttotlen)
     {
@@ -318,7 +392,7 @@ insert_deplist(int count, unsigned short *deps)
   return dlistlen++;
 }
 
-/* add the given pair of dependency lists to the opcode dependency list */
+/* Add the given pair of dependency lists to the opcode dependency list.  */
 static short
 insert_dependencies (int nchks, unsigned short *chks, 
                      int nregs, unsigned short *regs)
@@ -333,13 +407,12 @@ insert_dependencies (int nchks, unsigned short *chks,
   if (nchks > 0)
     chkind = insert_deplist (nchks, chks);
 
-  for (i=0;i < opdeplen;i++)
-    {
-      if (opdeps[i]->chk == chkind 
-          && opdeps[i]->reg == regind)
-        return i;
-    }
-  pair = tmalloc(struct opdep);
+  for (i = 0; i < opdeplen; i++)
+    if (opdeps[i]->chk == chkind 
+       && opdeps[i]->reg == regind)
+      return i;
+
+  pair = tmalloc (struct opdep);
   pair->chk = chkind;
   pair->reg = regind;
   
@@ -363,20 +436,17 @@ mark_used (struct iclass *ic, int clear_terminals)
   if (clear_terminals)
     ic->terminal_resolved = 1;
 
-  for (i=0;i < ic->nsubs;i++)
-    {
-      mark_used (ics[ic->subs[i]], clear_terminals);
-    }
-  for (i=0;i < ic->nxsubs;i++)
-    {
-      mark_used (ics[ic->xsubs[i]], clear_terminals);
-    }
+  for (i = 0; i < ic->nsubs; i++)
+    mark_used (ics[ic->subs[i]], clear_terminals);
+
+  for (i = 0; i < ic->nxsubs; i++)
+    mark_used (ics[ic->xsubs[i]], clear_terminals);
 }
 
-/* look up an instruction class; if CREATE make a new one if none found;
-   returns the index into the insn class array */
+/* Look up an instruction class; if CREATE make a new one if none found;
+   returns the index into the insn class array */
 static int
-fetch_insn_class(const char *full_name, int create)
+fetch_insn_class (const char *full_name, int create)
 {
   char *name;
   char *notestr;
@@ -414,14 +484,14 @@ fetch_insn_class(const char *full_name, int create)
   if (notestr)
     {
       char *nextnotestr;
+
       note = atoi (notestr + 1);
       if ((nextnotestr = strchr (notestr + 1, '+')) != NULL)
         {
           if (strcmp (notestr, "+1+13") == 0)
             note = 13;
           else if (!xsect || nextnotestr < xsect)
-            fprintf (stderr, "Warning: multiple note %s not handled\n",
-                     notestr);
+            warn (_("multiple note %s not handled\n"), notestr);
         }
     }
 
@@ -436,8 +506,8 @@ fetch_insn_class(const char *full_name, int create)
         *comment = 0;
     }
 
-  for (i=0;i < iclen;i++)
-    if (strcmp(name, ics[i]->name) == 0
+  for (i = 0; i < iclen; i++)
+    if (strcmp (name, ics[i]->name) == 0
         && ((comment == NULL && ics[i]->comment == NULL)
             || (comment != NULL && ics[i]->comment != NULL
                 && strncmp (ics[i]->comment, comment, 
@@ -448,40 +518,44 @@ fetch_insn_class(const char *full_name, int create)
   if (!create)
     return -1;
 
-  /* doesn't exist, so make a new one */
+  /* Doesn't exist, so make a new one.  */
   if (iclen == ictotlen)
     {
       ictotlen += 20;
       ics = (struct iclass **)
-        xrealloc(ics, (ictotlen)*sizeof(struct iclass *));
+        xrealloc (ics, (ictotlen) * sizeof (struct iclass *));
     }
+
   ind = iclen++;
-  ics[ind] = tmalloc(struct iclass);
-  memset((void *)ics[ind], 0, sizeof(struct iclass));
-  ics[ind]->name = xstrdup(name);
+  ics[ind] = tmalloc (struct iclass);
+  memset ((void *)ics[ind], 0, sizeof (struct iclass));
+  ics[ind]->name = xstrdup (name);
   ics[ind]->is_class = is_class;
   ics[ind]->orphan = 1;
 
   if (comment)
     {
       ics[ind]->comment = xstrdup (comment + 1);
-      ics[ind]->comment[strlen(ics[ind]->comment)-1] = 0;
+      ics[ind]->comment[strlen (ics[ind]->comment)-1] = 0;
     }
+
   if (notestr)
     ics[ind]->note = note;
 
-  /* if it's a composite class, there's a comment or note, look for an
-     existing class or terminal with the same name. */ 
+  /* If it's a composite class, there's a comment or note, look for an
+     existing class or terminal with the same name.  */
   if ((xsect || comment || notestr) && is_class)
     {
       /* First, populate with the class we're based on.  */
       char *subname = name;
+
       if (xsect)
         *xsect = 0;
       else if (comment)
         *comment = 0;
       else if (notestr)
         *notestr = 0;
+
       ics[ind]->nsubs = 1;
       ics[ind]->subs = tmalloc(int);
       ics[ind]->subs[0] = fetch_insn_class (subname, 1);;
@@ -490,6 +564,7 @@ fetch_insn_class(const char *full_name, int create)
   while (xsect)
     {
       char *subname = xsect + 1;
+
       xsect = strchr (subname, '\\');
       if (xsect)
         *xsect = 0;
@@ -501,8 +576,8 @@ fetch_insn_class(const char *full_name, int create)
   return ind;
 }
 
-/* for sorting a class's sub-class list only; make sure classes appear before
-   terminals  */
+/* For sorting a class's sub-class list only; make sure classes appear before
+   terminals.  */
 static int
 sub_compare (const void *e1, const void *e2)
 {
@@ -521,41 +596,39 @@ sub_compare (const void *e1, const void *e2)
 }
 
 static void
-load_insn_classes()
+load_insn_classes (void)
 {
-  FILE *fp = fopen("ia64-ic.tbl", "r");
+  FILE *fp = fopen ("ia64-ic.tbl", "r");
   char buf[2048];
 
-  if (fp == NULL){
-    fprintf (stderr, "Can't find ia64-ic.tbl for reading\n");
-    exit(1);
-  }
+  if (fp == NULL)
+    fail (_("can't find ia64-ic.tbl for reading\n"));
 
-  /* discard first line */
+  /* Discard first line.  */
   fgets (buf, sizeof(buf), fp);
 
-  while (!feof(fp))
+  while (!feof (fp))
     {
       int iclass;
       char *name;
       char *tmp;
       
-      if (fgets (buf, sizeof(buf), fp) == NULL)
+      if (fgets (buf, sizeof (buf), fp) == NULL)
         break;
       
-      while (ISSPACE (buf[strlen(buf)-1]))
-        buf[strlen(buf)-1] = '\0';
+      while (ISSPACE (buf[strlen (buf) - 1]))
+        buf[strlen (buf) - 1] = '\0';
 
       name = tmp = buf;
       while (*tmp != ';')
         {
           ++tmp;
-          if (tmp == buf + sizeof(buf))
+          if (tmp == buf + sizeof (buf))
             abort ();
         }
       *tmp++ = '\0';
 
-      iclass = fetch_insn_class(name, 1);
+      iclass = fetch_insn_class (name, 1);
       ics[iclass]->is_class = 1;
 
       if (strcmp (name, "none") == 0)
@@ -565,7 +638,7 @@ load_insn_classes()
           continue;
         }
 
-      /* for this class, record all sub-classes */
+      /* For this class, record all sub-classes.  */
       while (*tmp)
         {
           char *subname;
@@ -574,44 +647,43 @@ load_insn_classes()
           while (*tmp && ISSPACE (*tmp))
             {
               ++tmp;
-              if (tmp == buf + sizeof(buf))
-                abort();
+              if (tmp == buf + sizeof (buf))
+                abort ();
             }
           subname = tmp;
           while (*tmp && *tmp != ',')
             {
               ++tmp;
-              if (tmp == buf + sizeof(buf))
-                abort();
+              if (tmp == buf + sizeof (buf))
+                abort ();
             }
           if (*tmp == ',')
             *tmp++ = '\0';
           
           ics[iclass]->subs = (int *)
-            xrealloc((void *)ics[iclass]->subs, 
-                     (ics[iclass]->nsubs+1)*sizeof(int));
+            xrealloc ((void *)ics[iclass]->subs, 
+                     (ics[iclass]->nsubs + 1) * sizeof (int));
 
-          sub = fetch_insn_class(subname, 1);
+          sub = fetch_insn_class (subname, 1);
           ics[iclass]->subs = (int *)
-            xrealloc(ics[iclass]->subs, (ics[iclass]->nsubs+1)*sizeof(int));
+            xrealloc (ics[iclass]->subs, (ics[iclass]->nsubs + 1) * sizeof (int));
           ics[iclass]->subs[ics[iclass]->nsubs++] = sub;
         }
-      /* make sure classes come before terminals */
+
+      /* Make sure classes come before terminals.  */
       qsort ((void *)ics[iclass]->subs, 
              ics[iclass]->nsubs, sizeof(int), sub_compare);
     }
-  fclose(fp);
+  fclose (fp);
 
   if (debug)
-    {
-      printf ("%d classes\n", iclen);
-    }
+    printf ("%d classes\n", iclen);
 }
 
-/* extract the insn classes from the given line */
+/* Extract the insn classes from the given line.  */
 static void
-parse_resource_users(ref, usersp, nusersp, notesp)
-  char *ref;
+parse_resource_users (ref, usersp, nusersp, notesp)
+  const char *ref;
   int **usersp;
   int *nusersp;
   int **notesp;
@@ -641,53 +713,49 @@ parse_resource_users(ref, usersp, nusersp, notesp)
       c = *tmp;
       *tmp++ = '\0';
       
-      xsect = strchr(name, '\\');
-      if ((notestr = strstr(name, "+")) != NULL)
+      xsect = strchr (name, '\\');
+      if ((notestr = strstr (name, "+")) != NULL)
         {
           char *nextnotestr;
+
           note = atoi (notestr + 1);
           if ((nextnotestr = strchr (notestr + 1, '+')) != NULL)
             {
-              /* note 13 always implies note 1 */
+              /* Note 13 always implies note 1.  */
               if (strcmp (notestr, "+1+13") == 0)
                 note = 13;
               else if (!xsect || nextnotestr < xsect)
-                fprintf (stderr, "Warning: multiple note %s not handled\n",
-                         notestr);
+                warn (_("multiple note %s not handled\n"), notestr);
             }
           if (!xsect)
             *notestr = '\0';
         }
       else 
         note = 0;
-      
+
       /* All classes are created when the insn class table is parsed;
          Individual instructions might not appear until the dependency tables
          are read.  Only create new classes if it's *not* an insn class,
          or if it's a composite class (which wouldn't necessarily be in the IC
-         table).
-      */
-      if (strncmp(name, "IC:", 3) != 0 || xsect != NULL)
+         table).  */
+      if (strncmp (name, "IC:", 3) != 0 || xsect != NULL)
         create = 1;
       
-      iclass = fetch_insn_class(name, create);
+      iclass = fetch_insn_class (name, create);
       if (iclass != -1)
         {
           users = (int *)
-            xrealloc ((void *)users,(count+1)*sizeof(int));
+            xrealloc ((void *) users,(count + 1) * sizeof (int));
           notes = (int *)
-            xrealloc ((void *)notes,(count+1)*sizeof(int));
+            xrealloc ((void *) notes,(count + 1) * sizeof (int));
           notes[count] = note;
           users[count++] = iclass;
           mark_used (ics[iclass], 0);
         }
-      else
-        {
-          if (debug)
-            printf("Class %s not found\n", name);
-        }
+      else if (debug)
+       printf("Class %s not found\n", name);
     }
-  /* update the return values */
+  /* Update the return values.  */
   *usersp = users;
   *nusersp = count;
   *notesp = notes;
@@ -723,10 +791,10 @@ add_dep (const char *name, const char *chk, const char *reg,
   struct rdep *rs;
 
   rs = insert_resource (name, mode);
-  parse_resource_users (chk, &rs->chks, &rs->nchks,
-                        &rs->chknotes);
-  parse_resource_users (reg, &rs->regs, &rs->nregs,
-                        &rs->regnotes);
+
+  parse_resource_users (chk, &rs->chks, &rs->nchks, &rs->chknotes);
+  parse_resource_users (reg, &rs->regs, &rs->nregs, &rs->regnotes);
+
   rs->semantics = semantics;
   rs->extra = extra;
   rs->waw_special = flag;
@@ -735,16 +803,14 @@ add_dep (const char *name, const char *chk, const char *reg,
 static void
 load_depfile (const char *filename, enum ia64_dependency_mode mode)
 {
-  FILE *fp = fopen(filename, "r");
+  FILE *fp = fopen (filename, "r");
   char buf[1024];
 
-  if (fp == NULL){
-    fprintf (stderr, "Can't find %s for reading\n", filename);
-    exit(1);
-  }
+  if (fp == NULL)
+    fail (_("can't find %s for reading\n"), filename);
 
-  fgets(buf, sizeof(buf), fp);
-  while (!feof(fp))
+  fgets (buf, sizeof(buf), fp);
+  while (!feof (fp))
     {
       char *name, *tmp;
       int semantics;
@@ -754,8 +820,8 @@ load_depfile (const char *filename, enum ia64_dependency_mode mode)
       if (fgets (buf, sizeof(buf), fp) == NULL)
         break;
 
-      while (ISSPACE (buf[strlen(buf)-1]))
-        buf[strlen(buf)-1] = '\0';
+      while (ISSPACE (buf[strlen (buf) - 1]))
+        buf[strlen (buf) - 1] = '\0';
 
       name = tmp = buf;
       while (*tmp != ';')
@@ -783,7 +849,7 @@ load_depfile (const char *filename, enum ia64_dependency_mode mode)
 
       /* For WAW entries, if the chks and regs differ, we need to enter the
          entries in both positions so that the tables will be parsed properly,
-         without a lot of extra work */
+         without a lot of extra work */
       if (mode == IA64_DV_WAW && strcmp (regp, chkp) != 0)
         {
           add_dep (name, chkp, regp, semantics, mode, extra, 0);
@@ -794,21 +860,21 @@ load_depfile (const char *filename, enum ia64_dependency_mode mode)
           add_dep (name, chkp, regp, semantics, mode, extra, 0);
         }
     }
-  fclose(fp);
+  fclose (fp);
 }
 
 static void
-load_dependencies()
+load_dependencies (void)
 {
   load_depfile ("ia64-raw.tbl", IA64_DV_RAW);
   load_depfile ("ia64-waw.tbl", IA64_DV_WAW);
   load_depfile ("ia64-war.tbl", IA64_DV_WAR);
 
   if (debug)
-      printf ("%d RAW/WAW/WAR dependencies\n", rdepslen);
+    printf ("%d RAW/WAW/WAR dependencies\n", rdepslen);
 }
 
-/* is the given operand an indirect register file operand? */
+/* Is the given operand an indirect register file operand?  */
 static int 
 irf_operand (int op, const char *field)
 {
@@ -832,8 +898,8 @@ irf_operand (int op, const char *field)
     }
 }
 
-/* handle mov_ar, mov_br, mov_cr, mov_indirect, mov_ip, mov_pr, mov_psr, and
-   mov_um insn classes */
+/* Handle mov_ar, mov_br, mov_cr, mov_indirect, mov_ip, mov_pr, mov_psr, and
+   mov_um insn classes */
 static int
 in_iclass_mov_x (struct ia64_opcode *idesc, struct iclass *ic, 
                  const char *format, const char *field)
@@ -947,11 +1013,10 @@ in_iclass_mov_x (struct ia64_opcode *idesc, struct iclass *ic,
   return 0;
 }
 
-
-/* is the given opcode in the given insn class? */
+/* Is the given opcode in the given insn class?  */
 static int
-in_iclass(struct ia64_opcode *idesc, struct iclass *ic, 
-          const char *format, const char *field, int *notep)
+in_iclass (struct ia64_opcode *idesc, struct iclass *ic, 
+          const char *format, const char *field, int *notep)
 {
   int i;
   int resolved = 0;
@@ -960,15 +1025,14 @@ in_iclass(struct ia64_opcode *idesc, struct iclass *ic,
     {
       if (!strncmp (ic->comment, "Format", 6))
         {
-          /* assume that the first format seen is the most restrictive, and
-             only keep a later one if it looks like it's more restrictive. */
+          /* Assume that the first format seen is the most restrictive, and
+             only keep a later one if it looks like it's more restrictive.  */
           if (format)
             {
               if (strlen (ic->comment) < strlen (format))
                 {
-                  fprintf (stderr, "Warning: most recent format '%s'\n"
-                           "appears more restrictive than '%s'\n",
-                           ic->comment, format);
+                  warn (_("most recent format '%s'\nappears more restrictive than '%s'\n"),
+                       ic->comment, format);
                   format = ic->comment; 
                 }
             }
@@ -978,15 +1042,15 @@ in_iclass(struct ia64_opcode *idesc, struct iclass *ic,
       else if (!strncmp (ic->comment, "Field", 5))
         {
           if (field)
-            fprintf (stderr, "Overlapping field %s->%s\n",
-                     ic->comment, field);
+            warn (_("overlapping field %s->%s\n"),
+                 ic->comment, field);
           field = ic->comment;
         }
     }
 
-  /* an insn class matches anything that is the same followed by completers,
+  /* An insn class matches anything that is the same followed by completers,
      except when the absence and presence of completers constitutes different
-     instructions */
+     instructions */
   if (ic->nsubs == 0 && ic->nxsubs == 0)
     {
       int is_mov = strncmp (idesc->name, "mov", 3) == 0;
@@ -997,26 +1061,25 @@ in_iclass(struct ia64_opcode *idesc, struct iclass *ic,
                   && (idesc->name[len] == '\0' 
                       || idesc->name[len] == '.'));
 
-      /* all break and nop variations must match exactly */
+      /* All break and nop variations must match exactly.  */
       if (resolved &&
           (strcmp (ic->name, "break") == 0
            || strcmp (ic->name, "nop") == 0))
         resolved = strcmp (ic->name, idesc->name) == 0;
 
-      /* assume restrictions in the FORMAT/FIELD negate resolution,
-         unless specifically allowed by clauses in this block */
+      /* Assume restrictions in the FORMAT/FIELD negate resolution,
+         unless specifically allowed by clauses in this block */
       if (resolved && field)
         {
-          /* check Field(sf)==sN against opcode sN */
+          /* Check Field(sf)==sN against opcode sN.  */
           if (strstr(field, "(sf)==") != NULL)
             {
               char *sf;
+
               if ((sf = strstr (idesc->name, ".s")) != 0)
-                {
-                  resolved = strcmp (sf + 1, strstr (field, "==") + 2) == 0;
-                }
+               resolved = strcmp (sf + 1, strstr (field, "==") + 2) == 0;
             }
-          /* check Field(lftype)==XXX */
+          /* Check Field(lftype)==XXX.  */
           else if (strstr (field, "(lftype)") != NULL)
             {
               if (strstr (idesc->name, "fault") != NULL)
@@ -1024,7 +1087,7 @@ in_iclass(struct ia64_opcode *idesc, struct iclass *ic,
               else
                 resolved = strstr (field, "fault") == NULL;
             }
-          /* handle Field(ctype)==XXX */
+          /* Handle Field(ctype)==XXX.  */
           else if (strstr (field, "(ctype)") != NULL)
             {
               if (strstr (idesc->name, "or.andcm"))
@@ -1045,6 +1108,7 @@ in_iclass(struct ia64_opcode *idesc, struct iclass *ic,
                 resolved = strcmp (field, "Field(ctype)==") == 0;
             }
         }
+
       if (resolved && format)
         {
           if (strncmp (idesc->name, "dep", 3) == 0
@@ -1075,8 +1139,8 @@ in_iclass(struct ia64_opcode *idesc, struct iclass *ic,
             resolved = 0;
         }
 
-      /* misc brl variations ('.cond' is optional); 
-         plain brl matches brl.cond */
+      /* Misc brl variations ('.cond' is optional); 
+         plain brl matches brl.cond */
       if (!resolved
           && (strcmp (idesc->name, "brl") == 0
               || strncmp (idesc->name, "brl.", 4) == 0)
@@ -1085,7 +1149,7 @@ in_iclass(struct ia64_opcode *idesc, struct iclass *ic,
           resolved = 1;
         }
 
-      /* misc br variations ('.cond' is optional) */
+      /* Misc br variations ('.cond' is optional).  */
       if (!resolved 
           && (strcmp (idesc->name, "br") == 0
               || strncmp (idesc->name, "br.", 3) == 0)
@@ -1100,81 +1164,77 @@ in_iclass(struct ia64_opcode *idesc, struct iclass *ic,
             resolved = 1;
         }
 
-      /* probe variations */
+      /* probe variations */
       if (!resolved && strncmp (idesc->name, "probe", 5) == 0)
         {
           resolved = strcmp (ic->name, "probe") == 0 
             && !((strstr (idesc->name, "fault") != NULL) 
                  ^ (format && strstr (format, "M40") != NULL));
         }
-      /* mov variations */
+
+      /* mov variations.  */
       if (!resolved && is_mov)
         {
           if (plain_mov)
             {
-              /* mov alias for fmerge */
+              /* mov alias for fmerge */
               if (strcmp (ic->name, "fmerge") == 0)
                 {
                   resolved = idesc->operands[0] == IA64_OPND_F1
                     && idesc->operands[1] == IA64_OPND_F3;
                 }
-              /* mov alias for adds (r3 or imm14) */
+              /* mov alias for adds (r3 or imm14) */
               else if (strcmp (ic->name, "adds") == 0)
                 {
                   resolved = (idesc->operands[0] == IA64_OPND_R1
                               && (idesc->operands[1] == IA64_OPND_R3
                                   || (idesc->operands[1] == IA64_OPND_IMM14)));
                 }
-              /* mov alias for addl */
+              /* mov alias for addl */
               else if (strcmp (ic->name, "addl") == 0)
                 {
                   resolved = idesc->operands[0] == IA64_OPND_R1
                     && idesc->operands[1] == IA64_OPND_IMM22;
                 }
             }
-          /* some variants of mov and mov.[im] */
+
+          /* Some variants of mov and mov.[im].  */
           if (!resolved && strncmp (ic->name, "mov_", 4) == 0)
-            {
-              resolved = in_iclass_mov_x (idesc, ic, format, field);
-            }
+           resolved = in_iclass_mov_x (idesc, ic, format, field);
         }
 
-      /* keep track of this so we can flag any insn classes which aren't 
-         mapped onto at least one real insn */
+      /* Keep track of this so we can flag any insn classes which aren't 
+         mapped onto at least one real insn */
       if (resolved)
-        {
-          ic->terminal_resolved = 1;
-        }
+       ic->terminal_resolved = 1;
     }
-  else for (i=0;i < ic->nsubs;i++)
+  else for (i = 0; i < ic->nsubs; i++)
     {
-      if (in_iclass(idesc, ics[ic->subs[i]], format, field, notep))
+      if (in_iclass (idesc, ics[ic->subs[i]], format, field, notep))
         {
           int j;
-          for (j=0;j < ic->nxsubs;j++)
-            {
-              if (in_iclass(idesc, ics[ic->xsubs[j]], NULL, NULL, NULL))
-                return 0;
-            }
+
+          for (j = 0; j < ic->nxsubs; j++)
+           if (in_iclass (idesc, ics[ic->xsubs[j]], NULL, NULL, NULL))
+             return 0;
+
           if (debug > 1)
-            printf ("%s is in IC %s\n",
-                    idesc->name, ic->name);
+            printf ("%s is in IC %s\n", idesc->name, ic->name);
+
           resolved = 1;
           break;
         }
     }
   
-  /* If it's in this IC, add the IC note (if any) to the insn */
+  /* If it's in this IC, add the IC note (if any) to the insn */
   if (resolved)
     {
       if (ic->note && notep)
         {
           if (*notep && *notep != ic->note)
-            {
-              fprintf (stderr, "Warning: overwriting note %d with note %d"
-                       "(IC:%s)\n",
-                       *notep, ic->note, ic->name);
-            }
+           warn (_("overwriting note %d with note %d (IC:%s)\n"),
+                 *notep, ic->note, ic->name);
+
           *notep = ic->note;
         }
     }
@@ -1355,8 +1415,8 @@ lookup_specifier (const char *name)
       if (strstr (name, "PR%, % in 16 ") != NULL)
        return IA64_RS_PRr;
 
-      fprintf (stderr, "Warning! Don't know how to specify %% dependency %s\n",
-               name);
+      warn (_("don't know how to specify %% dependency %s\n"),
+           name);
     }
   else if (strchr (name, '#'))
     {
@@ -1377,8 +1437,8 @@ lookup_specifier (const char *name)
       if (strstr (name, "RR#") != NULL)
         return IA64_RS_RR;
       
-      fprintf (stderr, "Warning! Don't know how to specify # dependency %s\n",
-               name);
+      warn (_("Don't know how to specify # dependency %s\n"),
+           name);
     }
   else if (strncmp (name, "AR[FPSR]", 8) == 0)
     return IA64_RS_AR_FPSR;
@@ -1402,7 +1462,7 @@ lookup_specifier (const char *name)
   return IA64_RS_ANY;
 }
 
-void
+static void
 print_dependency_table ()
 {
   int i, j;
@@ -1415,58 +1475,59 @@ print_dependency_table ()
             {
               if (!ics[i]->nsubs)
                 {
-                  fprintf (stderr, "Warning: IC:%s", ics[i]->name);
                   if (ics[i]->comment)
-                    fprintf (stderr, "[%s]", ics[i]->comment);
-                  fprintf (stderr, " has no terminals or sub-classes\n");
+                   warn (_("IC:%s [%s] has no terminals or sub-classes\n"),
+                         ics[i]->name, ics[i]->comment);
+                 else
+                   warn (_("IC:%s has no terminals or sub-classes\n"),
+                         ics[i]->name);
                 }
             }
           else 
             {
               if (!ics[i]->terminal_resolved && !ics[i]->orphan)
                 {
-                  fprintf(stderr, "Warning: no insns mapped directly to "
-                          "terminal IC %s", ics[i]->name);
                   if (ics[i]->comment)
-                    fprintf(stderr, "[%s] ", ics[i]->comment);
-                  fprintf(stderr, "\n");
+                   warn (_("no insns mapped directly to terminal IC %s [%s]"),
+                         ics[i]->name, ics[i]->comment);
+                 else
+                   warn (_("no insns mapped directly to terminal IC %s\n"),
+                         ics[i]->name);
                 }
             }
         }
 
-      for (i=0;i < iclen;i++)
+      for (i = 0; i < iclen; i++)
         {
           if (ics[i]->orphan)
             {
               mark_used (ics[i], 1);
-              fprintf (stderr, "Warning: class %s is defined but not used\n", 
-                       ics[i]->name);
+              warn (_("class %s is defined but not used\n"),
+                   ics[i]->name);
             }
         }
 
-      if (debug > 1) for (i=0;i < rdepslen;i++)
-        {  
-          static const char *mode_str[] = { "RAW", "WAW", "WAR" };
-          if (rdeps[i]->total_chks == 0)
-            {
-              fprintf (stderr, "Warning: rsrc %s (%s) has no chks%s\n", 
-                       rdeps[i]->name, mode_str[rdeps[i]->mode],
-                       rdeps[i]->total_regs ? "" : " or regs");
-            }
-          else if (rdeps[i]->total_regs == 0)
-            {
-              fprintf (stderr, "Warning: rsrc %s (%s) has no regs\n", 
-                       rdeps[i]->name, mode_str[rdeps[i]->mode]);
-            }
-        }
+      if (debug > 1)
+       for (i = 0; i < rdepslen; i++)
+         {  
+           static const char *mode_str[] = { "RAW", "WAW", "WAR" };
+
+           if (rdeps[i]->total_chks == 0)
+             warn (_("Warning: rsrc %s (%s) has no chks%s\n"), 
+                   rdeps[i]->name, mode_str[rdeps[i]->mode],
+                   rdeps[i]->total_regs ? "" : " or regs");
+           else if (rdeps[i]->total_regs == 0)
+             warn (_("rsrc %s (%s) has no regs\n"),
+                   rdeps[i]->name, mode_str[rdeps[i]->mode]);
+         }
     }
 
-  /* the dependencies themselves */
+  /* The dependencies themselves.  */
   printf ("static const struct ia64_dependency\ndependencies[] = {\n");
-  for (i=0;i < rdepslen;i++)
+  for (i = 0; i < rdepslen; i++)
     {
       /* '%', '#', AR[], CR[], or PSR. indicates we need to specify the actual
-         resource used */ 
+         resource used */ 
       int specifier = lookup_specifier (rdeps[i]->name);
       int regindex = lookup_regindex (rdeps[i]->name, specifier);
 
@@ -1481,7 +1542,7 @@ print_dependency_table ()
     }
   printf ("};\n\n");
 
-  /* and dependency lists */
+  /* And dependency lists.  */
   for (i=0;i < dlistlen;i++)
     {
       int len = 2;
@@ -1498,11 +1559,11 @@ print_dependency_table ()
       printf ("\n};\n\n");
     }
 
-  /* and opcode dependency list */
+  /* And opcode dependency list.  */
   printf ("#define NELS(X) (sizeof(X)/sizeof(X[0]))\n");
   printf ("static const struct ia64_opcode_dependency\n");
   printf ("op_dependencies[] = {\n");
-  for (i=0;i < opdeplen;i++)
+  for (i = 0; i < opdeplen; i++)
     {
       printf ("  { ");
       if (opdeps[i]->chk == -1)
@@ -1519,11 +1580,9 @@ print_dependency_table ()
 }
 
 \f
-/* Add STR to the string table. */
-
+/* Add STR to the string table.  */
 static struct string_entry *
-insert_string (str)
-     char *str;
+insert_string (char *str)
 {
   int start = 0, end = strtablen;
   int i, x;
@@ -1546,13 +1605,9 @@ insert_string (str)
     }
 
   if (strcmp (str, string_table[strtablen - 1]->s) > 0)
-    {
-      i = end;
-    }
+    i = end;
   else if (strcmp (str, string_table[0]->s) < 0)
-    {
-      i = 0;
-    }
+    i = 0;
   else
     {
       while (1)
@@ -1561,52 +1616,43 @@ insert_string (str)
 
          i = (start + end) / 2;
          c = strcmp (str, string_table[i]->s);
+
          if (c < 0)
-           {
-             end = i - 1;
-           }
+           end = i - 1;
          else if (c == 0)
-           {
-             return string_table[i];
-           }
+           return string_table[i];
          else
-           {
-             start = i + 1;
-           }
+           start = i + 1;
+
          if (start > end)
-           {
-             break;
-           }
+           break;
        }
     }
+
   for (; i > 0 && i < strtablen; i--)
-    {
-      if (strcmp (str, string_table[i - 1]->s) > 0)
-       {
-         break;
-       }
-    }
+    if (strcmp (str, string_table[i - 1]->s) > 0)
+      break;
+
   for (; i < strtablen; i++)
-    {
-      if (strcmp (str, string_table[i]->s) < 0)
-       {
-         break;
-       }
-    }
+    if (strcmp (str, string_table[i]->s) < 0)
+      break;
+
   for (x = strtablen - 1; x >= i; x--)
     {
       string_table[x + 1] = string_table[x];
       string_table[x + 1]->num = x + 1;
     }
+
   string_table[i] = tmalloc (struct string_entry);
   string_table[i]->s = xstrdup (str);
   string_table[i]->num = i;
   strtablen++;
+
   return string_table[i];
 }
 \f
-struct bittree *
-make_bittree_entry ()
+static struct bittree *
+make_bittree_entry (void)
 {
   struct bittree *res = tmalloc (struct bittree);
 
@@ -1618,8 +1664,9 @@ make_bittree_entry ()
   res->bits_to_skip = 0;
   return res;
 }
 \f
-struct disent *
+static struct disent *
 add_dis_table_ent (which, insn, order, completer_index)
      struct disent *which;
      int insn;
@@ -1635,9 +1682,8 @@ add_dis_table_ent (which, insn, order, completer_index)
 
       ent->nextcnt++;
       while (ent->nexte != NULL)
-       {
-         ent = ent->nexte;
-       }
+       ent = ent->nexte;
+
       ent = (ent->nexte = tmalloc (struct disent));
     }
   else
@@ -1661,7 +1707,7 @@ add_dis_table_ent (which, insn, order, completer_index)
   return which;
 }
 \f
-void
+static void
 finish_distable ()
 {
   struct disent *ent = disinsntable;
@@ -1675,7 +1721,7 @@ finish_distable ()
     }
 }
 \f
-void
+static void
 insert_bit_table_ent (curr_ent, bit, opcode, mask, 
                       opcodenum, order, completer_index)
      struct bittree *curr_ent;
@@ -1702,13 +1748,10 @@ insert_bit_table_ent (curr_ent, bit, opcode, mask,
   m = ((ia64_insn) 1) << bit;
 
   if (mask & m)
-    {
-      b = (opcode & m) ? 1 : 0;
-    }
+    b = (opcode & m) ? 1 : 0;
   else
-    {
-      b = 2;
-    }
+    b = 2;
+
   next = curr_ent->bits[b];
   if (next == NULL)
     {
@@ -1719,7 +1762,7 @@ insert_bit_table_ent (curr_ent, bit, opcode, mask,
                        completer_index);
 }
 \f
-void
+static void
 add_dis_entry (first, opcode, mask, opcodenum, ent, completer_index)
      struct bittree *first;
      ia64_insn opcode;
@@ -1729,15 +1772,14 @@ add_dis_entry (first, opcode, mask, opcodenum, ent, completer_index)
      int completer_index;
 {
   if (completer_index & (1 << 20))
-    {
-      abort ();
-    }
+    abort ();
 
   while (ent != NULL)
     {
       ia64_insn newopcode = (opcode & (~ ent->mask)) | ent->bits;
       add_dis_entry (first, newopcode, mask, opcodenum, ent->addl_entries,
                     (completer_index << 1) | 1);
+
       if (ent->is_terminal)
        {
          insert_bit_table_ent (bittree, 40, newopcode, mask, 
@@ -1749,8 +1791,8 @@ add_dis_entry (first, opcode, mask, opcodenum, ent, completer_index)
     }
 }
 \f
-/* This optimization pass combines multiple "don't care" nodes. */
-void
+/* This optimization pass combines multiple "don't care" nodes.  */
+static void
 compact_distree (ent)
      struct bittree *ent;
 {
@@ -1790,10 +1832,9 @@ compact_distree (ent)
   for (x = 0; x < 3; x++)
     {
       struct bittree *i = ent->bits[x];
+
       if (i != NULL)
-       {
-         compact_distree (i);
-       }
+       compact_distree (i);
     }
 }
 \f
@@ -1803,7 +1844,7 @@ static int tot_insn_list_len = 0;
 
 /* Generate the disassembler state machine corresponding to the tree
    in ENT.  */
-void
+static void
 gen_dis_table (ent)
      struct bittree *ent;
 {
@@ -1813,47 +1854,37 @@ gen_dis_table (ent)
   int totbits = bitsused;
   int needed_bytes;
   int zero_count = 0;
-  int zero_dest = 0;   /* initialize this with 0 to keep gcc quiet... */
+  int zero_dest = 0;   /* Initialize this with 0 to keep gcc quiet...  */
 
   /* If this is a terminal entry, there's no point in skipping any
-     bits. */
+     bits.  */
   if (ent->skip_flag && ent->bits[0] == NULL && ent->bits[1] == NULL &&
       ent->bits[2] == NULL)
     {
       if (ent->disent == NULL)
-       {
-         abort ();
-       }
+       abort ();
       else
-       {
-         ent->skip_flag = 0;
-       }
+       ent->skip_flag = 0;
     }
 
   /* Calculate the amount of space needed for this entry, or at least
-     a conservatively large approximation. */
+     a conservatively large approximation.  */
   if (ent->skip_flag)
-    {
-      totbits += 5;
-    }
+    totbits += 5;
+
   for (x = 1; x < 3; x++)
-    {
-      if (ent->bits[x] != NULL)
-       {
-         totbits += 16;
-       }
-    }
+    if (ent->bits[x] != NULL)
+      totbits += 16;
 
   if (ent->disent != NULL)
     {
       if (ent->bits[2] != NULL)
-       {
-         abort ();
-       }
+       abort ();
+
       totbits += 16;
     }
 
-  /* Now allocate the space. */
+  /* Now allocate the space.  */
   needed_bytes = (totbits + 7) / 8;
   if ((needed_bytes + insn_list_len) > tot_insn_list_len)
     {
@@ -1865,7 +1896,7 @@ gen_dis_table (ent)
   memset (insn_list + our_offset, 0, needed_bytes);
 
   /* Encode the skip entry by setting bit 6 set in the state op field,
-     and store the # of bits to skip immediately after. */
+     and store the # of bits to skip immediately after.  */
   if (ent->skip_flag)
     {
       bitsused += 5;
@@ -1878,8 +1909,7 @@ gen_dis_table (ent)
    && (ENT)->disent == NULL && (ENT)->skip_flag == 0)
 
   /* Store an "if (bit is zero)" instruction by setting bit 7 in the
-     state op field. */
-
+     state op field.  */
   if (ent->bits[0] != NULL)
     {
       struct bittree *nent = ent->bits[0];
@@ -1929,14 +1959,10 @@ gen_dis_table (ent)
                  i = NULL;
                }
              else
-               {
-                 idest = insn_list_len - our_offset;
-               }
+               idest = insn_list_len - our_offset;
            }
          else
-           {
-             idest = ent->disent->ournum;
-           }
+           idest = ent->disent->ournum;
 
          /* If the destination offset for the if (bit is 1) test is less 
             than 256 bytes away, we can store it as 8-bits instead of 16;
@@ -1946,8 +1972,7 @@ gen_dis_table (ent)
 
             Note that branchings within the table are relative, and
             there are no branches that branch past our instruction yet
-            so we do not need to adjust any other offsets. */
-
+            so we do not need to adjust any other offsets.  */
          if (x == 1)
            {
              if (idest <= 256)
@@ -1965,9 +1990,7 @@ gen_dis_table (ent)
                  idest--;
                }
              else
-               {
-                 insn_list[our_offset] |= 0x20;
-               }
+               insn_list[our_offset] |= 0x20;
            }
          else
            {
@@ -1996,74 +2019,58 @@ gen_dis_table (ent)
                  idest &= ~32768;
                }
              else
-               {
-                 insn_list[our_offset] |= 0x08;
-               }
+               insn_list[our_offset] |= 0x08;
            }
+
          if (debug)
            {
              int id = idest;
 
              if (i == NULL)
-               {
-                 id |= 32768;
-               }
+               id |= 32768;
              else if (! (id & 32768))
-               {
-                 id += our_offset;
-               }
+               id += our_offset;
+
              if (x == 1)
-               {
-                 printf ("%d: if (1) goto %d\n", our_offset, id);
-               }
+               printf ("%d: if (1) goto %d\n", our_offset, id);
              else
-               {
-                 printf ("%d: try %d\n", our_offset, id);
-               }
+               printf ("%d: try %d\n", our_offset, id);
            }
 
-         /* Store the address of the entry being branched to. */
+         /* Store the address of the entry being branched to.  */
          while (currbits >= 0)
            {
              char *byte = insn_list + our_offset + bitsused / 8;
 
              if (idest & (1 << currbits))
-               {
-                 *byte |= (1 << (7 - (bitsused % 8)));
-               }
+               *byte |= (1 << (7 - (bitsused % 8)));
+
              bitsused++;
              currbits--;
            }
 
-         /* Now generate the states for the entry being branched to. */
+         /* Now generate the states for the entry being branched to.  */
          if (i != NULL)
-           {
-             gen_dis_table (i);
-           }
-
+           gen_dis_table (i);
        }
     }
+
   if (debug)
     {
       if (ent->skip_flag)
-       {
-         printf ("%d: skipping %d\n", our_offset, ent->bits_to_skip);
-       }
+       printf ("%d: skipping %d\n", our_offset, ent->bits_to_skip);
   
       if (ent->bits[0] != NULL)
-       {
-         printf ("%d: if (0:%d) goto %d\n", our_offset, zero_count + 1,
-                 zero_dest);
-       }
+       printf ("%d: if (0:%d) goto %d\n", our_offset, zero_count + 1,
+               zero_dest);
     }
+
   if (bitsused != totbits)
-    {
-      abort ();
-    }
+    abort ();
 }
 \f
-void
-print_dis_table ()
+static void
+print_dis_table (void)
 {
   int x;
   struct disent *cent = disinsntable;
@@ -2072,9 +2079,8 @@ print_dis_table ()
   for (x = 0; x < insn_list_len; x++)
     {
       if ((x > 0) && ((x % 12) == 0))
-       {
-         printf ("\n");
-       }
+       printf ("\n");
+
       printf ("0x%02x, ", insn_list[x]);
     }
   printf ("\n};\n\n");
@@ -2096,24 +2102,22 @@ print_dis_table ()
   printf ("};\n\n");
 }
 \f
-void
-generate_disassembler ()
+static void
+generate_disassembler (void)
 {
   int i;
 
   bittree = make_bittree_entry ();
 
-  for (i=0; i < otlen;i++)
+  for (i = 0; i < otlen; i++)
     {
       struct main_entry *ptr = ordered_table[i];
 
       if (ptr->opcode->type != IA64_TYPE_DYN)
-       {
-         add_dis_entry (bittree,
-                        ptr->opcode->opcode, ptr->opcode->mask, 
-                         ptr->main_index,
-                        ptr->completers, 1);
-       }
+       add_dis_entry (bittree,
+                      ptr->opcode->opcode, ptr->opcode->mask, 
+                      ptr->main_index,
+                      ptr->completers, 1);
     }
 
   compact_distree (bittree);
@@ -2123,25 +2127,26 @@ generate_disassembler ()
   print_dis_table ();
 }
 \f
-void
-print_string_table ()
+static void
+print_string_table (void)
 {
   int x;
   char lbuf[80], buf[80];
   int blen = 0;
 
-  printf ("static const char *ia64_strings[] = {\n");
+  printf ("static const char * const ia64_strings[] = {\n");
   lbuf[0] = '\0';
+
   for (x = 0; x < strtablen; x++)
     {
       int len;
       
       if (strlen (string_table[x]->s) > 75)
-       {
-         abort ();
-       }
+       abort ();
+
       sprintf (buf, " \"%s\",", string_table[x]->s);
       len = strlen (buf);
+
       if ((blen + len) > 75)
        {
          printf (" %s\n", lbuf);
@@ -2151,10 +2156,10 @@ print_string_table ()
       strcat (lbuf, buf);
       blen += len;
     }
+
   if (blen > 0)
-    {
-      printf (" %s\n", lbuf);
-    }
+    printf (" %s\n", lbuf);
+
   printf ("};\n\n");
 }
 \f
@@ -2162,9 +2167,9 @@ static struct completer_entry **glist;
 static int glistlen = 0;
 static int glisttotlen = 0;
 
-/* If the completer trees ENT1 and ENT2 are equal, return 1. */
+/* If the completer trees ENT1 and ENT2 are equal, return 1.  */
 
-int
+static int
 completer_entries_eq (ent1, ent2)
      struct completer_entry *ent1, *ent2;
 {
@@ -2176,25 +2181,23 @@ completer_entries_eq (ent1, ent2)
          || ent1->is_terminal != ent2->is_terminal
           || ent1->dependencies != ent2->dependencies
           || ent1->order != ent2->order)
-       {
-         return 0;
-       }
+       return 0;
+
       if (! completer_entries_eq (ent1->addl_entries, ent2->addl_entries))
-       {
-         return 0;
-       }
+       return 0;
+
       ent1 = ent1->alternative;
       ent2 = ent2->alternative;
     }
+
   return ent1 == ent2;
 }
 \f
 /* Insert ENT into the global list of completers and return it.  If an
    equivalent entry (according to completer_entries_eq) already exists,
-   it is returned instead. */
-struct completer_entry *
-insert_gclist (ent)
-     struct completer_entry *ent;
+   it is returned instead.  */
+static struct completer_entry *
+insert_gclist (struct completer_entry *ent)
 {
   if (ent != NULL)
     {
@@ -2223,13 +2226,9 @@ insert_gclist (ent)
        }
 
       if (ent->name->num < glist[0]->name->num)
-       {
-         i = 0;
-       }
+       i = 0;
       else if (ent->name->num > glist[end - 1]->name->num)
-       {
-         i = end;
-       }
+       i = end;
       else
        {
          int c;
@@ -2238,62 +2237,50 @@ insert_gclist (ent)
            {
              i = (start + end) / 2;
              c = ent->name->num - glist[i]->name->num;
+
              if (c < 0)
-               {
-                 end = i - 1;
-               }
+               end = i - 1;
              else if (c == 0)
                {
                  while (i > 0 
                         && ent->name->num == glist[i - 1]->name->num)
-                   {
-                     i--;
-                   }
+                   i--;
+
                  break;
                }
              else
-               {
-                 start = i + 1;
-               }
+               start = i + 1;
+
              if (start > end)
-               {
-                 break;
-               }
+               break;
            }
+
          if (c == 0)
            {
              while (i < glistlen)
                {
                  if (ent->name->num != glist[i]->name->num)
-                   {
-                     break;
-                   }
+                   break;
+
                  if (completer_entries_eq (ent, glist[i]))
-                   {
-                     return glist[i];
-                   }
+                   return glist[i];
+
                  i++;
                }
            }
        }
+
       for (; i > 0 && i < glistlen; i--)
-       {
-         if (ent->name->num >= glist[i - 1]->name->num)
-           {
-             break;
-           }
-       }
+       if (ent->name->num >= glist[i - 1]->name->num)
+         break;
+
       for (; i < glistlen; i++)
-       {
-         if (ent->name->num < glist[i]->name->num)
-           {
-             break;
-           }
-       }
+       if (ent->name->num < glist[i]->name->num)
+         break;
+
       for (x = glistlen - 1; x >= i; x--)
-       {
-         glist[x + 1] = glist[x];
-       }
+       glist[x + 1] = glist[x];
+
       glist[i] = ent;
       glistlen++;
     }
@@ -2307,19 +2294,13 @@ get_prefix_len (name)
   char *c;
 
   if (name[0] == '\0')
-    {
-      return 0;
-    }
+    return 0;
 
   c = strchr (name, '.');
   if (c != NULL)
-    {
-      return c - name;
-    }
+    return c - name;
   else
-    {
-      return strlen (name);
-    }
+    return strlen (name);
 }
 \f
 static void
@@ -2340,30 +2321,21 @@ compute_completer_bits (ment, ent)
          int x;
 
          while (p != NULL && ! p->is_terminal)
-           {
-             p = p->parent;
-           }
+           p = p->parent;
       
          if (p != NULL)
-           {
-             p_bits = p->bits;
-           }
+           p_bits = p->bits;
          else
-           {
-             p_bits = ment->opcode->opcode;
-           }
+           p_bits = ment->opcode->opcode;
 
          for (x = 0; x < 64; x++)
            {
              ia64_insn m = ((ia64_insn) 1) << x;
+
              if ((p_bits & m) != (our_bits & m))
-               {
-                 mask |= m;
-               }
+               mask |= m;
              else
-               {
-                 our_bits &= ~m;
-               }
+               our_bits &= ~m;
            }
          ent->bits = our_bits;
          ent->mask = mask;
@@ -2379,9 +2351,9 @@ compute_completer_bits (ment, ent)
 }
 \f
 /* Find identical completer trees that are used in different
-   instructions and collapse their entries. */
-void
-collapse_redundant_completers ()
+   instructions and collapse their entries.  */
+static void
+collapse_redundant_completers (void)
 {
   struct main_entry *ptr;
   int x;
@@ -2389,43 +2361,39 @@ collapse_redundant_completers ()
   for (ptr = maintable; ptr != NULL; ptr = ptr->next)
     {
       if (ptr->completers == NULL)
-       {
-         abort ();
-       }
+       abort ();
+
       compute_completer_bits (ptr, ptr->completers);
       ptr->completers = insert_gclist (ptr->completers);
     }
 
   /* The table has been finalized, now number the indexes.  */
   for (x = 0; x < glistlen; x++)
-    {
-      glist[x]->num = x;
-    }
+    glist[x]->num = x;
 }
 \f
 
-/* attach two lists of dependencies to each opcode.
+/* Attach two lists of dependencies to each opcode.
    1) all resources which, when already marked in use, conflict with this
    opcode (chks) 
    2) all resources which must be marked in use when this opcode is used
-   (regs) 
-*/
-int
+   (regs).  */
+static int
 insert_opcode_dependencies (opc, cmp)
      struct ia64_opcode *opc;
      struct completer_entry *cmp ATTRIBUTE_UNUSED;
 {
-  /* note all resources which point to this opcode.  rfi has the most chks
-     (79) and cmpxchng has the most regs (54) so 100 here should be enough */
+  /* Note all resources which point to this opcode.  rfi has the most chks
+     (79) and cmpxchng has the most regs (54) so 100 here should be enough */
   int i;
   int nregs = 0;
   unsigned short regs[256];                  
   int nchks = 0;
   unsigned short chks[256];
-  /* flag insns for which no class matched; there should be none */
+  /* Flag insns for which no class matched; there should be none.  */
   int no_class_found = 1;
 
-  for (i=0;i < rdepslen;i++)
+  for (i = 0; i < rdepslen; i++)
     {
       struct rdep *rs = rdeps[i];
       int j;
@@ -2441,21 +2409,19 @@ insert_opcode_dependencies (opc, cmp)
 
           if (in_iclass (opc, ics[rs->regs[j]], NULL, NULL, &ic_note))
             {
-              /* We can ignore ic_note 11 for non PR resources */
+              /* We can ignore ic_note 11 for non PR resources */
               if (ic_note == 11 && strncmp (rs->name, "PR", 2) != 0)
                 ic_note = 0;
 
               if (ic_note != 0 && rs->regnotes[j] != 0
                   && ic_note != rs->regnotes[j]
                   && !(ic_note == 11 && rs->regnotes[j] == 1))
-                fprintf (stderr, "Warning: IC note %d in opcode %s (IC:%s)"
-                         " conflicts with resource %s note %d\n", 
-                         ic_note, opc->name, ics[rs->regs[j]]->name,
-                         rs->name, rs->regnotes[j]);
+                warn (_("IC note %d in opcode %s (IC:%s) conflicts with resource %s note %d\n"),
+                     ic_note, opc->name, ics[rs->regs[j]]->name,
+                     rs->name, rs->regnotes[j]);
               /* Instruction class notes override resource notes.
                  So far, only note 11 applies to an IC instead of a resource,
-                 and note 11 implies note 1.
-               */
+                 and note 11 implies note 1.  */
               if (ic_note)
                 regs[nregs++] = RDEP(ic_note, i);
               else
@@ -2464,23 +2430,23 @@ insert_opcode_dependencies (opc, cmp)
               ++rs->total_regs;
             }
         }
-      for (j=0;j < rs->nchks;j++)
+
+      for (j = 0; j < rs->nchks; j++)
         {
           int ic_note = 0;
 
           if (in_iclass (opc, ics[rs->chks[j]], NULL, NULL, &ic_note))
             {
-              /* We can ignore ic_note 11 for non PR resources */
+              /* We can ignore ic_note 11 for non PR resources */
               if (ic_note == 11 && strncmp (rs->name, "PR", 2) != 0)
                 ic_note = 0;
 
               if (ic_note != 0 && rs->chknotes[j] != 0
                   && ic_note != rs->chknotes[j]
                   && !(ic_note == 11 && rs->chknotes[j] == 1))
-                fprintf (stderr, "Warning: IC note %d for opcode %s (IC:%s)"
-                         " conflicts with resource %s note %d\n", 
-                         ic_note, opc->name, ics[rs->chks[j]]->name,
-                         rs->name, rs->chknotes[j]);
+                warn (_("IC note %d for opcode %s (IC:%s) conflicts with resource %s note %d\n"),
+                     ic_note, opc->name, ics[rs->chks[j]]->name,
+                     rs->name, rs->chknotes[j]);
               if (ic_note)
                 chks[nchks++] = RDEP(ic_note, i);
               else
@@ -2492,14 +2458,14 @@ insert_opcode_dependencies (opc, cmp)
     }
 
   if (no_class_found)
-    fprintf (stderr, "Warning: opcode %s has no class (ops %d %d %d)\n", 
-             opc->name, 
-             opc->operands[0], opc->operands[1], opc->operands[2]);
+    warn (_("opcode %s has no class (ops %d %d %d)\n"),
+         opc->name, 
+         opc->operands[0], opc->operands[1], opc->operands[2]);
 
   return insert_dependencies (nchks, chks, nregs, regs);
 }
 \f
-void
+static void
 insert_completer_entry (opc, tabent, order)
      struct ia64_opcode *opc;
      struct main_entry *tabent;
@@ -2511,15 +2477,13 @@ insert_completer_entry (opc, tabent, order)
   int at_end = 0;
 
   if (strlen (opc->name) > 128)
-    {
-      abort ();
-    }
+    abort ();
+
   strcpy (pcopy, opc->name);
   prefix = pcopy + get_prefix_len (pcopy);
+
   if (prefix[0] != '\0')
-    {
-      prefix++;
-    }
+    prefix++;
 
   while (! at_end)
     {
@@ -2541,13 +2505,13 @@ insert_completer_entry (opc, tabent, order)
              break;
            }
          else
-           {
-             ptr = &((*ptr)->alternative);
-           }
+           ptr = &((*ptr)->alternative);
        }
+
       if (need_new_ent)
        {
          struct completer_entry *nent = tmalloc (struct completer_entry);
+
          nent->name = sent;
          nent->parent = parent;
          nent->addl_entries = NULL;
@@ -2566,9 +2530,7 @@ insert_completer_entry (opc, tabent, order)
     }
 
   if ((*ptr)->is_terminal)
-    {
-      abort ();
-    }
+    abort ();
 
   (*ptr)->is_terminal = 1;
   (*ptr)->mask = (ia64_insn)-1;
@@ -2577,7 +2539,7 @@ insert_completer_entry (opc, tabent, order)
   (*ptr)->order = order;
 }
 \f
-void
+static void
 print_completer_entry (ent)
      struct completer_entry *ent;
 {
@@ -2592,10 +2554,9 @@ print_completer_entry (ent)
          mask = mask >> 1;
          bits = bits >> 1;
        }
+
       if (bits & 0xffffffff00000000LL)
-       {
-         abort ();
-       }
+       abort ();
     }
   
   printf ("  { 0x%x, 0x%x, %d, %d, %d, %d, %d, %d },\n",
@@ -2609,20 +2570,18 @@ print_completer_entry (ent)
           ent->dependencies);
 }
 \f
-void
+static void
 print_completer_table ()
 {
   int x;
 
   printf ("static const struct ia64_completer_table\ncompleter_table[] = {\n");
   for (x = 0; x < glistlen; x++)
-    {
-      print_completer_entry (glist[x]);
-    }
+    print_completer_entry (glist[x]);
   printf ("};\n\n");
 }
 \f
-int
+static int
 opcodes_eq (opc1, opc2)
      struct ia64_opcode *opc1;
      struct ia64_opcode *opc2;
@@ -2633,26 +2592,22 @@ opcodes_eq (opc1, opc2)
   if ((opc1->mask != opc2->mask) || (opc1->type != opc2->type) 
       || (opc1->num_outputs != opc2->num_outputs)
       || (opc1->flags != opc2->flags))
-    {
-      return 0;
-    }
+    return 0;
+
   for (x = 0; x < 5; x++)
-    {
-      if (opc1->operands[x] != opc2->operands[x])
-       {
-         return 0;
-       }
-    }
+    if (opc1->operands[x] != opc2->operands[x])
+      return 0;
+
   plen1 = get_prefix_len (opc1->name);
   plen2 = get_prefix_len (opc2->name);
+
   if (plen1 == plen2 && (memcmp (opc1->name, opc2->name, plen1) == 0))
-    {
-      return 1;
-    }
+    return 1;
+
   return 0;
 }
 \f
-void
+static void
 add_opcode_entry (opc)
      struct ia64_opcode *opc;
 {
@@ -2662,9 +2617,8 @@ add_opcode_entry (opc)
   int found_it = 0;
 
   if (strlen (opc->name) > 128)
-    {
-      abort ();
-    }
+    abort ();
+
   place = &maintable;
   strcpy (prefix, opc->name);
   prefix[get_prefix_len (prefix)] = '\0';
@@ -2672,7 +2626,7 @@ add_opcode_entry (opc)
 
   /* Walk the list of opcode table entries.  If it's a new
      instruction, allocate and fill in a new entry.  Note 
-     the main table is alphabetical by opcode name. */
+     the main table is alphabetical by opcode name.  */
 
   while (*place != NULL)
     {
@@ -2683,9 +2637,8 @@ add_opcode_entry (opc)
          break;
        }
       if ((*place)->name->num > name->num)
-       {
-         break;
-       }
+       break;
+
       place = &((*place)->next);
     }
   if (! found_it)
@@ -2710,8 +2663,8 @@ add_opcode_entry (opc)
   insert_completer_entry (opc, *place, opcode_count++);
 }
 \f
-void
-print_main_table ()
+static void
+print_main_table (void)
 {
   struct main_entry *ptr = maintable;
   int index = 0;
@@ -2742,30 +2695,85 @@ print_main_table ()
   printf ("};\n\n");
 }
 \f
-void
+static void
 shrink (table)
      struct ia64_opcode *table;
 {
   int curr_opcode;
 
   for (curr_opcode = 0; table[curr_opcode].name != NULL; curr_opcode++)
-    {
-      add_opcode_entry (table + curr_opcode);
-    }
+    add_opcode_entry (table + curr_opcode);
 }
 \f
+
+/* Program options.  */
+#define OPTION_SRCDIR  200
+
+struct option long_options[] = 
+{
+  {"srcdir",  required_argument, NULL, OPTION_SRCDIR},
+  {"debug",   no_argument,       NULL, 'd'},
+  {"version", no_argument,       NULL, 'V'},
+  {"help",    no_argument,       NULL, 'h'},
+  {0,         no_argument,       NULL, 0}
+};
+
+static void
+print_version (void)
+{
+  printf ("%s: version 1.0\n", program_name);
+  xexit (0);
+}
+
+static void
+usage (FILE * stream, int status)
+{
+  fprintf (stream, "Usage: %s [-V | --version] [-d | --debug] [--srcdir=dirname] [--help]\n",
+          program_name);
+  xexit (status);
+}
+
 int
-main (argc, argv)
-     int argc;
-     char **argv ATTRIBUTE_UNUSED;
+main (int argc, char **argv)
 {
-  if (argc > 1)
-    {
-      debug = 1;
-    }
+  extern int chdir (char *);
+  char *srcdir = NULL;
+  int c;
+  
+  program_name = *argv;
+  xmalloc_set_program_name (program_name);
+
+  while ((c = getopt_long (argc, argv, "vVdh", long_options, 0)) != EOF)
+    switch (c)
+      {
+      case OPTION_SRCDIR:
+       srcdir = optarg;
+       break;
+      case 'V':
+      case 'v':
+       print_version ();
+       break;
+      case 'd':
+       debug = 1;
+       break;
+      case 'h':
+      case '?':
+       usage (stderr, 0);
+      default:
+      case 0:
+       break;
+      }
+
+  if (optind != argc)
+    usage (stdout, 1);
+
+  if (srcdir != NULL) 
+    if (chdir (srcdir) != 0)
+      fail (_("unable to change directory to \"%s\", errno = %s\n"),
+           srcdir, strerror (errno));
 
-  load_insn_classes();
-  load_dependencies();
+  load_insn_classes ();
+  load_dependencies ();
 
   shrink (ia64_opcodes_a);
   shrink (ia64_opcodes_b);
@@ -2777,7 +2785,7 @@ main (argc, argv)
 
   collapse_redundant_completers ();
 
-  printf ("/* This file is automatically generated by ia64-gen.  Do not edit! */\n");
+  printf ("/* This file is automatically generated by ia64-gen.  Do not edit!  */\n");
   print_string_table ();
   print_dependency_table ();
   print_completer_table ();
index 27d7637f1a2a66d96aa7a8980d53ab7965fde722..c9e316234f859ecfa7c5dfef1ace513a12b8ae34 100644 (file)
@@ -1,5 +1,5 @@
 /* ia64-opc-a.c -- IA-64 `A' opcode table.
-   Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+   Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
 
    This file is part of GDB, GAS, and the GNU binutils.
        (bOp (a) | bX2a (b) | bZa (c) | bZb (d) | bX4 (e) | bX2b (f)), \
        (mOp | mX2a | mZa | mZb | mX4 | mX2b)
 
+/* Used to initialise unused fields in ia64_opcode struct,
+   in order to stop gcc from complaining.  */
+#define EMPTY 0,0,NULL
+
 struct ia64_opcode ia64_opcodes_a[] =
   {
-    /* A-type instruction encodings (sorted according to major opcode) */
+    /* A-type instruction encodings (sorted according to major opcode) */
 
-    {"add",     A, OpX2aVeX4X2b (8, 0, 0, 0, 0), {R1, R2, R3}},
-    {"add",     A, OpX2aVeX4X2b (8, 0, 0, 0, 1), {R1, R2, R3, C1}},
-    {"sub",     A, OpX2aVeX4X2b (8, 0, 0, 1, 1), {R1, R2, R3}},
-    {"sub",     A, OpX2aVeX4X2b (8, 0, 0, 1, 0), {R1, R2, R3, C1}},
-    {"addp4",   A, OpX2aVeX4X2b (8, 0, 0, 2, 0), {R1, R2, R3}},
-    {"and",     A, OpX2aVeX4X2b (8, 0, 0, 3, 0), {R1, R2, R3}},
-    {"andcm",   A, OpX2aVeX4X2b (8, 0, 0, 3, 1), {R1, R2, R3}},
-    {"or",      A, OpX2aVeX4X2b (8, 0, 0, 3, 2), {R1, R2, R3}},
-    {"xor",     A, OpX2aVeX4X2b (8, 0, 0, 3, 3), {R1, R2, R3}},
-    {"shladd",  A, OpX2aVeX4 (8, 0, 0, 4), {R1, R2, CNT2a, R3}},
-    {"shladdp4", A, OpX2aVeX4 (8, 0, 0, 6), {R1, R2, CNT2a, R3}},
-    {"sub",     A, OpX2aVeX4X2b (8, 0, 0, 9, 1), {R1, IMM8, R3}},
-    {"and",     A, OpX2aVeX4X2b (8, 0, 0, 0xb, 0), {R1, IMM8, R3}},
-    {"andcm",   A, OpX2aVeX4X2b (8, 0, 0, 0xb, 1), {R1, IMM8, R3}},
-    {"or",      A, OpX2aVeX4X2b (8, 0, 0, 0xb, 2), {R1, IMM8, R3}},
-    {"xor",     A, OpX2aVeX4X2b (8, 0, 0, 0xb, 3), {R1, IMM8, R3}},
-    {"mov",     A, OpX2aVeImm14 (8, 2, 0, 0), {R1, R3}},
-    {"mov",     A, OpX2aVeR3a (8, 2, 0, 0), {R1, IMM14}, PSEUDO},
-    {"adds",    A, OpX2aVe (8, 2, 0), {R1, IMM14, R3}},
-    {"addp4",   A, OpX2aVe (8, 3, 0), {R1, IMM14, R3}},
-    {"padd1",           A, OpX2aZaZbX4X2b (8, 1, 0, 0, 0, 0), {R1, R2, R3}},
-    {"padd2",           A, OpX2aZaZbX4X2b (8, 1, 0, 1, 0, 0), {R1, R2, R3}},
-    {"padd4",           A, OpX2aZaZbX4X2b (8, 1, 1, 0, 0, 0), {R1, R2, R3}},
-    {"padd1.sss",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 0, 1), {R1, R2, R3}},
-    {"padd2.sss",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 0, 1), {R1, R2, R3}},
-    {"padd1.uuu",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 0, 2), {R1, R2, R3}},
-    {"padd2.uuu",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 0, 2), {R1, R2, R3}},
-    {"padd1.uus",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 0, 3), {R1, R2, R3}},
-    {"padd2.uus",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 0, 3), {R1, R2, R3}},
-    {"psub1",           A, OpX2aZaZbX4X2b (8, 1, 0, 0, 1, 0), {R1, R2, R3}},
-    {"psub2",           A, OpX2aZaZbX4X2b (8, 1, 0, 1, 1, 0), {R1, R2, R3}},
-    {"psub4",           A, OpX2aZaZbX4X2b (8, 1, 1, 0, 1, 0), {R1, R2, R3}},
-    {"psub1.sss",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 1, 1), {R1, R2, R3}},
-    {"psub2.sss",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 1, 1), {R1, R2, R3}},
-    {"psub1.uuu",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 1, 2), {R1, R2, R3}},
-    {"psub2.uuu",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 1, 2), {R1, R2, R3}},
-    {"psub1.uus",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 1, 3), {R1, R2, R3}},
-    {"psub2.uus",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 1, 3), {R1, R2, R3}},
-    {"pavg1",           A, OpX2aZaZbX4X2b (8, 1, 0, 0, 2, 2), {R1, R2, R3}},
-    {"pavg2",           A, OpX2aZaZbX4X2b (8, 1, 0, 1, 2, 2), {R1, R2, R3}},
-    {"pavg1.raz",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 2, 3), {R1, R2, R3}},
-    {"pavg2.raz",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 2, 3), {R1, R2, R3}},
-    {"pavgsub1",        A, OpX2aZaZbX4X2b (8, 1, 0, 0, 3, 2), {R1, R2, R3}},
-    {"pavgsub2",        A, OpX2aZaZbX4X2b (8, 1, 0, 1, 3, 2), {R1, R2, R3}},
-    {"pcmp1.eq",        A, OpX2aZaZbX4X2b (8, 1, 0, 0, 9, 0), {R1, R2, R3}},
-    {"pcmp2.eq",        A, OpX2aZaZbX4X2b (8, 1, 0, 1, 9, 0), {R1, R2, R3}},
-    {"pcmp4.eq",        A, OpX2aZaZbX4X2b (8, 1, 1, 0, 9, 0), {R1, R2, R3}},
-    {"pcmp1.gt",        A, OpX2aZaZbX4X2b (8, 1, 0, 0, 9, 1), {R1, R2, R3}},
-    {"pcmp2.gt",        A, OpX2aZaZbX4X2b (8, 1, 0, 1, 9, 1), {R1, R2, R3}},
-    {"pcmp4.gt",        A, OpX2aZaZbX4X2b (8, 1, 1, 0, 9, 1), {R1, R2, R3}},
-    {"pshladd2",        A, OpX2aZaZbX4 (8, 1, 0, 1, 4), {R1, R2, CNT2b, R3}},
-    {"pshradd2",        A, OpX2aZaZbX4 (8, 1, 0, 1, 6), {R1, R2, CNT2b, R3}},
+    {"add",     A, OpX2aVeX4X2b (8, 0, 0, 0, 0), {R1, R2, R3}, EMPTY},
+    {"add",     A, OpX2aVeX4X2b (8, 0, 0, 0, 1), {R1, R2, R3, C1}, EMPTY},
+    {"sub",     A, OpX2aVeX4X2b (8, 0, 0, 1, 1), {R1, R2, R3}, EMPTY},
+    {"sub",     A, OpX2aVeX4X2b (8, 0, 0, 1, 0), {R1, R2, R3, C1}, EMPTY},
+    {"addp4",   A, OpX2aVeX4X2b (8, 0, 0, 2, 0), {R1, R2, R3}, EMPTY},
+    {"and",     A, OpX2aVeX4X2b (8, 0, 0, 3, 0), {R1, R2, R3}, EMPTY},
+    {"andcm",   A, OpX2aVeX4X2b (8, 0, 0, 3, 1), {R1, R2, R3}, EMPTY},
+    {"or",      A, OpX2aVeX4X2b (8, 0, 0, 3, 2), {R1, R2, R3}, EMPTY},
+    {"xor",     A, OpX2aVeX4X2b (8, 0, 0, 3, 3), {R1, R2, R3}, EMPTY},
+    {"shladd",  A, OpX2aVeX4 (8, 0, 0, 4), {R1, R2, CNT2a, R3}, EMPTY},
+    {"shladdp4", A, OpX2aVeX4 (8, 0, 0, 6), {R1, R2, CNT2a, R3}, EMPTY},
+    {"sub",     A, OpX2aVeX4X2b (8, 0, 0, 9, 1), {R1, IMM8, R3}, EMPTY},
+    {"and",     A, OpX2aVeX4X2b (8, 0, 0, 0xb, 0), {R1, IMM8, R3}, EMPTY},
+    {"andcm",   A, OpX2aVeX4X2b (8, 0, 0, 0xb, 1), {R1, IMM8, R3}, EMPTY},
+    {"or",      A, OpX2aVeX4X2b (8, 0, 0, 0xb, 2), {R1, IMM8, R3}, EMPTY},
+    {"xor",     A, OpX2aVeX4X2b (8, 0, 0, 0xb, 3), {R1, IMM8, R3}, EMPTY},
+    {"mov",     A, OpX2aVeImm14 (8, 2, 0, 0), {R1, R3}, EMPTY},
+    {"mov",     A, OpX2aVeR3a (8, 2, 0, 0), {R1, IMM14}, PSEUDO, 0, NULL},
+    {"adds",    A, OpX2aVe (8, 2, 0), {R1, IMM14, R3}, EMPTY},
+    {"addp4",   A, OpX2aVe (8, 3, 0), {R1, IMM14, R3}, EMPTY},
+    {"padd1",           A, OpX2aZaZbX4X2b (8, 1, 0, 0, 0, 0), {R1, R2, R3}, EMPTY},
+    {"padd2",           A, OpX2aZaZbX4X2b (8, 1, 0, 1, 0, 0), {R1, R2, R3}, EMPTY},
+    {"padd4",           A, OpX2aZaZbX4X2b (8, 1, 1, 0, 0, 0), {R1, R2, R3}, EMPTY},
+    {"padd1.sss",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 0, 1), {R1, R2, R3}, EMPTY},
+    {"padd2.sss",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 0, 1), {R1, R2, R3}, EMPTY},
+    {"padd1.uuu",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 0, 2), {R1, R2, R3}, EMPTY},
+    {"padd2.uuu",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 0, 2), {R1, R2, R3}, EMPTY},
+    {"padd1.uus",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 0, 3), {R1, R2, R3}, EMPTY},
+    {"padd2.uus",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 0, 3), {R1, R2, R3}, EMPTY},
+    {"psub1",           A, OpX2aZaZbX4X2b (8, 1, 0, 0, 1, 0), {R1, R2, R3}, EMPTY},
+    {"psub2",           A, OpX2aZaZbX4X2b (8, 1, 0, 1, 1, 0), {R1, R2, R3}, EMPTY},
+    {"psub4",           A, OpX2aZaZbX4X2b (8, 1, 1, 0, 1, 0), {R1, R2, R3}, EMPTY},
+    {"psub1.sss",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 1, 1), {R1, R2, R3}, EMPTY},
+    {"psub2.sss",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 1, 1), {R1, R2, R3}, EMPTY},
+    {"psub1.uuu",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 1, 2), {R1, R2, R3}, EMPTY},
+    {"psub2.uuu",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 1, 2), {R1, R2, R3}, EMPTY},
+    {"psub1.uus",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 1, 3), {R1, R2, R3}, EMPTY},
+    {"psub2.uus",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 1, 3), {R1, R2, R3}, EMPTY},
+    {"pavg1",           A, OpX2aZaZbX4X2b (8, 1, 0, 0, 2, 2), {R1, R2, R3}, EMPTY},
+    {"pavg2",           A, OpX2aZaZbX4X2b (8, 1, 0, 1, 2, 2), {R1, R2, R3}, EMPTY},
+    {"pavg1.raz",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 2, 3), {R1, R2, R3}, EMPTY},
+    {"pavg2.raz",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 2, 3), {R1, R2, R3}, EMPTY},
+    {"pavgsub1",        A, OpX2aZaZbX4X2b (8, 1, 0, 0, 3, 2), {R1, R2, R3}, EMPTY},
+    {"pavgsub2",        A, OpX2aZaZbX4X2b (8, 1, 0, 1, 3, 2), {R1, R2, R3}, EMPTY},
+    {"pcmp1.eq",        A, OpX2aZaZbX4X2b (8, 1, 0, 0, 9, 0), {R1, R2, R3}, EMPTY},
+    {"pcmp2.eq",        A, OpX2aZaZbX4X2b (8, 1, 0, 1, 9, 0), {R1, R2, R3}, EMPTY},
+    {"pcmp4.eq",        A, OpX2aZaZbX4X2b (8, 1, 1, 0, 9, 0), {R1, R2, R3}, EMPTY},
+    {"pcmp1.gt",        A, OpX2aZaZbX4X2b (8, 1, 0, 0, 9, 1), {R1, R2, R3}, EMPTY},
+    {"pcmp2.gt",        A, OpX2aZaZbX4X2b (8, 1, 0, 1, 9, 1), {R1, R2, R3}, EMPTY},
+    {"pcmp4.gt",        A, OpX2aZaZbX4X2b (8, 1, 1, 0, 9, 1), {R1, R2, R3}, EMPTY},
+    {"pshladd2",        A, OpX2aZaZbX4 (8, 1, 0, 1, 4), {R1, R2, CNT2b, R3}, EMPTY},
+    {"pshradd2",        A, OpX2aZaZbX4 (8, 1, 0, 1, 6), {R1, R2, CNT2b, R3}, EMPTY},
 
-    {"mov",             A, OpR3b (9, 0), {R1, IMM22}, PSEUDO},
-    {"addl",            A, Op    (9),    {R1, IMM22, R3_2}},
+    {"mov",             A, OpR3b (9, 0), {R1, IMM22}, PSEUDO, 0, NULL},
+    {"addl",            A, Op    (9),    {R1, IMM22, R3_2}, EMPTY},
 
-    {"cmp.lt",          A2, OpX2TbTaC (0xc, 0, 0, 0, 0), {P1, P2, R2, R3}},
-    {"cmp.le",          A2, OpX2TbTaC (0xc, 0, 0, 0, 0), {P2, P1, R3, R2}},
-    {"cmp.gt",          A2, OpX2TbTaC (0xc, 0, 0, 0, 0), {P1, P2, R3, R2}},
-    {"cmp.ge",          A2, OpX2TbTaC (0xc, 0, 0, 0, 0), {P2, P1, R2, R3}},
-    {"cmp.lt.unc",      A2, OpX2TbTaC (0xc, 0, 0, 0, 1), {P1, P2, R2, R3}},
-    {"cmp.le.unc",      A2, OpX2TbTaC (0xc, 0, 0, 0, 1), {P2, P1, R3, R2}},
-    {"cmp.gt.unc",      A2, OpX2TbTaC (0xc, 0, 0, 0, 1), {P1, P2, R3, R2}},
-    {"cmp.ge.unc",      A2, OpX2TbTaC (0xc, 0, 0, 0, 1), {P2, P1, R2, R3}},
-    {"cmp.eq.and",      A2, OpX2TbTaC (0xc, 0, 0, 1, 0), {P1, P2, R2, R3}},
-    {"cmp.ne.andcm",    A2, OpX2TbTaC (0xc, 0, 0, 1, 0), {P1, P2, R2, R3}, PSEUDO},
-    {"cmp.ne.and",      A2, OpX2TbTaC (0xc, 0, 0, 1, 1), {P1, P2, R2, R3}},
-    {"cmp.eq.andcm",    A2, OpX2TbTaC (0xc, 0, 0, 1, 1), {P1, P2, R2, R3}, PSEUDO},
-    {"cmp4.lt",                 A2, OpX2TbTaC (0xc, 1, 0, 0, 0), {P1, P2, R2, R3}},
-    {"cmp4.le",                 A2, OpX2TbTaC (0xc, 1, 0, 0, 0), {P2, P1, R3, R2}},
-    {"cmp4.gt",                 A2, OpX2TbTaC (0xc, 1, 0, 0, 0), {P1, P2, R3, R2}},
-    {"cmp4.ge",                 A2, OpX2TbTaC (0xc, 1, 0, 0, 0), {P2, P1, R2, R3}},
-    {"cmp4.lt.unc",     A2, OpX2TbTaC (0xc, 1, 0, 0, 1), {P1, P2, R2, R3}},
-    {"cmp4.le.unc",     A2, OpX2TbTaC (0xc, 1, 0, 0, 1), {P2, P1, R3, R2}},
-    {"cmp4.gt.unc",     A2, OpX2TbTaC (0xc, 1, 0, 0, 1), {P1, P2, R3, R2}},
-    {"cmp4.ge.unc",     A2, OpX2TbTaC (0xc, 1, 0, 0, 1), {P2, P1, R2, R3}},
-    {"cmp4.eq.and",     A2, OpX2TbTaC (0xc, 1, 0, 1, 0), {P1, P2, R2, R3}},
-    {"cmp4.ne.andcm",   A2, OpX2TbTaC (0xc, 1, 0, 1, 0), {P1, P2, R2, R3}, PSEUDO},
-    {"cmp4.ne.and",     A2, OpX2TbTaC (0xc, 1, 0, 1, 1), {P1, P2, R2, R3}},
-    {"cmp4.eq.andcm",   A2, OpX2TbTaC (0xc, 1, 0, 1, 1), {P1, P2, R2, R3}, PSEUDO},
-    {"cmp.gt.and",      A2, OpX2TbTaC (0xc, 0, 1, 0, 0), {P1, P2, GR0, R3}},
-    {"cmp.lt.and",      A2, OpX2TbTaC (0xc, 0, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.le.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 0, 0), {P1, P2, GR0, R3}, PSEUDO},
-    {"cmp.ge.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.le.and",      A2, OpX2TbTaC (0xc, 0, 1, 0, 1), {P1, P2, GR0, R3}},
-    {"cmp.ge.and",      A2, OpX2TbTaC (0xc, 0, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.gt.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 0, 1), {P1, P2, GR0, R3}, PSEUDO},
-    {"cmp.lt.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.ge.and",      A2, OpX2TbTaC (0xc, 0, 1, 1, 0), {P1, P2, GR0, R3}},
-    {"cmp.le.and",      A2, OpX2TbTaC (0xc, 0, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.lt.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 1, 0), {P1, P2, GR0, R3}, PSEUDO},
-    {"cmp.gt.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.lt.and",      A2, OpX2TbTaC (0xc, 0, 1, 1, 1), {P1, P2, GR0, R3}},
-    {"cmp.gt.and",      A2, OpX2TbTaC (0xc, 0, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.ge.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 1, 1), {P1, P2, GR0, R3}, PSEUDO},
-    {"cmp.le.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.gt.and",     A2, OpX2TbTaC (0xc, 1, 1, 0, 0), {P1, P2, GR0, R3}},
-    {"cmp4.lt.and",     A2, OpX2TbTaC (0xc, 1, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.le.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 0, 0), {P1, P2, GR0, R3}, PSEUDO},
-    {"cmp4.ge.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.le.and",     A2, OpX2TbTaC (0xc, 1, 1, 0, 1), {P1, P2, GR0, R3}},
-    {"cmp4.ge.and",     A2, OpX2TbTaC (0xc, 1, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.gt.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 0, 1), {P1, P2, GR0, R3}, PSEUDO},
-    {"cmp4.lt.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.ge.and",     A2, OpX2TbTaC (0xc, 1, 1, 1, 0), {P1, P2, GR0, R3}},
-    {"cmp4.le.and",     A2, OpX2TbTaC (0xc, 1, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.lt.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 1, 0), {P1, P2, GR0, R3}, PSEUDO},
-    {"cmp4.gt.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.lt.and",     A2, OpX2TbTaC (0xc, 1, 1, 1, 1), {P1, P2, GR0, R3}},
-    {"cmp4.gt.and",     A2, OpX2TbTaC (0xc, 1, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.ge.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 1, 1), {P1, P2, GR0, R3}, PSEUDO},
-    {"cmp4.le.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.lt",          A2, OpX2TaC   (0xc, 2, 0, 0), {P1, P2, IMM8, R3}},
-    {"cmp.le",          A2, OpX2TaC   (0xc, 2, 0, 0), {P1, P2, IMM8M1, R3}},
-    {"cmp.gt",          A2, OpX2TaC   (0xc, 2, 0, 0), {P2, P1, IMM8M1, R3}},
-    {"cmp.ge",          A2, OpX2TaC   (0xc, 2, 0, 0), {P2, P1, IMM8, R3}},
-    {"cmp.lt.unc",      A2, OpX2TaC   (0xc, 2, 0, 1), {P1, P2, IMM8, R3}},
-    {"cmp.le.unc",      A2, OpX2TaC   (0xc, 2, 0, 1), {P1, P2, IMM8M1, R3}},
-    {"cmp.gt.unc",      A2, OpX2TaC   (0xc, 2, 0, 1), {P2, P1, IMM8M1, R3}},
-    {"cmp.ge.unc",      A2, OpX2TaC   (0xc, 2, 0, 1), {P2, P1, IMM8, R3}},
-    {"cmp.eq.and",      A2, OpX2TaC   (0xc, 2, 1, 0), {P1, P2, IMM8, R3}},
-    {"cmp.ne.andcm",    A2, OpX2TaC   (0xc, 2, 1, 0), {P1, P2, IMM8, R3}, PSEUDO},
-    {"cmp.ne.and",      A2, OpX2TaC   (0xc, 2, 1, 1), {P1, P2, IMM8, R3}},
-    {"cmp.eq.andcm",    A2, OpX2TaC   (0xc, 2, 1, 1), {P1, P2, IMM8, R3}, PSEUDO},
-    {"cmp4.lt",                 A2, OpX2TaC   (0xc, 3, 0, 0), {P1, P2, IMM8, R3}},
-    {"cmp4.le",                 A2, OpX2TaC   (0xc, 3, 0, 0), {P1, P2, IMM8M1, R3}},
-    {"cmp4.gt",                 A2, OpX2TaC   (0xc, 3, 0, 0), {P2, P1, IMM8M1, R3}},
-    {"cmp4.ge",                 A2, OpX2TaC   (0xc, 3, 0, 0), {P2, P1, IMM8, R3}},
-    {"cmp4.lt.unc",     A2, OpX2TaC   (0xc, 3, 0, 1), {P1, P2, IMM8, R3}},
-    {"cmp4.le.unc",     A2, OpX2TaC   (0xc, 3, 0, 1), {P1, P2, IMM8M1, R3}},
-    {"cmp4.gt.unc",     A2, OpX2TaC   (0xc, 3, 0, 1), {P2, P1, IMM8M1, R3}},
-    {"cmp4.ge.unc",     A2, OpX2TaC   (0xc, 3, 0, 1), {P2, P1, IMM8, R3}},
-    {"cmp4.eq.and",     A2, OpX2TaC   (0xc, 3, 1, 0), {P1, P2, IMM8, R3}},
-    {"cmp4.ne.andcm",   A2, OpX2TaC   (0xc, 3, 1, 0), {P1, P2, IMM8, R3}, PSEUDO},
-    {"cmp4.ne.and",     A2, OpX2TaC   (0xc, 3, 1, 1), {P1, P2, IMM8, R3}},
-    {"cmp4.eq.andcm",   A2, OpX2TaC   (0xc, 3, 1, 1), {P1, P2, IMM8, R3}, PSEUDO},
-    {"cmp.ltu",                 A2, OpX2TbTaC (0xd, 0, 0, 0, 0), {P1, P2, R2, R3}},
-    {"cmp.leu",                 A2, OpX2TbTaC (0xd, 0, 0, 0, 0), {P2, P1, R3, R2}},
-    {"cmp.gtu",                 A2, OpX2TbTaC (0xd, 0, 0, 0, 0), {P1, P2, R3, R2}},
-    {"cmp.geu",                 A2, OpX2TbTaC (0xd, 0, 0, 0, 0), {P2, P1, R2, R3}},
-    {"cmp.ltu.unc",     A2, OpX2TbTaC (0xd, 0, 0, 0, 1), {P1, P2, R2, R3}},
-    {"cmp.leu.unc",     A2, OpX2TbTaC (0xd, 0, 0, 0, 1), {P2, P1, R3, R2}},
-    {"cmp.gtu.unc",     A2, OpX2TbTaC (0xd, 0, 0, 0, 1), {P1, P2, R3, R2}},
-    {"cmp.geu.unc",     A2, OpX2TbTaC (0xd, 0, 0, 0, 1), {P2, P1, R2, R3}},
-    {"cmp.eq.or",       A2, OpX2TbTaC (0xd, 0, 0, 1, 0), {P1, P2, R2, R3}},
-    {"cmp.ne.orcm",     A2, OpX2TbTaC (0xd, 0, 0, 1, 0), {P1, P2, R2, R3}, PSEUDO},
-    {"cmp.ne.or",       A2, OpX2TbTaC (0xd, 0, 0, 1, 1), {P1, P2, R2, R3}},
-    {"cmp.eq.orcm",     A2, OpX2TbTaC (0xd, 0, 0, 1, 1), {P1, P2, R2, R3}, PSEUDO},
-    {"cmp4.ltu",        A2, OpX2TbTaC (0xd, 1, 0, 0, 0), {P1, P2, R2, R3}},
-    {"cmp4.leu",        A2, OpX2TbTaC (0xd, 1, 0, 0, 0), {P2, P1, R3, R2}},
-    {"cmp4.gtu",        A2, OpX2TbTaC (0xd, 1, 0, 0, 0), {P1, P2, R3, R2}},
-    {"cmp4.geu",        A2, OpX2TbTaC (0xd, 1, 0, 0, 0), {P2, P1, R2, R3}},
-    {"cmp4.ltu.unc",    A2, OpX2TbTaC (0xd, 1, 0, 0, 1), {P1, P2, R2, R3}},
-    {"cmp4.leu.unc",    A2, OpX2TbTaC (0xd, 1, 0, 0, 1), {P2, P1, R3, R2}},
-    {"cmp4.gtu.unc",    A2, OpX2TbTaC (0xd, 1, 0, 0, 1), {P1, P2, R3, R2}},
-    {"cmp4.geu.unc",    A2, OpX2TbTaC (0xd, 1, 0, 0, 1), {P2, P1, R2, R3}},
-    {"cmp4.eq.or",      A2, OpX2TbTaC (0xd, 1, 0, 1, 0), {P1, P2, R2, R3}},
-    {"cmp4.ne.orcm",    A2, OpX2TbTaC (0xd, 1, 0, 1, 0), {P1, P2, R2, R3}, PSEUDO},
-    {"cmp4.ne.or",      A2, OpX2TbTaC (0xd, 1, 0, 1, 1), {P1, P2, R2, R3}},
-    {"cmp4.eq.orcm",    A2, OpX2TbTaC (0xd, 1, 0, 1, 1), {P1, P2, R2, R3}, PSEUDO},
-    {"cmp.gt.or",       A2, OpX2TbTaC (0xd, 0, 1, 0, 0), {P1, P2, GR0, R3}},
-    {"cmp.lt.or",       A2, OpX2TbTaC (0xd, 0, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.le.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 0, 0), {P1, P2, GR0, R3}, PSEUDO},
-    {"cmp.ge.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.le.or",       A2, OpX2TbTaC (0xd, 0, 1, 0, 1), {P1, P2, GR0, R3}},
-    {"cmp.ge.or",       A2, OpX2TbTaC (0xd, 0, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.gt.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 0, 1), {P1, P2, GR0, R3}, PSEUDO},
-    {"cmp.lt.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.ge.or",       A2, OpX2TbTaC (0xd, 0, 1, 1, 0), {P1, P2, GR0, R3}},
-    {"cmp.le.or",       A2, OpX2TbTaC (0xd, 0, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.lt.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 1, 0), {P1, P2, GR0, R3}, PSEUDO},
-    {"cmp.gt.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.lt.or",       A2, OpX2TbTaC (0xd, 0, 1, 1, 1), {P1, P2, GR0, R3}},
-    {"cmp.gt.or",       A2, OpX2TbTaC (0xd, 0, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.ge.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 1, 1), {P1, P2, GR0, R3}, PSEUDO},
-    {"cmp.le.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.gt.or",      A2, OpX2TbTaC (0xd, 1, 1, 0, 0), {P1, P2, GR0, R3}},
-    {"cmp4.lt.or",      A2, OpX2TbTaC (0xd, 1, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.le.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 0, 0), {P1, P2, GR0, R3}, PSEUDO},
-    {"cmp4.ge.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.le.or",      A2, OpX2TbTaC (0xd, 1, 1, 0, 1), {P1, P2, GR0, R3}},
-    {"cmp4.ge.or",      A2, OpX2TbTaC (0xd, 1, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.gt.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 0, 1), {P1, P2, GR0, R3}, PSEUDO},
-    {"cmp4.lt.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.ge.or",      A2, OpX2TbTaC (0xd, 1, 1, 1, 0), {P1, P2, GR0, R3}},
-    {"cmp4.le.or",      A2, OpX2TbTaC (0xd, 1, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.lt.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 1, 0), {P1, P2, GR0, R3}, PSEUDO},
-    {"cmp4.gt.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.lt.or",      A2, OpX2TbTaC (0xd, 1, 1, 1, 1), {P1, P2, GR0, R3}},
-    {"cmp4.gt.or",      A2, OpX2TbTaC (0xd, 1, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.ge.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 1, 1), {P1, P2, GR0, R3}, PSEUDO},
-    {"cmp4.le.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.ltu",                 A2, OpX2TaC   (0xd, 2, 0, 0), {P1, P2, IMM8, R3}},
-    {"cmp.leu",                 A2, OpX2TaC   (0xd, 2, 0, 0), {P1, P2, IMM8M1U8, R3}},
-    {"cmp.gtu",                 A2, OpX2TaC   (0xd, 2, 0, 0), {P2, P1, IMM8M1U8, R3}},
-    {"cmp.geu",                 A2, OpX2TaC   (0xd, 2, 0, 0), {P2, P1, IMM8, R3}},
-    {"cmp.ltu.unc",     A2, OpX2TaC   (0xd, 2, 0, 1), {P1, P2, IMM8, R3}},
-    {"cmp.leu.unc",     A2, OpX2TaC   (0xd, 2, 0, 1), {P1, P2, IMM8M1U8, R3}},
-    {"cmp.gtu.unc",     A2, OpX2TaC   (0xd, 2, 0, 1), {P2, P1, IMM8M1U8, R3}},
-    {"cmp.geu.unc",     A2, OpX2TaC   (0xd, 2, 0, 1), {P2, P1, IMM8, R3}},
-    {"cmp.eq.or",       A2, OpX2TaC   (0xd, 2, 1, 0), {P1, P2, IMM8, R3}},
-    {"cmp.ne.orcm",     A2, OpX2TaC   (0xd, 2, 1, 0), {P1, P2, IMM8, R3}, PSEUDO},
-    {"cmp.ne.or",       A2, OpX2TaC   (0xd, 2, 1, 1), {P1, P2, IMM8, R3}},
-    {"cmp.eq.orcm",     A2, OpX2TaC   (0xd, 2, 1, 1), {P1, P2, IMM8, R3}, PSEUDO},
-    {"cmp4.ltu",        A2, OpX2TaC   (0xd, 3, 0, 0), {P1, P2, IMM8U4, R3}},
-    {"cmp4.leu",        A2, OpX2TaC   (0xd, 3, 0, 0), {P1, P2, IMM8M1U4, R3}},
-    {"cmp4.gtu",        A2, OpX2TaC   (0xd, 3, 0, 0), {P2, P1, IMM8M1U4, R3}},
-    {"cmp4.geu",        A2, OpX2TaC   (0xd, 3, 0, 0), {P2, P1, IMM8U4, R3}},
-    {"cmp4.ltu.unc",    A2, OpX2TaC   (0xd, 3, 0, 1), {P1, P2, IMM8U4, R3}},
-    {"cmp4.leu.unc",    A2, OpX2TaC   (0xd, 3, 0, 1), {P1, P2, IMM8M1U4, R3}},
-    {"cmp4.gtu.unc",    A2, OpX2TaC   (0xd, 3, 0, 1), {P2, P1, IMM8M1U4, R3}},
-    {"cmp4.geu.unc",    A2, OpX2TaC   (0xd, 3, 0, 1), {P2, P1, IMM8U4, R3}},
-    {"cmp4.eq.or",      A2, OpX2TaC   (0xd, 3, 1, 0), {P1, P2, IMM8, R3}},
-    {"cmp4.ne.orcm",    A2, OpX2TaC   (0xd, 3, 1, 0), {P1, P2, IMM8, R3}, PSEUDO},
-    {"cmp4.ne.or",      A2, OpX2TaC   (0xd, 3, 1, 1), {P1, P2, IMM8, R3}},
-    {"cmp4.eq.orcm",    A2, OpX2TaC   (0xd, 3, 1, 1), {P1, P2, IMM8, R3}, PSEUDO},
-    {"cmp.eq",          A2, OpX2TbTaC (0xe, 0, 0, 0, 0), {P1, P2, R2, R3}},
-    {"cmp.ne",          A2, OpX2TbTaC (0xe, 0, 0, 0, 0), {P2, P1, R2, R3}},
-    {"cmp.eq.unc",      A2, OpX2TbTaC (0xe, 0, 0, 0, 1), {P1, P2, R2, R3}},
-    {"cmp.ne.unc",      A2, OpX2TbTaC (0xe, 0, 0, 0, 1), {P2, P1, R2, R3}},
-    {"cmp.eq.or.andcm",         A2, OpX2TbTaC (0xe, 0, 0, 1, 0), {P1, P2, R2, R3}},
-    {"cmp.ne.and.orcm",         A2, OpX2TbTaC (0xe, 0, 0, 1, 0), {P2, P1, R2, R3}, PSEUDO},
-    {"cmp.ne.or.andcm",         A2, OpX2TbTaC (0xe, 0, 0, 1, 1), {P1, P2, R2, R3}},
-    {"cmp.eq.and.orcm",         A2, OpX2TbTaC (0xe, 0, 0, 1, 1), {P2, P1, R2, R3}, PSEUDO},
-    {"cmp4.eq",                 A2, OpX2TbTaC (0xe, 1, 0, 0, 0), {P1, P2, R2, R3}},
-    {"cmp4.ne",                 A2, OpX2TbTaC (0xe, 1, 0, 0, 0), {P2, P1, R2, R3}},
-    {"cmp4.eq.unc",     A2, OpX2TbTaC (0xe, 1, 0, 0, 1), {P1, P2, R2, R3}},
-    {"cmp4.ne.unc",     A2, OpX2TbTaC (0xe, 1, 0, 0, 1), {P2, P1, R2, R3}},
-    {"cmp4.eq.or.andcm", A2, OpX2TbTaC (0xe, 1, 0, 1, 0), {P1, P2, R2, R3}},
-    {"cmp4.ne.and.orcm", A2, OpX2TbTaC (0xe, 1, 0, 1, 0), {P2, P1, R2, R3}, PSEUDO},
-    {"cmp4.ne.or.andcm", A2, OpX2TbTaC (0xe, 1, 0, 1, 1), {P1, P2, R2, R3}},
-    {"cmp4.eq.and.orcm", A2, OpX2TbTaC (0xe, 1, 0, 1, 1), {P2, P1, R2, R3}, PSEUDO},
-    {"cmp.gt.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 0), {P1, P2, GR0, R3}},
-    {"cmp.lt.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.le.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 0), {P2, P1, GR0, R3}, PSEUDO},
-    {"cmp.ge.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 0), {P2, P1, R3, GR0}, PSEUDO},
-    {"cmp.le.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 1), {P1, P2, GR0, R3}},
-    {"cmp.ge.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.gt.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 1), {P2, P1, GR0, R3}, PSEUDO},
-    {"cmp.lt.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 1), {P2, P1, R3, GR0}, PSEUDO},
-    {"cmp.ge.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 0), {P1, P2, GR0, R3}},
-    {"cmp.le.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.lt.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 0), {P2, P1, GR0, R3}, PSEUDO},
-    {"cmp.gt.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 0), {P2, P1, R3, GR0}, PSEUDO},
-    {"cmp.lt.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 1), {P1, P2, GR0, R3}},
-    {"cmp.gt.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp.ge.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 1), {P2, P1, GR0, R3}, PSEUDO},
-    {"cmp.le.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 1), {P2, P1, R3, GR0}, PSEUDO},
-    {"cmp4.gt.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 0), {P1, P2, GR0, R3}},
-    {"cmp4.lt.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.le.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 0), {P2, P1, GR0, R3}, PSEUDO},
-    {"cmp4.ge.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 0), {P2, P1, R3, GR0}, PSEUDO},
-    {"cmp4.le.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 1), {P1, P2, GR0, R3}},
-    {"cmp4.ge.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.gt.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 1), {P2, P1, GR0, R3}, PSEUDO},
-    {"cmp4.lt.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 1), {P2, P1, R3, GR0}, PSEUDO},
-    {"cmp4.ge.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 0), {P1, P2, GR0, R3}},
-    {"cmp4.le.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.lt.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 0), {P2, P1, GR0, R3}, PSEUDO},
-    {"cmp4.gt.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 0), {P2, P1, R3, GR0}, PSEUDO},
-    {"cmp4.lt.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 1), {P1, P2, GR0, R3}},
-    {"cmp4.gt.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO},
-    {"cmp4.ge.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 1), {P2, P1, GR0, R3}, PSEUDO},
-    {"cmp4.le.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 1), {P2, P1, R3, GR0}, PSEUDO},
-    {"cmp.eq",          A2, OpX2TaC   (0xe, 2, 0, 0), {P1, P2, IMM8, R3}},
-    {"cmp.ne",          A2, OpX2TaC   (0xe, 2, 0, 0), {P2, P1, IMM8, R3}},
-    {"cmp.eq.unc",      A2, OpX2TaC   (0xe, 2, 0, 1), {P1, P2, IMM8, R3}},
-    {"cmp.ne.unc",      A2, OpX2TaC   (0xe, 2, 0, 1), {P2, P1, IMM8, R3}},
-    {"cmp.eq.or.andcm",         A2, OpX2TaC   (0xe, 2, 1, 0), {P1, P2, IMM8, R3}},
-    {"cmp.ne.and.orcm",         A2, OpX2TaC   (0xe, 2, 1, 0), {P2, P1, IMM8, R3}, PSEUDO},
-    {"cmp.ne.or.andcm",         A2, OpX2TaC   (0xe, 2, 1, 1), {P1, P2, IMM8, R3}},
-    {"cmp.eq.and.orcm",         A2, OpX2TaC   (0xe, 2, 1, 1), {P2, P1, IMM8, R3}, PSEUDO},
-    {"cmp4.eq",                 A2, OpX2TaC   (0xe, 3, 0, 0), {P1, P2, IMM8, R3}},
-    {"cmp4.ne",                 A2, OpX2TaC   (0xe, 3, 0, 0), {P2, P1, IMM8, R3}},
-    {"cmp4.eq.unc",     A2, OpX2TaC   (0xe, 3, 0, 1), {P1, P2, IMM8, R3}},
-    {"cmp4.ne.unc",     A2, OpX2TaC   (0xe, 3, 0, 1), {P2, P1, IMM8, R3}},
-    {"cmp4.eq.or.andcm", A2, OpX2TaC   (0xe, 3, 1, 0), {P1, P2, IMM8, R3}},
-    {"cmp4.ne.and.orcm", A2, OpX2TaC   (0xe, 3, 1, 0), {P2, P1, IMM8, R3}, PSEUDO},
-    {"cmp4.ne.or.andcm", A2, OpX2TaC   (0xe, 3, 1, 1), {P1, P2, IMM8, R3}},
-    {"cmp4.eq.and.orcm", A2, OpX2TaC   (0xe, 3, 1, 1), {P2, P1, IMM8, R3}, PSEUDO},
+    {"cmp.lt",          A2, OpX2TbTaC (0xc, 0, 0, 0, 0), {P1, P2, R2, R3}, EMPTY},
+    {"cmp.le",          A2, OpX2TbTaC (0xc, 0, 0, 0, 0), {P2, P1, R3, R2}, EMPTY},
+    {"cmp.gt",          A2, OpX2TbTaC (0xc, 0, 0, 0, 0), {P1, P2, R3, R2}, EMPTY},
+    {"cmp.ge",          A2, OpX2TbTaC (0xc, 0, 0, 0, 0), {P2, P1, R2, R3}, EMPTY},
+    {"cmp.lt.unc",      A2, OpX2TbTaC (0xc, 0, 0, 0, 1), {P1, P2, R2, R3}, EMPTY},
+    {"cmp.le.unc",      A2, OpX2TbTaC (0xc, 0, 0, 0, 1), {P2, P1, R3, R2}, EMPTY},
+    {"cmp.gt.unc",      A2, OpX2TbTaC (0xc, 0, 0, 0, 1), {P1, P2, R3, R2}, EMPTY},
+    {"cmp.ge.unc",      A2, OpX2TbTaC (0xc, 0, 0, 0, 1), {P2, P1, R2, R3}, EMPTY},
+    {"cmp.eq.and",      A2, OpX2TbTaC (0xc, 0, 0, 1, 0), {P1, P2, R2, R3}, EMPTY},
+    {"cmp.ne.andcm",    A2, OpX2TbTaC (0xc, 0, 0, 1, 0), {P1, P2, R2, R3}, PSEUDO, 0, NULL},
+    {"cmp.ne.and",      A2, OpX2TbTaC (0xc, 0, 0, 1, 1), {P1, P2, R2, R3}, EMPTY},
+    {"cmp.eq.andcm",    A2, OpX2TbTaC (0xc, 0, 0, 1, 1), {P1, P2, R2, R3}, PSEUDO, 0, NULL},
+    {"cmp4.lt",                 A2, OpX2TbTaC (0xc, 1, 0, 0, 0), {P1, P2, R2, R3}, EMPTY},
+    {"cmp4.le",                 A2, OpX2TbTaC (0xc, 1, 0, 0, 0), {P2, P1, R3, R2}, EMPTY},
+    {"cmp4.gt",                 A2, OpX2TbTaC (0xc, 1, 0, 0, 0), {P1, P2, R3, R2}, EMPTY},
+    {"cmp4.ge",                 A2, OpX2TbTaC (0xc, 1, 0, 0, 0), {P2, P1, R2, R3}, EMPTY},
+    {"cmp4.lt.unc",     A2, OpX2TbTaC (0xc, 1, 0, 0, 1), {P1, P2, R2, R3}, EMPTY},
+    {"cmp4.le.unc",     A2, OpX2TbTaC (0xc, 1, 0, 0, 1), {P2, P1, R3, R2}, EMPTY},
+    {"cmp4.gt.unc",     A2, OpX2TbTaC (0xc, 1, 0, 0, 1), {P1, P2, R3, R2}, EMPTY},
+    {"cmp4.ge.unc",     A2, OpX2TbTaC (0xc, 1, 0, 0, 1), {P2, P1, R2, R3}, EMPTY},
+    {"cmp4.eq.and",     A2, OpX2TbTaC (0xc, 1, 0, 1, 0), {P1, P2, R2, R3}, EMPTY},
+    {"cmp4.ne.andcm",   A2, OpX2TbTaC (0xc, 1, 0, 1, 0), {P1, P2, R2, R3}, PSEUDO, 0, NULL},
+    {"cmp4.ne.and",     A2, OpX2TbTaC (0xc, 1, 0, 1, 1), {P1, P2, R2, R3}, EMPTY},
+    {"cmp4.eq.andcm",   A2, OpX2TbTaC (0xc, 1, 0, 1, 1), {P1, P2, R2, R3}, PSEUDO, 0, NULL},
+    {"cmp.gt.and",      A2, OpX2TbTaC (0xc, 0, 1, 0, 0), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp.lt.and",      A2, OpX2TbTaC (0xc, 0, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.le.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 0, 0), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp.ge.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.le.and",      A2, OpX2TbTaC (0xc, 0, 1, 0, 1), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp.ge.and",      A2, OpX2TbTaC (0xc, 0, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.gt.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 0, 1), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp.lt.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.ge.and",      A2, OpX2TbTaC (0xc, 0, 1, 1, 0), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp.le.and",      A2, OpX2TbTaC (0xc, 0, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.lt.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 1, 0), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp.gt.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.lt.and",      A2, OpX2TbTaC (0xc, 0, 1, 1, 1), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp.gt.and",      A2, OpX2TbTaC (0xc, 0, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.ge.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 1, 1), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp.le.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.gt.and",     A2, OpX2TbTaC (0xc, 1, 1, 0, 0), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp4.lt.and",     A2, OpX2TbTaC (0xc, 1, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.le.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 0, 0), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp4.ge.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.le.and",     A2, OpX2TbTaC (0xc, 1, 1, 0, 1), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp4.ge.and",     A2, OpX2TbTaC (0xc, 1, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.gt.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 0, 1), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp4.lt.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.ge.and",     A2, OpX2TbTaC (0xc, 1, 1, 1, 0), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp4.le.and",     A2, OpX2TbTaC (0xc, 1, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.lt.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 1, 0), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp4.gt.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.lt.and",     A2, OpX2TbTaC (0xc, 1, 1, 1, 1), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp4.gt.and",     A2, OpX2TbTaC (0xc, 1, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.ge.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 1, 1), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp4.le.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.lt",          A2, OpX2TaC   (0xc, 2, 0, 0), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp.le",          A2, OpX2TaC   (0xc, 2, 0, 0), {P1, P2, IMM8M1, R3}, EMPTY},
+    {"cmp.gt",          A2, OpX2TaC   (0xc, 2, 0, 0), {P2, P1, IMM8M1, R3}, EMPTY},
+    {"cmp.ge",          A2, OpX2TaC   (0xc, 2, 0, 0), {P2, P1, IMM8, R3}, EMPTY},
+    {"cmp.lt.unc",      A2, OpX2TaC   (0xc, 2, 0, 1), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp.le.unc",      A2, OpX2TaC   (0xc, 2, 0, 1), {P1, P2, IMM8M1, R3}, EMPTY},
+    {"cmp.gt.unc",      A2, OpX2TaC   (0xc, 2, 0, 1), {P2, P1, IMM8M1, R3}, EMPTY},
+    {"cmp.ge.unc",      A2, OpX2TaC   (0xc, 2, 0, 1), {P2, P1, IMM8, R3}, EMPTY},
+    {"cmp.eq.and",      A2, OpX2TaC   (0xc, 2, 1, 0), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp.ne.andcm",    A2, OpX2TaC   (0xc, 2, 1, 0), {P1, P2, IMM8, R3}, PSEUDO, 0, NULL},
+    {"cmp.ne.and",      A2, OpX2TaC   (0xc, 2, 1, 1), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp.eq.andcm",    A2, OpX2TaC   (0xc, 2, 1, 1), {P1, P2, IMM8, R3}, PSEUDO, 0, NULL},
+    {"cmp4.lt",                 A2, OpX2TaC   (0xc, 3, 0, 0), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp4.le",                 A2, OpX2TaC   (0xc, 3, 0, 0), {P1, P2, IMM8M1, R3}, EMPTY},
+    {"cmp4.gt",                 A2, OpX2TaC   (0xc, 3, 0, 0), {P2, P1, IMM8M1, R3}, EMPTY},
+    {"cmp4.ge",                 A2, OpX2TaC   (0xc, 3, 0, 0), {P2, P1, IMM8, R3}, EMPTY},
+    {"cmp4.lt.unc",     A2, OpX2TaC   (0xc, 3, 0, 1), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp4.le.unc",     A2, OpX2TaC   (0xc, 3, 0, 1), {P1, P2, IMM8M1, R3}, EMPTY},
+    {"cmp4.gt.unc",     A2, OpX2TaC   (0xc, 3, 0, 1), {P2, P1, IMM8M1, R3}, EMPTY},
+    {"cmp4.ge.unc",     A2, OpX2TaC   (0xc, 3, 0, 1), {P2, P1, IMM8, R3}, EMPTY},
+    {"cmp4.eq.and",     A2, OpX2TaC   (0xc, 3, 1, 0), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp4.ne.andcm",   A2, OpX2TaC   (0xc, 3, 1, 0), {P1, P2, IMM8, R3}, PSEUDO, 0, NULL},
+    {"cmp4.ne.and",     A2, OpX2TaC   (0xc, 3, 1, 1), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp4.eq.andcm",   A2, OpX2TaC   (0xc, 3, 1, 1), {P1, P2, IMM8, R3}, PSEUDO, 0, NULL},
+    {"cmp.ltu",                 A2, OpX2TbTaC (0xd, 0, 0, 0, 0), {P1, P2, R2, R3}, EMPTY},
+    {"cmp.leu",                 A2, OpX2TbTaC (0xd, 0, 0, 0, 0), {P2, P1, R3, R2}, EMPTY},
+    {"cmp.gtu",                 A2, OpX2TbTaC (0xd, 0, 0, 0, 0), {P1, P2, R3, R2}, EMPTY},
+    {"cmp.geu",                 A2, OpX2TbTaC (0xd, 0, 0, 0, 0), {P2, P1, R2, R3}, EMPTY},
+    {"cmp.ltu.unc",     A2, OpX2TbTaC (0xd, 0, 0, 0, 1), {P1, P2, R2, R3}, EMPTY},
+    {"cmp.leu.unc",     A2, OpX2TbTaC (0xd, 0, 0, 0, 1), {P2, P1, R3, R2}, EMPTY},
+    {"cmp.gtu.unc",     A2, OpX2TbTaC (0xd, 0, 0, 0, 1), {P1, P2, R3, R2}, EMPTY},
+    {"cmp.geu.unc",     A2, OpX2TbTaC (0xd, 0, 0, 0, 1), {P2, P1, R2, R3}, EMPTY},
+    {"cmp.eq.or",       A2, OpX2TbTaC (0xd, 0, 0, 1, 0), {P1, P2, R2, R3}, EMPTY},
+    {"cmp.ne.orcm",     A2, OpX2TbTaC (0xd, 0, 0, 1, 0), {P1, P2, R2, R3}, PSEUDO, 0, NULL},
+    {"cmp.ne.or",       A2, OpX2TbTaC (0xd, 0, 0, 1, 1), {P1, P2, R2, R3}, EMPTY},
+    {"cmp.eq.orcm",     A2, OpX2TbTaC (0xd, 0, 0, 1, 1), {P1, P2, R2, R3}, PSEUDO, 0, NULL},
+    {"cmp4.ltu",        A2, OpX2TbTaC (0xd, 1, 0, 0, 0), {P1, P2, R2, R3}, EMPTY},
+    {"cmp4.leu",        A2, OpX2TbTaC (0xd, 1, 0, 0, 0), {P2, P1, R3, R2}, EMPTY},
+    {"cmp4.gtu",        A2, OpX2TbTaC (0xd, 1, 0, 0, 0), {P1, P2, R3, R2}, EMPTY},
+    {"cmp4.geu",        A2, OpX2TbTaC (0xd, 1, 0, 0, 0), {P2, P1, R2, R3}, EMPTY},
+    {"cmp4.ltu.unc",    A2, OpX2TbTaC (0xd, 1, 0, 0, 1), {P1, P2, R2, R3}, EMPTY},
+    {"cmp4.leu.unc",    A2, OpX2TbTaC (0xd, 1, 0, 0, 1), {P2, P1, R3, R2}, EMPTY},
+    {"cmp4.gtu.unc",    A2, OpX2TbTaC (0xd, 1, 0, 0, 1), {P1, P2, R3, R2}, EMPTY},
+    {"cmp4.geu.unc",    A2, OpX2TbTaC (0xd, 1, 0, 0, 1), {P2, P1, R2, R3}, EMPTY},
+    {"cmp4.eq.or",      A2, OpX2TbTaC (0xd, 1, 0, 1, 0), {P1, P2, R2, R3}, EMPTY},
+    {"cmp4.ne.orcm",    A2, OpX2TbTaC (0xd, 1, 0, 1, 0), {P1, P2, R2, R3}, PSEUDO, 0, NULL},
+    {"cmp4.ne.or",      A2, OpX2TbTaC (0xd, 1, 0, 1, 1), {P1, P2, R2, R3}, EMPTY},
+    {"cmp4.eq.orcm",    A2, OpX2TbTaC (0xd, 1, 0, 1, 1), {P1, P2, R2, R3}, PSEUDO, 0, NULL},
+    {"cmp.gt.or",       A2, OpX2TbTaC (0xd, 0, 1, 0, 0), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp.lt.or",       A2, OpX2TbTaC (0xd, 0, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.le.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 0, 0), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp.ge.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.le.or",       A2, OpX2TbTaC (0xd, 0, 1, 0, 1), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp.ge.or",       A2, OpX2TbTaC (0xd, 0, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.gt.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 0, 1), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp.lt.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.ge.or",       A2, OpX2TbTaC (0xd, 0, 1, 1, 0), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp.le.or",       A2, OpX2TbTaC (0xd, 0, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.lt.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 1, 0), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp.gt.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.lt.or",       A2, OpX2TbTaC (0xd, 0, 1, 1, 1), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp.gt.or",       A2, OpX2TbTaC (0xd, 0, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.ge.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 1, 1), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp.le.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.gt.or",      A2, OpX2TbTaC (0xd, 1, 1, 0, 0), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp4.lt.or",      A2, OpX2TbTaC (0xd, 1, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.le.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 0, 0), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp4.ge.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.le.or",      A2, OpX2TbTaC (0xd, 1, 1, 0, 1), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp4.ge.or",      A2, OpX2TbTaC (0xd, 1, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.gt.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 0, 1), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp4.lt.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.ge.or",      A2, OpX2TbTaC (0xd, 1, 1, 1, 0), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp4.le.or",      A2, OpX2TbTaC (0xd, 1, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.lt.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 1, 0), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp4.gt.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.lt.or",      A2, OpX2TbTaC (0xd, 1, 1, 1, 1), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp4.gt.or",      A2, OpX2TbTaC (0xd, 1, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.ge.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 1, 1), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp4.le.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.ltu",                 A2, OpX2TaC   (0xd, 2, 0, 0), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp.leu",                 A2, OpX2TaC   (0xd, 2, 0, 0), {P1, P2, IMM8M1U8, R3}, EMPTY},
+    {"cmp.gtu",                 A2, OpX2TaC   (0xd, 2, 0, 0), {P2, P1, IMM8M1U8, R3}, EMPTY},
+    {"cmp.geu",                 A2, OpX2TaC   (0xd, 2, 0, 0), {P2, P1, IMM8, R3}, EMPTY},
+    {"cmp.ltu.unc",     A2, OpX2TaC   (0xd, 2, 0, 1), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp.leu.unc",     A2, OpX2TaC   (0xd, 2, 0, 1), {P1, P2, IMM8M1U8, R3}, EMPTY},
+    {"cmp.gtu.unc",     A2, OpX2TaC   (0xd, 2, 0, 1), {P2, P1, IMM8M1U8, R3}, EMPTY},
+    {"cmp.geu.unc",     A2, OpX2TaC   (0xd, 2, 0, 1), {P2, P1, IMM8, R3}, EMPTY},
+    {"cmp.eq.or",       A2, OpX2TaC   (0xd, 2, 1, 0), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp.ne.orcm",     A2, OpX2TaC   (0xd, 2, 1, 0), {P1, P2, IMM8, R3}, PSEUDO, 0, NULL},
+    {"cmp.ne.or",       A2, OpX2TaC   (0xd, 2, 1, 1), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp.eq.orcm",     A2, OpX2TaC   (0xd, 2, 1, 1), {P1, P2, IMM8, R3}, PSEUDO, 0, NULL},
+    {"cmp4.ltu",        A2, OpX2TaC   (0xd, 3, 0, 0), {P1, P2, IMM8U4, R3}, EMPTY},
+    {"cmp4.leu",        A2, OpX2TaC   (0xd, 3, 0, 0), {P1, P2, IMM8M1U4, R3}, EMPTY},
+    {"cmp4.gtu",        A2, OpX2TaC   (0xd, 3, 0, 0), {P2, P1, IMM8M1U4, R3}, EMPTY},
+    {"cmp4.geu",        A2, OpX2TaC   (0xd, 3, 0, 0), {P2, P1, IMM8U4, R3}, EMPTY},
+    {"cmp4.ltu.unc",    A2, OpX2TaC   (0xd, 3, 0, 1), {P1, P2, IMM8U4, R3}, EMPTY},
+    {"cmp4.leu.unc",    A2, OpX2TaC   (0xd, 3, 0, 1), {P1, P2, IMM8M1U4, R3}, EMPTY},
+    {"cmp4.gtu.unc",    A2, OpX2TaC   (0xd, 3, 0, 1), {P2, P1, IMM8M1U4, R3}, EMPTY},
+    {"cmp4.geu.unc",    A2, OpX2TaC   (0xd, 3, 0, 1), {P2, P1, IMM8U4, R3}, EMPTY},
+    {"cmp4.eq.or",      A2, OpX2TaC   (0xd, 3, 1, 0), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp4.ne.orcm",    A2, OpX2TaC   (0xd, 3, 1, 0), {P1, P2, IMM8, R3}, PSEUDO, 0, NULL},
+    {"cmp4.ne.or",      A2, OpX2TaC   (0xd, 3, 1, 1), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp4.eq.orcm",    A2, OpX2TaC   (0xd, 3, 1, 1), {P1, P2, IMM8, R3}, PSEUDO, 0, NULL},
+    {"cmp.eq",          A2, OpX2TbTaC (0xe, 0, 0, 0, 0), {P1, P2, R2, R3}, EMPTY},
+    {"cmp.ne",          A2, OpX2TbTaC (0xe, 0, 0, 0, 0), {P2, P1, R2, R3}, EMPTY},
+    {"cmp.eq.unc",      A2, OpX2TbTaC (0xe, 0, 0, 0, 1), {P1, P2, R2, R3}, EMPTY},
+    {"cmp.ne.unc",      A2, OpX2TbTaC (0xe, 0, 0, 0, 1), {P2, P1, R2, R3}, EMPTY},
+    {"cmp.eq.or.andcm",         A2, OpX2TbTaC (0xe, 0, 0, 1, 0), {P1, P2, R2, R3}, EMPTY},
+    {"cmp.ne.and.orcm",         A2, OpX2TbTaC (0xe, 0, 0, 1, 0), {P2, P1, R2, R3}, PSEUDO, 0, NULL},
+    {"cmp.ne.or.andcm",         A2, OpX2TbTaC (0xe, 0, 0, 1, 1), {P1, P2, R2, R3}, EMPTY},
+    {"cmp.eq.and.orcm",         A2, OpX2TbTaC (0xe, 0, 0, 1, 1), {P2, P1, R2, R3}, PSEUDO, 0, NULL},
+    {"cmp4.eq",                 A2, OpX2TbTaC (0xe, 1, 0, 0, 0), {P1, P2, R2, R3}, EMPTY},
+    {"cmp4.ne",                 A2, OpX2TbTaC (0xe, 1, 0, 0, 0), {P2, P1, R2, R3}, EMPTY},
+    {"cmp4.eq.unc",     A2, OpX2TbTaC (0xe, 1, 0, 0, 1), {P1, P2, R2, R3}, EMPTY},
+    {"cmp4.ne.unc",     A2, OpX2TbTaC (0xe, 1, 0, 0, 1), {P2, P1, R2, R3}, EMPTY},
+    {"cmp4.eq.or.andcm", A2, OpX2TbTaC (0xe, 1, 0, 1, 0), {P1, P2, R2, R3}, EMPTY},
+    {"cmp4.ne.and.orcm", A2, OpX2TbTaC (0xe, 1, 0, 1, 0), {P2, P1, R2, R3}, PSEUDO, 0, NULL},
+    {"cmp4.ne.or.andcm", A2, OpX2TbTaC (0xe, 1, 0, 1, 1), {P1, P2, R2, R3}, EMPTY},
+    {"cmp4.eq.and.orcm", A2, OpX2TbTaC (0xe, 1, 0, 1, 1), {P2, P1, R2, R3}, PSEUDO, 0, NULL},
+    {"cmp.gt.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 0), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp.lt.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.le.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 0), {P2, P1, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp.ge.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 0), {P2, P1, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.le.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 1), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp.ge.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.gt.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 1), {P2, P1, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp.lt.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 1), {P2, P1, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.ge.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 0), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp.le.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.lt.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 0), {P2, P1, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp.gt.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 0), {P2, P1, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.lt.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 1), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp.gt.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.ge.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 1), {P2, P1, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp.le.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 1), {P2, P1, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.gt.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 0), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp4.lt.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.le.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 0), {P2, P1, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp4.ge.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 0), {P2, P1, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.le.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 1), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp4.ge.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.gt.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 1), {P2, P1, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp4.lt.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 1), {P2, P1, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.ge.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 0), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp4.le.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.lt.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 0), {P2, P1, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp4.gt.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 0), {P2, P1, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.lt.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 1), {P1, P2, GR0, R3}, EMPTY},
+    {"cmp4.gt.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp4.ge.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 1), {P2, P1, GR0, R3}, PSEUDO, 0, NULL},
+    {"cmp4.le.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 1), {P2, P1, R3, GR0}, PSEUDO, 0, NULL},
+    {"cmp.eq",          A2, OpX2TaC   (0xe, 2, 0, 0), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp.ne",          A2, OpX2TaC   (0xe, 2, 0, 0), {P2, P1, IMM8, R3}, EMPTY},
+    {"cmp.eq.unc",      A2, OpX2TaC   (0xe, 2, 0, 1), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp.ne.unc",      A2, OpX2TaC   (0xe, 2, 0, 1), {P2, P1, IMM8, R3}, EMPTY},
+    {"cmp.eq.or.andcm",         A2, OpX2TaC   (0xe, 2, 1, 0), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp.ne.and.orcm",         A2, OpX2TaC   (0xe, 2, 1, 0), {P2, P1, IMM8, R3}, PSEUDO, 0, NULL},
+    {"cmp.ne.or.andcm",         A2, OpX2TaC   (0xe, 2, 1, 1), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp.eq.and.orcm",         A2, OpX2TaC   (0xe, 2, 1, 1), {P2, P1, IMM8, R3}, PSEUDO, 0, NULL},
+    {"cmp4.eq",                 A2, OpX2TaC   (0xe, 3, 0, 0), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp4.ne",                 A2, OpX2TaC   (0xe, 3, 0, 0), {P2, P1, IMM8, R3}, EMPTY},
+    {"cmp4.eq.unc",     A2, OpX2TaC   (0xe, 3, 0, 1), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp4.ne.unc",     A2, OpX2TaC   (0xe, 3, 0, 1), {P2, P1, IMM8, R3}, EMPTY},
+    {"cmp4.eq.or.andcm", A2, OpX2TaC   (0xe, 3, 1, 0), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp4.ne.and.orcm", A2, OpX2TaC   (0xe, 3, 1, 0), {P2, P1, IMM8, R3}, PSEUDO, 0, NULL},
+    {"cmp4.ne.or.andcm", A2, OpX2TaC   (0xe, 3, 1, 1), {P1, P2, IMM8, R3}, EMPTY},
+    {"cmp4.eq.and.orcm", A2, OpX2TaC   (0xe, 3, 1, 1), {P2, P1, IMM8, R3}, PSEUDO, 0, NULL},
 
-    {0}
+    {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
   };
 
 #undef A
@@ -410,3 +414,4 @@ struct ia64_opcode ia64_opcodes_a[] =
 #undef OpX2TaC
 #undef OpX2aZaZbX4
 #undef OpX2aZaZbX4X2b
+#undef EMPTY
index 9a4a8506998c86631223aa602f800a19f554d2b3..efc2536e8bfad6306116b83aaab6359f4f7b55ac 100644 (file)
@@ -1,5 +1,5 @@
 /* ia64-opc-b.c -- IA-64 `B' opcode table.
-   Copyright 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
 
    This file is part of GDB, GAS, and the GNU binutils.
        (bOp (a) | bX6 (b) | bIh (c) | bWhb (d)), \
        (mOp | mX6 | mIh | mWhb)
 
+/* Used to initialise unused fields in ia64_opcode struct,
+   in order to stop gcc from complaining.  */
+#define EMPTY 0,0,NULL
+
 struct ia64_opcode ia64_opcodes_b[] =
   {
     /* B-type instruction encodings (sorted according to major opcode) */
 
 #define BR(a,b) \
-      B0, OpX6BtypePaWhaDPr (0, 0x20, 0, a, 0, b, 0), {B2}, PSEUDO
+      B0, OpX6BtypePaWhaDPr (0, 0x20, 0, a, 0, b, 0), {B2}, PSEUDO, 0, NULL
     {"br.few",         BR (0, 0)},
     {"br",             BR (0, 0)},
     {"br.few.clr",     BR (0, 1)},
@@ -83,23 +87,25 @@ struct ia64_opcode ia64_opcodes_b[] =
     {"br.many.clr",    BR (1, 1)},
 #undef BR
 
-#define BR(a,b,c,d,e)  B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}
+#define BR(a,b,c,d,e)  B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, EMPTY
+#define BRP(a,b,c,d,e) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, PSEUDO, 0, NULL
+#define BRT(a,b,c,d,e,f) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, f, 0, NULL
     {"br.cond.sptk.few",       BR (0x20, 0, 0, 0, 0)},
-    {"br.cond.sptk",           BR (0x20, 0, 0, 0, 0), PSEUDO},
+    {"br.cond.sptk",           BRP (0x20, 0, 0, 0, 0)},
     {"br.cond.sptk.few.clr",   BR (0x20, 0, 0, 0, 1)},
-    {"br.cond.sptk.clr",       BR (0x20, 0, 0, 0, 1), PSEUDO},
+    {"br.cond.sptk.clr",       BRP (0x20, 0, 0, 0, 1)},
     {"br.cond.spnt.few",       BR (0x20, 0, 0, 1, 0)},
-    {"br.cond.spnt",           BR (0x20, 0, 0, 1, 0), PSEUDO},
+    {"br.cond.spnt",           BRP (0x20, 0, 0, 1, 0)},
     {"br.cond.spnt.few.clr",   BR (0x20, 0, 0, 1, 1)},
-    {"br.cond.spnt.clr",       BR (0x20, 0, 0, 1, 1), PSEUDO},
+    {"br.cond.spnt.clr",       BRP (0x20, 0, 0, 1, 1)},
     {"br.cond.dptk.few",       BR (0x20, 0, 0, 2, 0)},
-    {"br.cond.dptk",           BR (0x20, 0, 0, 2, 0), PSEUDO},
+    {"br.cond.dptk",           BRP (0x20, 0, 0, 2, 0)},
     {"br.cond.dptk.few.clr",   BR (0x20, 0, 0, 2, 1)},
-    {"br.cond.dptk.clr",       BR (0x20, 0, 0, 2, 1), PSEUDO},
+    {"br.cond.dptk.clr",       BRP (0x20, 0, 0, 2, 1)},
     {"br.cond.dpnt.few",       BR (0x20, 0, 0, 3, 0)},
-    {"br.cond.dpnt",           BR (0x20, 0, 0, 3, 0), PSEUDO},
+    {"br.cond.dpnt",           BRP (0x20, 0, 0, 3, 0)},
     {"br.cond.dpnt.few.clr",   BR (0x20, 0, 0, 3, 1)},
-    {"br.cond.dpnt.clr",       BR (0x20, 0, 0, 3, 1), PSEUDO},
+    {"br.cond.dpnt.clr",       BRP (0x20, 0, 0, 3, 1)},
     {"br.cond.sptk.many",      BR (0x20, 0, 1, 0, 0)},
     {"br.cond.sptk.many.clr",  BR (0x20, 0, 1, 0, 1)},
     {"br.cond.spnt.many",      BR (0x20, 0, 1, 1, 0)},
@@ -109,21 +115,21 @@ struct ia64_opcode ia64_opcodes_b[] =
     {"br.cond.dpnt.many",      BR (0x20, 0, 1, 3, 0)},
     {"br.cond.dpnt.many.clr",  BR (0x20, 0, 1, 3, 1)},
     {"br.sptk.few",            BR (0x20, 0, 0, 0, 0)},
-    {"br.sptk",                        BR (0x20, 0, 0, 0, 0), PSEUDO},
+    {"br.sptk",                        BRP (0x20, 0, 0, 0, 0)},
     {"br.sptk.few.clr",                BR (0x20, 0, 0, 0, 1)},
-    {"br.sptk.clr",            BR (0x20, 0, 0, 0, 1), PSEUDO},
+    {"br.sptk.clr",            BRP (0x20, 0, 0, 0, 1)},
     {"br.spnt.few",            BR (0x20, 0, 0, 1, 0)},
-    {"br.spnt",                        BR (0x20, 0, 0, 1, 0), PSEUDO},
+    {"br.spnt",                        BRP (0x20, 0, 0, 1, 0)},
     {"br.spnt.few.clr",                BR (0x20, 0, 0, 1, 1)},
-    {"br.spnt.clr",            BR (0x20, 0, 0, 1, 1), PSEUDO},
+    {"br.spnt.clr",            BRP (0x20, 0, 0, 1, 1)},
     {"br.dptk.few",            BR (0x20, 0, 0, 2, 0)},
-    {"br.dptk",                        BR (0x20, 0, 0, 2, 0), PSEUDO},
+    {"br.dptk",                        BRP (0x20, 0, 0, 2, 0)},
     {"br.dptk.few.clr",                BR (0x20, 0, 0, 2, 1)},
-    {"br.dptk.clr",            BR (0x20, 0, 0, 2, 1), PSEUDO},
+    {"br.dptk.clr",            BRP (0x20, 0, 0, 2, 1)},
     {"br.dpnt.few",            BR (0x20, 0, 0, 3, 0)},
-    {"br.dpnt",                        BR (0x20, 0, 0, 3, 0), PSEUDO},
+    {"br.dpnt",                        BRP (0x20, 0, 0, 3, 0)},
     {"br.dpnt.few.clr",                BR (0x20, 0, 0, 3, 1)},
-    {"br.dpnt.clr",            BR (0x20, 0, 0, 3, 1), PSEUDO},
+    {"br.dpnt.clr",            BRP (0x20, 0, 0, 3, 1)},
     {"br.sptk.many",           BR (0x20, 0, 1, 0, 0)},
     {"br.sptk.many.clr",       BR (0x20, 0, 1, 0, 1)},
     {"br.spnt.many",           BR (0x20, 0, 1, 1, 0)},
@@ -133,21 +139,21 @@ struct ia64_opcode ia64_opcodes_b[] =
     {"br.dpnt.many",           BR (0x20, 0, 1, 3, 0)},
     {"br.dpnt.many.clr",       BR (0x20, 0, 1, 3, 1)},
     {"br.ia.sptk.few",         BR (0x20, 1, 0, 0, 0)},
-    {"br.ia.sptk",             BR (0x20, 1, 0, 0, 0), PSEUDO},
+    {"br.ia.sptk",             BRP (0x20, 1, 0, 0, 0)},
     {"br.ia.sptk.few.clr",     BR (0x20, 1, 0, 0, 1)},
-    {"br.ia.sptk.clr",         BR (0x20, 1, 0, 0, 1), PSEUDO},
+    {"br.ia.sptk.clr",         BRP (0x20, 1, 0, 0, 1)},
     {"br.ia.spnt.few",         BR (0x20, 1, 0, 1, 0)},
-    {"br.ia.spnt",             BR (0x20, 1, 0, 1, 0), PSEUDO},
+    {"br.ia.spnt",             BRP (0x20, 1, 0, 1, 0)},
     {"br.ia.spnt.few.clr",     BR (0x20, 1, 0, 1, 1)},
-    {"br.ia.spnt.clr",         BR (0x20, 1, 0, 1, 1), PSEUDO},
+    {"br.ia.spnt.clr",         BRP (0x20, 1, 0, 1, 1)},
     {"br.ia.dptk.few",         BR (0x20, 1, 0, 2, 0)},
-    {"br.ia.dptk",             BR (0x20, 1, 0, 2, 0), PSEUDO},
+    {"br.ia.dptk",             BRP (0x20, 1, 0, 2, 0)},
     {"br.ia.dptk.few.clr",     BR (0x20, 1, 0, 2, 1)},
-    {"br.ia.dptk.clr",         BR (0x20, 1, 0, 2, 1), PSEUDO},
+    {"br.ia.dptk.clr",         BRP (0x20, 1, 0, 2, 1)},
     {"br.ia.dpnt.few",         BR (0x20, 1, 0, 3, 0)},
-    {"br.ia.dpnt",             BR (0x20, 1, 0, 3, 0), PSEUDO},
+    {"br.ia.dpnt",             BRP (0x20, 1, 0, 3, 0)},
     {"br.ia.dpnt.few.clr",     BR (0x20, 1, 0, 3, 1)},
-    {"br.ia.dpnt.clr",         BR (0x20, 1, 0, 3, 1), PSEUDO},
+    {"br.ia.dpnt.clr",         BRP (0x20, 1, 0, 3, 1)},
     {"br.ia.sptk.many",                BR (0x20, 1, 1, 0, 0)},
     {"br.ia.sptk.many.clr",    BR (0x20, 1, 1, 0, 1)},
     {"br.ia.spnt.many",                BR (0x20, 1, 1, 1, 0)},
@@ -156,69 +162,71 @@ struct ia64_opcode ia64_opcodes_b[] =
     {"br.ia.dptk.many.clr",    BR (0x20, 1, 1, 2, 1)},
     {"br.ia.dpnt.many",                BR (0x20, 1, 1, 3, 0)},
     {"br.ia.dpnt.many.clr",    BR (0x20, 1, 1, 3, 1)},
-    {"br.ret.sptk.few",                BR (0x21, 4, 0, 0, 0), MOD_RRBS},
-    {"br.ret.sptk",            BR (0x21, 4, 0, 0, 0), PSEUDO | MOD_RRBS},
-    {"br.ret.sptk.few.clr",    BR (0x21, 4, 0, 0, 1), MOD_RRBS},
-    {"br.ret.sptk.clr",                BR (0x21, 4, 0, 0, 1), PSEUDO | MOD_RRBS},
-    {"br.ret.spnt.few",                BR (0x21, 4, 0, 1, 0), MOD_RRBS},
-    {"br.ret.spnt",            BR (0x21, 4, 0, 1, 0), PSEUDO | MOD_RRBS},
-    {"br.ret.spnt.few.clr",    BR (0x21, 4, 0, 1, 1), MOD_RRBS},
-    {"br.ret.spnt.clr",                BR (0x21, 4, 0, 1, 1), PSEUDO | MOD_RRBS},
-    {"br.ret.dptk.few",                BR (0x21, 4, 0, 2, 0), MOD_RRBS},
-    {"br.ret.dptk",            BR (0x21, 4, 0, 2, 0), PSEUDO | MOD_RRBS},
-    {"br.ret.dptk.few.clr",    BR (0x21, 4, 0, 2, 1), MOD_RRBS},
-    {"br.ret.dptk.clr",                BR (0x21, 4, 0, 2, 1), PSEUDO | MOD_RRBS},
-    {"br.ret.dpnt.few",                BR (0x21, 4, 0, 3, 0), MOD_RRBS},
-    {"br.ret.dpnt",            BR (0x21, 4, 0, 3, 0), PSEUDO | MOD_RRBS},
-    {"br.ret.dpnt.few.clr",    BR (0x21, 4, 0, 3, 1), MOD_RRBS},
-    {"br.ret.dpnt.clr",                BR (0x21, 4, 0, 3, 1), PSEUDO | MOD_RRBS},
-    {"br.ret.sptk.many",       BR (0x21, 4, 1, 0, 0), MOD_RRBS},
-    {"br.ret.sptk.many.clr",   BR (0x21, 4, 1, 0, 1), MOD_RRBS},
-    {"br.ret.spnt.many",       BR (0x21, 4, 1, 1, 0), MOD_RRBS},
-    {"br.ret.spnt.many.clr",   BR (0x21, 4, 1, 1, 1), MOD_RRBS},
-    {"br.ret.dptk.many",       BR (0x21, 4, 1, 2, 0), MOD_RRBS},
-    {"br.ret.dptk.many.clr",   BR (0x21, 4, 1, 2, 1), MOD_RRBS},
-    {"br.ret.dpnt.many",       BR (0x21, 4, 1, 3, 0), MOD_RRBS},
-    {"br.ret.dpnt.many.clr",   BR (0x21, 4, 1, 3, 1), MOD_RRBS},
+    {"br.ret.sptk.few",                BRT (0x21, 4, 0, 0, 0, MOD_RRBS)},
+    {"br.ret.sptk",            BRT (0x21, 4, 0, 0, 0, PSEUDO | MOD_RRBS)},
+    {"br.ret.sptk.few.clr",    BRT (0x21, 4, 0, 0, 1, MOD_RRBS)},
+    {"br.ret.sptk.clr",                BRT (0x21, 4, 0, 0, 1, PSEUDO | MOD_RRBS)},
+    {"br.ret.spnt.few",                BRT (0x21, 4, 0, 1, 0, MOD_RRBS)},
+    {"br.ret.spnt",            BRT (0x21, 4, 0, 1, 0, PSEUDO | MOD_RRBS)},
+    {"br.ret.spnt.few.clr",    BRT (0x21, 4, 0, 1, 1, MOD_RRBS)},
+    {"br.ret.spnt.clr",                BRT (0x21, 4, 0, 1, 1, PSEUDO | MOD_RRBS)},
+    {"br.ret.dptk.few",                BRT (0x21, 4, 0, 2, 0, MOD_RRBS)},
+    {"br.ret.dptk",            BRT (0x21, 4, 0, 2, 0, PSEUDO | MOD_RRBS)},
+    {"br.ret.dptk.few.clr",    BRT (0x21, 4, 0, 2, 1, MOD_RRBS)},
+    {"br.ret.dptk.clr",                BRT (0x21, 4, 0, 2, 1, PSEUDO | MOD_RRBS)},
+    {"br.ret.dpnt.few",                BRT (0x21, 4, 0, 3, 0, MOD_RRBS)},
+    {"br.ret.dpnt",            BRT (0x21, 4, 0, 3, 0, PSEUDO | MOD_RRBS)},
+    {"br.ret.dpnt.few.clr",    BRT (0x21, 4, 0, 3, 1, MOD_RRBS)},
+    {"br.ret.dpnt.clr",                BRT (0x21, 4, 0, 3, 1, PSEUDO | MOD_RRBS)},
+    {"br.ret.sptk.many",       BRT (0x21, 4, 1, 0, 0, MOD_RRBS)},
+    {"br.ret.sptk.many.clr",   BRT (0x21, 4, 1, 0, 1, MOD_RRBS)},
+    {"br.ret.spnt.many",       BRT (0x21, 4, 1, 1, 0, MOD_RRBS)},
+    {"br.ret.spnt.many.clr",   BRT (0x21, 4, 1, 1, 1, MOD_RRBS)},
+    {"br.ret.dptk.many",       BRT (0x21, 4, 1, 2, 0, MOD_RRBS)},
+    {"br.ret.dptk.many.clr",   BRT (0x21, 4, 1, 2, 1, MOD_RRBS)},
+    {"br.ret.dpnt.many",       BRT (0x21, 4, 1, 3, 0, MOD_RRBS)},
+    {"br.ret.dpnt.many.clr",   BRT (0x21, 4, 1, 3, 1, MOD_RRBS)},
 #undef BR
+#undef BRP
+#undef BRT
+    
+    {"cover",          B0, OpX6 (0, 0x02), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
+    {"clrrrb",         B0, OpX6 (0, 0x04), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
+    {"clrrrb.pr",      B0, OpX6 (0, 0x05), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
+    {"rfi",            B0, OpX6 (0, 0x08), {0, }, NO_PRED | LAST | PRIV | MOD_RRBS, 0, NULL},
+    {"bsw.0",          B0, OpX6 (0, 0x0c), {0, }, NO_PRED | LAST | PRIV, 0, NULL},
+    {"bsw.1",          B0, OpX6 (0, 0x0d), {0, }, NO_PRED | LAST | PRIV, 0, NULL},
+    {"epc",            B0, OpX6 (0, 0x10), {0, }, NO_PRED, 0, NULL},
 
-    {"cover",          B0, OpX6 (0, 0x02), {0, }, NO_PRED | LAST | MOD_RRBS},
-    {"clrrrb",         B0, OpX6 (0, 0x04), {0, }, NO_PRED | LAST | MOD_RRBS},
-    {"clrrrb.pr",      B0, OpX6 (0, 0x05), {0, }, NO_PRED | LAST | MOD_RRBS},
-    {"rfi",            B0, OpX6 (0, 0x08), {0, }, NO_PRED | LAST | PRIV | MOD_RRBS},
-    {"bsw.0",          B0, OpX6 (0, 0x0c), {0, }, NO_PRED | LAST | PRIV},
-    {"bsw.1",          B0, OpX6 (0, 0x0d), {0, }, NO_PRED | LAST | PRIV},
-    {"epc",            B0, OpX6 (0, 0x10), {0, }, NO_PRED},
-
-    {"break.b",                B0, OpX6 (0, 0x00), {IMMU21}},
+    {"break.b",                B0, OpX6 (0, 0x00), {IMMU21}, EMPTY},
 
-    {"br.call.sptk.few",       B, OpPaWhcD (1, 0, 1, 0), {B1, B2}},
-    {"br.call.sptk",           B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, PSEUDO},
-    {"br.call.sptk.few.clr",   B, OpPaWhcD (1, 0, 1, 1), {B1, B2}},
-    {"br.call.sptk.clr",       B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, PSEUDO},
-    {"br.call.spnt.few",       B, OpPaWhcD (1, 0, 3, 0), {B1, B2}},
-    {"br.call.spnt",           B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, PSEUDO},
-    {"br.call.spnt.few.clr",   B, OpPaWhcD (1, 0, 3, 1), {B1, B2}},
-    {"br.call.spnt.clr",       B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, PSEUDO},
-    {"br.call.dptk.few",       B, OpPaWhcD (1, 0, 5, 0), {B1, B2}},
-    {"br.call.dptk",           B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, PSEUDO},
-    {"br.call.dptk.few.clr",   B, OpPaWhcD (1, 0, 5, 1), {B1, B2}},
-    {"br.call.dptk.clr",       B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, PSEUDO},
-    {"br.call.dpnt.few",       B, OpPaWhcD (1, 0, 7, 0), {B1, B2}},
-    {"br.call.dpnt",           B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, PSEUDO},
-    {"br.call.dpnt.few.clr",   B, OpPaWhcD (1, 0, 7, 1), {B1, B2}},
-    {"br.call.dpnt.clr",       B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, PSEUDO},
-    {"br.call.sptk.many",      B, OpPaWhcD (1, 1, 1, 0), {B1, B2}},
-    {"br.call.sptk.many.clr",  B, OpPaWhcD (1, 1, 1, 1), {B1, B2}},
-    {"br.call.spnt.many",      B, OpPaWhcD (1, 1, 3, 0), {B1, B2}},
-    {"br.call.spnt.many.clr",  B, OpPaWhcD (1, 1, 3, 1), {B1, B2}},
-    {"br.call.dptk.many",      B, OpPaWhcD (1, 1, 5, 0), {B1, B2}},
-    {"br.call.dptk.many.clr",  B, OpPaWhcD (1, 1, 5, 1), {B1, B2}},
-    {"br.call.dpnt.many",      B, OpPaWhcD (1, 1, 7, 0), {B1, B2}},
-    {"br.call.dpnt.many.clr",  B, OpPaWhcD (1, 1, 7, 1), {B1, B2}},
+    {"br.call.sptk.few",       B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, EMPTY},
+    {"br.call.sptk",           B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, PSEUDO, 0, NULL},
+    {"br.call.sptk.few.clr",   B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, EMPTY},
+    {"br.call.sptk.clr",       B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, PSEUDO, 0, NULL},
+    {"br.call.spnt.few",       B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, EMPTY},
+    {"br.call.spnt",           B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, PSEUDO, 0, NULL},
+    {"br.call.spnt.few.clr",   B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, EMPTY},
+    {"br.call.spnt.clr",       B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, PSEUDO, 0, NULL},
+    {"br.call.dptk.few",       B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, EMPTY},
+    {"br.call.dptk",           B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, PSEUDO, 0, NULL},
+    {"br.call.dptk.few.clr",   B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, EMPTY},
+    {"br.call.dptk.clr",       B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, PSEUDO, 0, NULL},
+    {"br.call.dpnt.few",       B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, EMPTY},
+    {"br.call.dpnt",           B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, PSEUDO, 0, NULL},
+    {"br.call.dpnt.few.clr",   B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, EMPTY},
+    {"br.call.dpnt.clr",       B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, PSEUDO, 0, NULL},
+    {"br.call.sptk.many",      B, OpPaWhcD (1, 1, 1, 0), {B1, B2}, EMPTY},
+    {"br.call.sptk.many.clr",  B, OpPaWhcD (1, 1, 1, 1), {B1, B2}, EMPTY},
+    {"br.call.spnt.many",      B, OpPaWhcD (1, 1, 3, 0), {B1, B2}, EMPTY},
+    {"br.call.spnt.many.clr",  B, OpPaWhcD (1, 1, 3, 1), {B1, B2}, EMPTY},
+    {"br.call.dptk.many",      B, OpPaWhcD (1, 1, 5, 0), {B1, B2}, EMPTY},
+    {"br.call.dptk.many.clr",  B, OpPaWhcD (1, 1, 5, 1), {B1, B2}, EMPTY},
+    {"br.call.dpnt.many",      B, OpPaWhcD (1, 1, 7, 0), {B1, B2}, EMPTY},
+    {"br.call.dpnt.many.clr",  B, OpPaWhcD (1, 1, 7, 1), {B1, B2}, EMPTY},
 
 #define BRP(a,b,c) \
-      B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED
+      B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED, 0, NULL
     {"brp.sptk",               BRP (0x10, 0, 0)},
     {"brp.dptk",               BRP (0x10, 0, 2)},
     {"brp.sptk.imp",           BRP (0x10, 1, 0)},
@@ -229,10 +237,10 @@ struct ia64_opcode ia64_opcodes_b[] =
     {"brp.ret.dptk.imp",       BRP (0x11, 1, 2)},
 #undef BRP
 
-    {"nop.b",          B0, OpX6 (2, 0x00), {IMMU21}},
+    {"nop.b",          B0, OpX6 (2, 0x00), {IMMU21}, EMPTY},
 
 #define BR(a,b) \
-      B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO
+      B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO, 0, NULL
     {"br.few",         BR (0, 0)},
     {"br",             BR (0, 0)},
     {"br.few.clr",     BR (0, 1)},
@@ -242,23 +250,25 @@ struct ia64_opcode ia64_opcodes_b[] =
 #undef BR
 
 #define BR(a,b,c) \
-      B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}
+      B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, EMPTY
+#define BRP(a,b,c) \
+      B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, PSEUDO, 0, NULL
     {"br.cond.sptk.few",       BR (0, 0, 0)},
-    {"br.cond.sptk",           BR (0, 0, 0), PSEUDO},
+    {"br.cond.sptk",           BRP (0, 0, 0)},
     {"br.cond.sptk.few.clr",   BR (0, 0, 1)},
-    {"br.cond.sptk.clr",       BR (0, 0, 1), PSEUDO},
+    {"br.cond.sptk.clr",       BRP (0, 0, 1)},
     {"br.cond.spnt.few",       BR (0, 1, 0)},
-    {"br.cond.spnt",           BR (0, 1, 0), PSEUDO},
+    {"br.cond.spnt",           BRP (0, 1, 0)},
     {"br.cond.spnt.few.clr",   BR (0, 1, 1)},
-    {"br.cond.spnt.clr",       BR (0, 1, 1), PSEUDO},
+    {"br.cond.spnt.clr",       BRP (0, 1, 1)},
     {"br.cond.dptk.few",       BR (0, 2, 0)},
-    {"br.cond.dptk",           BR (0, 2, 0), PSEUDO},
+    {"br.cond.dptk",           BRP (0, 2, 0)},
     {"br.cond.dptk.few.clr",   BR (0, 2, 1)},
-    {"br.cond.dptk.clr",       BR (0, 2, 1), PSEUDO},
+    {"br.cond.dptk.clr",       BRP (0, 2, 1)},
     {"br.cond.dpnt.few",       BR (0, 3, 0)},
-    {"br.cond.dpnt",           BR (0, 3, 0), PSEUDO},
+    {"br.cond.dpnt",           BRP (0, 3, 0)},
     {"br.cond.dpnt.few.clr",   BR (0, 3, 1)},
-    {"br.cond.dpnt.clr",       BR (0, 3, 1), PSEUDO},
+    {"br.cond.dpnt.clr",       BRP (0, 3, 1)},
     {"br.cond.sptk.many",      BR (1, 0, 0)},
     {"br.cond.sptk.many.clr",  BR (1, 0, 1)},
     {"br.cond.spnt.many",      BR (1, 1, 0)},
@@ -268,21 +278,21 @@ struct ia64_opcode ia64_opcodes_b[] =
     {"br.cond.dpnt.many",      BR (1, 3, 0)},
     {"br.cond.dpnt.many.clr",  BR (1, 3, 1)},
     {"br.sptk.few",            BR (0, 0, 0)},
-    {"br.sptk",                        BR (0, 0, 0), PSEUDO},
+    {"br.sptk",                        BRP (0, 0, 0)},
     {"br.sptk.few.clr",                BR (0, 0, 1)},
-    {"br.sptk.clr",            BR (0, 0, 1), PSEUDO},
+    {"br.sptk.clr",            BRP (0, 0, 1)},
     {"br.spnt.few",            BR (0, 1, 0)},
-    {"br.spnt",                        BR (0, 1, 0), PSEUDO},
+    {"br.spnt",                        BRP (0, 1, 0)},
     {"br.spnt.few.clr",                BR (0, 1, 1)},
-    {"br.spnt.clr",            BR (0, 1, 1), PSEUDO},
+    {"br.spnt.clr",            BRP (0, 1, 1)},
     {"br.dptk.few",            BR (0, 2, 0)},
-    {"br.dptk",                        BR (0, 2, 0), PSEUDO},
+    {"br.dptk",                        BRP (0, 2, 0)},
     {"br.dptk.few.clr",                BR (0, 2, 1)},
-    {"br.dptk.clr",            BR (0, 2, 1), PSEUDO},
+    {"br.dptk.clr",            BRP (0, 2, 1)},
     {"br.dpnt.few",            BR (0, 3, 0)},
-    {"br.dpnt",                        BR (0, 3, 0), PSEUDO},
+    {"br.dpnt",                        BRP (0, 3, 0)},
     {"br.dpnt.few.clr",                BR (0, 3, 1)},
-    {"br.dpnt.clr",            BR (0, 3, 1), PSEUDO},
+    {"br.dpnt.clr",            BRP (0, 3, 1)},
     {"br.sptk.many",           BR (1, 0, 0)},
     {"br.sptk.many.clr",       BR (1, 0, 1)},
     {"br.spnt.many",           BR (1, 1, 0)},
@@ -292,77 +302,80 @@ struct ia64_opcode ia64_opcodes_b[] =
     {"br.dpnt.many",           BR (1, 3, 0)},
     {"br.dpnt.many.clr",       BR (1, 3, 1)},
 #undef BR
+#undef BRP
 
-#define BR(a,b,c,d) \
-       B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2
-    {"br.wexit.sptk.few",      BR (2, 0, 0, 0) | MOD_RRBS},
-    {"br.wexit.sptk",          BR (2, 0, 0, 0) | PSEUDO | MOD_RRBS},
-    {"br.wexit.sptk.few.clr",  BR (2, 0, 0, 1) | MOD_RRBS},
-    {"br.wexit.sptk.clr",      BR (2, 0, 0, 1) | PSEUDO | MOD_RRBS},
-    {"br.wexit.spnt.few",      BR (2, 0, 1, 0) | MOD_RRBS},
-    {"br.wexit.spnt",          BR (2, 0, 1, 0) | PSEUDO | MOD_RRBS},
-    {"br.wexit.spnt.few.clr",  BR (2, 0, 1, 1) | MOD_RRBS},
-    {"br.wexit.spnt.clr",      BR (2, 0, 1, 1) | PSEUDO | MOD_RRBS},
-    {"br.wexit.dptk.few",      BR (2, 0, 2, 0) | MOD_RRBS},
-    {"br.wexit.dptk",          BR (2, 0, 2, 0) | PSEUDO | MOD_RRBS},
-    {"br.wexit.dptk.few.clr",  BR (2, 0, 2, 1) | MOD_RRBS},
-    {"br.wexit.dptk.clr",      BR (2, 0, 2, 1) | PSEUDO | MOD_RRBS},
-    {"br.wexit.dpnt.few",      BR (2, 0, 3, 0) | MOD_RRBS},
-    {"br.wexit.dpnt",          BR (2, 0, 3, 0) | PSEUDO | MOD_RRBS},
-    {"br.wexit.dpnt.few.clr",  BR (2, 0, 3, 1) | MOD_RRBS},
-    {"br.wexit.dpnt.clr",      BR (2, 0, 3, 1) | PSEUDO | MOD_RRBS},
-    {"br.wexit.sptk.many",     BR (2, 1, 0, 0) | MOD_RRBS},
-    {"br.wexit.sptk.many.clr", BR (2, 1, 0, 1) | MOD_RRBS},
-    {"br.wexit.spnt.many",     BR (2, 1, 1, 0) | MOD_RRBS},
-    {"br.wexit.spnt.many.clr", BR (2, 1, 1, 1) | MOD_RRBS},
-    {"br.wexit.dptk.many",     BR (2, 1, 2, 0) | MOD_RRBS},
-    {"br.wexit.dptk.many.clr", BR (2, 1, 2, 1) | MOD_RRBS},
-    {"br.wexit.dpnt.many",     BR (2, 1, 3, 0) | MOD_RRBS},
-    {"br.wexit.dpnt.many.clr", BR (2, 1, 3, 1) | MOD_RRBS},
-    {"br.wtop.sptk.few",       BR (3, 0, 0, 0) | MOD_RRBS},
-    {"br.wtop.sptk",           BR (3, 0, 0, 0) | PSEUDO | MOD_RRBS},
-    {"br.wtop.sptk.few.clr",   BR (3, 0, 0, 1) | MOD_RRBS},
-    {"br.wtop.sptk.clr",       BR (3, 0, 0, 1) | PSEUDO | MOD_RRBS},
-    {"br.wtop.spnt.few",       BR (3, 0, 1, 0) | MOD_RRBS},
-    {"br.wtop.spnt",           BR (3, 0, 1, 0) | PSEUDO | MOD_RRBS},
-    {"br.wtop.spnt.few.clr",   BR (3, 0, 1, 1) | MOD_RRBS},
-    {"br.wtop.spnt.clr",       BR (3, 0, 1, 1) | PSEUDO | MOD_RRBS},
-    {"br.wtop.dptk.few",       BR (3, 0, 2, 0) | MOD_RRBS},
-    {"br.wtop.dptk",           BR (3, 0, 2, 0) | PSEUDO | MOD_RRBS},
-    {"br.wtop.dptk.few.clr",   BR (3, 0, 2, 1) | MOD_RRBS},
-    {"br.wtop.dptk.clr",       BR (3, 0, 2, 1) | PSEUDO | MOD_RRBS},
-    {"br.wtop.dpnt.few",       BR (3, 0, 3, 0) | MOD_RRBS},
-    {"br.wtop.dpnt",           BR (3, 0, 3, 0) | PSEUDO | MOD_RRBS},
-    {"br.wtop.dpnt.few.clr",   BR (3, 0, 3, 1) | MOD_RRBS},
-    {"br.wtop.dpnt.clr",       BR (3, 0, 3, 1) | PSEUDO | MOD_RRBS},
-    {"br.wtop.sptk.many",      BR (3, 1, 0, 0) | MOD_RRBS},
-    {"br.wtop.sptk.many.clr",  BR (3, 1, 0, 1) | MOD_RRBS},
-    {"br.wtop.spnt.many",      BR (3, 1, 1, 0) | MOD_RRBS},
-    {"br.wtop.spnt.many.clr",  BR (3, 1, 1, 1) | MOD_RRBS},
-    {"br.wtop.dptk.many",      BR (3, 1, 2, 0) | MOD_RRBS},
-    {"br.wtop.dptk.many.clr",  BR (3, 1, 2, 1) | MOD_RRBS},
-    {"br.wtop.dpnt.many",      BR (3, 1, 3, 0) | MOD_RRBS},
-    {"br.wtop.dpnt.many.clr",  BR (3, 1, 3, 1) | MOD_RRBS},
+#define BR(a,b,c,d, e) \
+       B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | e, 0, NULL
+    {"br.wexit.sptk.few",      BR (2, 0, 0, 0, MOD_RRBS)},
+    {"br.wexit.sptk",          BR (2, 0, 0, 0, PSEUDO | MOD_RRBS)},
+    {"br.wexit.sptk.few.clr",  BR (2, 0, 0, 1, MOD_RRBS)},
+    {"br.wexit.sptk.clr",      BR (2, 0, 0, 1, PSEUDO | MOD_RRBS)},
+    {"br.wexit.spnt.few",      BR (2, 0, 1, 0, MOD_RRBS)},
+    {"br.wexit.spnt",          BR (2, 0, 1, 0, PSEUDO | MOD_RRBS)},
+    {"br.wexit.spnt.few.clr",  BR (2, 0, 1, 1, MOD_RRBS)},
+    {"br.wexit.spnt.clr",      BR (2, 0, 1, 1, PSEUDO | MOD_RRBS)},
+    {"br.wexit.dptk.few",      BR (2, 0, 2, 0, MOD_RRBS)},
+    {"br.wexit.dptk",          BR (2, 0, 2, 0, PSEUDO | MOD_RRBS)},
+    {"br.wexit.dptk.few.clr",  BR (2, 0, 2, 1, MOD_RRBS)},
+    {"br.wexit.dptk.clr",      BR (2, 0, 2, 1, PSEUDO | MOD_RRBS)},
+    {"br.wexit.dpnt.few",      BR (2, 0, 3, 0, MOD_RRBS)},
+    {"br.wexit.dpnt",          BR (2, 0, 3, 0, PSEUDO | MOD_RRBS)},
+    {"br.wexit.dpnt.few.clr",  BR (2, 0, 3, 1, MOD_RRBS)},
+    {"br.wexit.dpnt.clr",      BR (2, 0, 3, 1, PSEUDO | MOD_RRBS)},
+    {"br.wexit.sptk.many",     BR (2, 1, 0, 0, MOD_RRBS)},
+    {"br.wexit.sptk.many.clr", BR (2, 1, 0, 1, MOD_RRBS)},
+    {"br.wexit.spnt.many",     BR (2, 1, 1, 0, MOD_RRBS)},
+    {"br.wexit.spnt.many.clr", BR (2, 1, 1, 1, MOD_RRBS)},
+    {"br.wexit.dptk.many",     BR (2, 1, 2, 0, MOD_RRBS)},
+    {"br.wexit.dptk.many.clr", BR (2, 1, 2, 1, MOD_RRBS)},
+    {"br.wexit.dpnt.many",     BR (2, 1, 3, 0, MOD_RRBS)},
+    {"br.wexit.dpnt.many.clr", BR (2, 1, 3, 1, MOD_RRBS)},
+    {"br.wtop.sptk.few",       BR (3, 0, 0, 0, MOD_RRBS)},
+    {"br.wtop.sptk",           BR (3, 0, 0, 0, PSEUDO | MOD_RRBS)},
+    {"br.wtop.sptk.few.clr",   BR (3, 0, 0, 1, MOD_RRBS)},
+    {"br.wtop.sptk.clr",       BR (3, 0, 0, 1, PSEUDO | MOD_RRBS)},
+    {"br.wtop.spnt.few",       BR (3, 0, 1, 0, MOD_RRBS)},
+    {"br.wtop.spnt",           BR (3, 0, 1, 0, PSEUDO | MOD_RRBS)},
+    {"br.wtop.spnt.few.clr",   BR (3, 0, 1, 1, MOD_RRBS)},
+    {"br.wtop.spnt.clr",       BR (3, 0, 1, 1, PSEUDO | MOD_RRBS)},
+    {"br.wtop.dptk.few",       BR (3, 0, 2, 0, MOD_RRBS)},
+    {"br.wtop.dptk",           BR (3, 0, 2, 0, PSEUDO | MOD_RRBS)},
+    {"br.wtop.dptk.few.clr",   BR (3, 0, 2, 1, MOD_RRBS)},
+    {"br.wtop.dptk.clr",       BR (3, 0, 2, 1, PSEUDO | MOD_RRBS)},
+    {"br.wtop.dpnt.few",       BR (3, 0, 3, 0, MOD_RRBS)},
+    {"br.wtop.dpnt",           BR (3, 0, 3, 0, PSEUDO | MOD_RRBS)},
+    {"br.wtop.dpnt.few.clr",   BR (3, 0, 3, 1, MOD_RRBS)},
+    {"br.wtop.dpnt.clr",       BR (3, 0, 3, 1, PSEUDO | MOD_RRBS)},
+    {"br.wtop.sptk.many",      BR (3, 1, 0, 0, MOD_RRBS)},
+    {"br.wtop.sptk.many.clr",  BR (3, 1, 0, 1, MOD_RRBS)},
+    {"br.wtop.spnt.many",      BR (3, 1, 1, 0, MOD_RRBS)},
+    {"br.wtop.spnt.many.clr",  BR (3, 1, 1, 1, MOD_RRBS)},
+    {"br.wtop.dptk.many",      BR (3, 1, 2, 0, MOD_RRBS)},
+    {"br.wtop.dptk.many.clr",  BR (3, 1, 2, 1, MOD_RRBS)},
+    {"br.wtop.dpnt.many",      BR (3, 1, 3, 0, MOD_RRBS)},
+    {"br.wtop.dpnt.many.clr",  BR (3, 1, 3, 1, MOD_RRBS)},
 
 #undef BR
 #define BR(a,b,c,d) \
-       B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED
+       B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED, 0, NULL
+#define BRT(a,b,c,d,e) \
+       B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED | e, 0, NULL
     {"br.cloop.sptk.few",      BR (5, 0, 0, 0)},
-    {"br.cloop.sptk",          BR (5, 0, 0, 0) | PSEUDO},
+    {"br.cloop.sptk",          BRT (5, 0, 0, 0, PSEUDO)},
     {"br.cloop.sptk.few.clr",  BR (5, 0, 0, 1)},
-    {"br.cloop.sptk.clr",      BR (5, 0, 0, 1) | PSEUDO},
+    {"br.cloop.sptk.clr",      BRT (5, 0, 0, 1, PSEUDO)},
     {"br.cloop.spnt.few",      BR (5, 0, 1, 0)},
-    {"br.cloop.spnt",          BR (5, 0, 1, 0) | PSEUDO},
+    {"br.cloop.spnt",          BRT (5, 0, 1, 0, PSEUDO)},
     {"br.cloop.spnt.few.clr",  BR (5, 0, 1, 1)},
-    {"br.cloop.spnt.clr",      BR (5, 0, 1, 1) | PSEUDO},
+    {"br.cloop.spnt.clr",      BRT (5, 0, 1, 1, PSEUDO)},
     {"br.cloop.dptk.few",      BR (5, 0, 2, 0)},
-    {"br.cloop.dptk",          BR (5, 0, 2, 0) | PSEUDO},
+    {"br.cloop.dptk",          BRT (5, 0, 2, 0, PSEUDO)},
     {"br.cloop.dptk.few.clr",  BR (5, 0, 2, 1)},
-    {"br.cloop.dptk.clr",      BR (5, 0, 2, 1) | PSEUDO},
+    {"br.cloop.dptk.clr",      BRT (5, 0, 2, 1, PSEUDO)},
     {"br.cloop.dpnt.few",      BR (5, 0, 3, 0)},
-    {"br.cloop.dpnt",          BR (5, 0, 3, 0) | PSEUDO},
+    {"br.cloop.dpnt",          BRT (5, 0, 3, 0, PSEUDO)},
     {"br.cloop.dpnt.few.clr",  BR (5, 0, 3, 1)},
-    {"br.cloop.dpnt.clr",      BR (5, 0, 3, 1) | PSEUDO},
+    {"br.cloop.dpnt.clr",      BRT (5, 0, 3, 1, PSEUDO)},
     {"br.cloop.sptk.many",     BR (5, 1, 0, 0)},
     {"br.cloop.sptk.many.clr", BR (5, 1, 0, 1)},
     {"br.cloop.spnt.many",     BR (5, 1, 1, 0)},
@@ -371,87 +384,85 @@ struct ia64_opcode ia64_opcodes_b[] =
     {"br.cloop.dptk.many.clr", BR (5, 1, 2, 1)},
     {"br.cloop.dpnt.many",     BR (5, 1, 3, 0)},
     {"br.cloop.dpnt.many.clr", BR (5, 1, 3, 1)},
-    {"br.cexit.sptk.few",      BR (6, 0, 0, 0) | MOD_RRBS},
-    {"br.cexit.sptk",          BR (6, 0, 0, 0) | PSEUDO | MOD_RRBS},
-    {"br.cexit.sptk.few.clr",  BR (6, 0, 0, 1) | MOD_RRBS},
-    {"br.cexit.sptk.clr",      BR (6, 0, 0, 1) | PSEUDO | MOD_RRBS},
-    {"br.cexit.spnt.few",      BR (6, 0, 1, 0) | MOD_RRBS},
-    {"br.cexit.spnt",          BR (6, 0, 1, 0) | PSEUDO | MOD_RRBS},
-    {"br.cexit.spnt.few.clr",  BR (6, 0, 1, 1) | MOD_RRBS},
-    {"br.cexit.spnt.clr",      BR (6, 0, 1, 1) | PSEUDO | MOD_RRBS},
-    {"br.cexit.dptk.few",      BR (6, 0, 2, 0) | MOD_RRBS},
-    {"br.cexit.dptk",          BR (6, 0, 2, 0) | PSEUDO | MOD_RRBS},
-    {"br.cexit.dptk.few.clr",  BR (6, 0, 2, 1) | MOD_RRBS},
-    {"br.cexit.dptk.clr",      BR (6, 0, 2, 1) | PSEUDO | MOD_RRBS},
-    {"br.cexit.dpnt.few",      BR (6, 0, 3, 0) | MOD_RRBS},
-    {"br.cexit.dpnt",          BR (6, 0, 3, 0) | PSEUDO | MOD_RRBS},
-    {"br.cexit.dpnt.few.clr",  BR (6, 0, 3, 1) | MOD_RRBS},
-    {"br.cexit.dpnt.clr",      BR (6, 0, 3, 1) | PSEUDO | MOD_RRBS},
-    {"br.cexit.sptk.many",     BR (6, 1, 0, 0) | MOD_RRBS},
-    {"br.cexit.sptk.many.clr", BR (6, 1, 0, 1) | MOD_RRBS},
-    {"br.cexit.spnt.many",     BR (6, 1, 1, 0) | MOD_RRBS},
-    {"br.cexit.spnt.many.clr", BR (6, 1, 1, 1) | MOD_RRBS},
-    {"br.cexit.dptk.many",     BR (6, 1, 2, 0) | MOD_RRBS},
-    {"br.cexit.dptk.many.clr", BR (6, 1, 2, 1) | MOD_RRBS},
-    {"br.cexit.dpnt.many",     BR (6, 1, 3, 0) | MOD_RRBS},
-    {"br.cexit.dpnt.many.clr", BR (6, 1, 3, 1) | MOD_RRBS},
-    {"br.ctop.sptk.few",       BR (7, 0, 0, 0) | MOD_RRBS},
-    {"br.ctop.sptk",           BR (7, 0, 0, 0) | PSEUDO | MOD_RRBS},
-    {"br.ctop.sptk.few.clr",   BR (7, 0, 0, 1) | MOD_RRBS},
-    {"br.ctop.sptk.clr",       BR (7, 0, 0, 1) | PSEUDO | MOD_RRBS},
-    {"br.ctop.spnt.few",       BR (7, 0, 1, 0) | MOD_RRBS},
-    {"br.ctop.spnt",           BR (7, 0, 1, 0) | PSEUDO | MOD_RRBS},
-    {"br.ctop.spnt.few.clr",   BR (7, 0, 1, 1) | MOD_RRBS},
-    {"br.ctop.spnt.clr",       BR (7, 0, 1, 1) | PSEUDO | MOD_RRBS},
-    {"br.ctop.dptk.few",       BR (7, 0, 2, 0) | MOD_RRBS},
-    {"br.ctop.dptk",           BR (7, 0, 2, 0) | PSEUDO | MOD_RRBS},
-    {"br.ctop.dptk.few.clr",   BR (7, 0, 2, 1) | MOD_RRBS},
-    {"br.ctop.dptk.clr",       BR (7, 0, 2, 1) | PSEUDO | MOD_RRBS},
-    {"br.ctop.dpnt.few",       BR (7, 0, 3, 0) | MOD_RRBS},
-    {"br.ctop.dpnt",           BR (7, 0, 3, 0) | PSEUDO | MOD_RRBS},
-    {"br.ctop.dpnt.few.clr",   BR (7, 0, 3, 1) | MOD_RRBS},
-    {"br.ctop.dpnt.clr",       BR (7, 0, 3, 1) | PSEUDO | MOD_RRBS},
-    {"br.ctop.sptk.many",      BR (7, 1, 0, 0) | MOD_RRBS},
-    {"br.ctop.sptk.many.clr",  BR (7, 1, 0, 1) | MOD_RRBS},
-    {"br.ctop.spnt.many",      BR (7, 1, 1, 0) | MOD_RRBS},
-    {"br.ctop.spnt.many.clr",  BR (7, 1, 1, 1) | MOD_RRBS},
-    {"br.ctop.dptk.many",      BR (7, 1, 2, 0) | MOD_RRBS},
-    {"br.ctop.dptk.many.clr",  BR (7, 1, 2, 1) | MOD_RRBS},
-    {"br.ctop.dpnt.many",      BR (7, 1, 3, 0) | MOD_RRBS},
-    {"br.ctop.dpnt.many.clr",  BR (7, 1, 3, 1) | MOD_RRBS},
-
-#undef BR
-#define BR(a,b,c,d) \
-       B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2
-    {"br.call.sptk.few",       B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}},
-    {"br.call.sptk",           B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, PSEUDO},
-    {"br.call.sptk.few.clr",   B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}},
-    {"br.call.sptk.clr",       B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, PSEUDO},
-    {"br.call.spnt.few",       B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}},
-    {"br.call.spnt",           B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, PSEUDO},
-    {"br.call.spnt.few.clr",   B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}},
-    {"br.call.spnt.clr",       B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, PSEUDO},
-    {"br.call.dptk.few",       B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}},
-    {"br.call.dptk",           B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, PSEUDO},
-    {"br.call.dptk.few.clr",   B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}},
-    {"br.call.dptk.clr",       B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, PSEUDO},
-    {"br.call.dpnt.few",       B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}},
-    {"br.call.dpnt",           B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, PSEUDO},
-    {"br.call.dpnt.few.clr",   B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}},
-    {"br.call.dpnt.clr",       B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, PSEUDO},
-    {"br.call.sptk.many",      B, OpPaWhaD (5, 1, 0, 0), {B1, TGT25c}},
-    {"br.call.sptk.many.clr",  B, OpPaWhaD (5, 1, 0, 1), {B1, TGT25c}},
-    {"br.call.spnt.many",      B, OpPaWhaD (5, 1, 1, 0), {B1, TGT25c}},
-    {"br.call.spnt.many.clr",  B, OpPaWhaD (5, 1, 1, 1), {B1, TGT25c}},
-    {"br.call.dptk.many",      B, OpPaWhaD (5, 1, 2, 0), {B1, TGT25c}},
-    {"br.call.dptk.many.clr",  B, OpPaWhaD (5, 1, 2, 1), {B1, TGT25c}},
-    {"br.call.dpnt.many",      B, OpPaWhaD (5, 1, 3, 0), {B1, TGT25c}},
-    {"br.call.dpnt.many.clr",  B, OpPaWhaD (5, 1, 3, 1), {B1, TGT25c}},
+    {"br.cexit.sptk.few",      BRT (6, 0, 0, 0, MOD_RRBS)},
+    {"br.cexit.sptk",          BRT (6, 0, 0, 0, PSEUDO | MOD_RRBS)},
+    {"br.cexit.sptk.few.clr",  BRT (6, 0, 0, 1, MOD_RRBS)},
+    {"br.cexit.sptk.clr",      BRT (6, 0, 0, 1, PSEUDO | MOD_RRBS)},
+    {"br.cexit.spnt.few",      BRT (6, 0, 1, 0, MOD_RRBS)},
+    {"br.cexit.spnt",          BRT (6, 0, 1, 0, PSEUDO | MOD_RRBS)},
+    {"br.cexit.spnt.few.clr",  BRT (6, 0, 1, 1, MOD_RRBS)},
+    {"br.cexit.spnt.clr",      BRT (6, 0, 1, 1, PSEUDO | MOD_RRBS)},
+    {"br.cexit.dptk.few",      BRT (6, 0, 2, 0, MOD_RRBS)},
+    {"br.cexit.dptk",          BRT (6, 0, 2, 0, PSEUDO | MOD_RRBS)},
+    {"br.cexit.dptk.few.clr",  BRT (6, 0, 2, 1, MOD_RRBS)},
+    {"br.cexit.dptk.clr",      BRT (6, 0, 2, 1, PSEUDO | MOD_RRBS)},
+    {"br.cexit.dpnt.few",      BRT (6, 0, 3, 0, MOD_RRBS)},
+    {"br.cexit.dpnt",          BRT (6, 0, 3, 0, PSEUDO | MOD_RRBS)},
+    {"br.cexit.dpnt.few.clr",  BRT (6, 0, 3, 1, MOD_RRBS)},
+    {"br.cexit.dpnt.clr",      BRT (6, 0, 3, 1, PSEUDO | MOD_RRBS)},
+    {"br.cexit.sptk.many",     BRT (6, 1, 0, 0, MOD_RRBS)},
+    {"br.cexit.sptk.many.clr", BRT (6, 1, 0, 1, MOD_RRBS)},
+    {"br.cexit.spnt.many",     BRT (6, 1, 1, 0, MOD_RRBS)},
+    {"br.cexit.spnt.many.clr", BRT (6, 1, 1, 1, MOD_RRBS)},
+    {"br.cexit.dptk.many",     BRT (6, 1, 2, 0, MOD_RRBS)},
+    {"br.cexit.dptk.many.clr", BRT (6, 1, 2, 1, MOD_RRBS)},
+    {"br.cexit.dpnt.many",     BRT (6, 1, 3, 0, MOD_RRBS)},
+    {"br.cexit.dpnt.many.clr", BRT (6, 1, 3, 1, MOD_RRBS)},
+    {"br.ctop.sptk.few",       BRT (7, 0, 0, 0, MOD_RRBS)},
+    {"br.ctop.sptk",           BRT (7, 0, 0, 0, PSEUDO | MOD_RRBS)},
+    {"br.ctop.sptk.few.clr",   BRT (7, 0, 0, 1, MOD_RRBS)},
+    {"br.ctop.sptk.clr",       BRT (7, 0, 0, 1, PSEUDO | MOD_RRBS)},
+    {"br.ctop.spnt.few",       BRT (7, 0, 1, 0, MOD_RRBS)},
+    {"br.ctop.spnt",           BRT (7, 0, 1, 0, PSEUDO | MOD_RRBS)},
+    {"br.ctop.spnt.few.clr",   BRT (7, 0, 1, 1, MOD_RRBS)},
+    {"br.ctop.spnt.clr",       BRT (7, 0, 1, 1, PSEUDO | MOD_RRBS)},
+    {"br.ctop.dptk.few",       BRT (7, 0, 2, 0, MOD_RRBS)},
+    {"br.ctop.dptk",           BRT (7, 0, 2, 0, PSEUDO | MOD_RRBS)},
+    {"br.ctop.dptk.few.clr",   BRT (7, 0, 2, 1, MOD_RRBS)},
+    {"br.ctop.dptk.clr",       BRT (7, 0, 2, 1, PSEUDO | MOD_RRBS)},
+    {"br.ctop.dpnt.few",       BRT (7, 0, 3, 0, MOD_RRBS)},
+    {"br.ctop.dpnt",           BRT (7, 0, 3, 0, PSEUDO | MOD_RRBS)},
+    {"br.ctop.dpnt.few.clr",   BRT (7, 0, 3, 1, MOD_RRBS)},
+    {"br.ctop.dpnt.clr",       BRT (7, 0, 3, 1, PSEUDO | MOD_RRBS)},
+    {"br.ctop.sptk.many",      BRT (7, 1, 0, 0, MOD_RRBS)},
+    {"br.ctop.sptk.many.clr",  BRT (7, 1, 0, 1, MOD_RRBS)},
+    {"br.ctop.spnt.many",      BRT (7, 1, 1, 0, MOD_RRBS)},
+    {"br.ctop.spnt.many.clr",  BRT (7, 1, 1, 1, MOD_RRBS)},
+    {"br.ctop.dptk.many",      BRT (7, 1, 2, 0, MOD_RRBS)},
+    {"br.ctop.dptk.many.clr",  BRT (7, 1, 2, 1, MOD_RRBS)},
+    {"br.ctop.dpnt.many",      BRT (7, 1, 3, 0, MOD_RRBS)},
+    {"br.ctop.dpnt.many.clr",  BRT (7, 1, 3, 1, MOD_RRBS)},
 #undef BR
+#undef BRT
+
+    {"br.call.sptk.few",       B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, EMPTY},
+    {"br.call.sptk",           B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
+    {"br.call.sptk.few.clr",   B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, EMPTY},
+    {"br.call.sptk.clr",       B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
+    {"br.call.spnt.few",       B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, EMPTY},
+    {"br.call.spnt",           B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
+    {"br.call.spnt.few.clr",   B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, EMPTY},
+    {"br.call.spnt.clr",       B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
+    {"br.call.dptk.few",       B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, EMPTY},
+    {"br.call.dptk",           B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
+    {"br.call.dptk.few.clr",   B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, EMPTY},
+    {"br.call.dptk.clr",       B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
+    {"br.call.dpnt.few",       B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, EMPTY},
+    {"br.call.dpnt",           B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
+    {"br.call.dpnt.few.clr",   B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, EMPTY},
+    {"br.call.dpnt.clr",       B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
+    {"br.call.sptk.many",      B, OpPaWhaD (5, 1, 0, 0), {B1, TGT25c}, EMPTY},
+    {"br.call.sptk.many.clr",  B, OpPaWhaD (5, 1, 0, 1), {B1, TGT25c}, EMPTY},
+    {"br.call.spnt.many",      B, OpPaWhaD (5, 1, 1, 0), {B1, TGT25c}, EMPTY},
+    {"br.call.spnt.many.clr",  B, OpPaWhaD (5, 1, 1, 1), {B1, TGT25c}, EMPTY},
+    {"br.call.dptk.many",      B, OpPaWhaD (5, 1, 2, 0), {B1, TGT25c}, EMPTY},
+    {"br.call.dptk.many.clr",  B, OpPaWhaD (5, 1, 2, 1), {B1, TGT25c}, EMPTY},
+    {"br.call.dpnt.many",      B, OpPaWhaD (5, 1, 3, 0), {B1, TGT25c}, EMPTY},
+    {"br.call.dpnt.many.clr",  B, OpPaWhaD (5, 1, 3, 1), {B1, TGT25c}, EMPTY},
 
-    /* branch predict */
+    /* Branch predict.  */
 #define BRP(a,b) \
-      B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED
+      B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED, 0, NULL
     {"brp.sptk",               BRP (0, 0)},
     {"brp.loop",               BRP (0, 1)},
     {"brp.dptk",               BRP (0, 2)},
@@ -462,7 +473,7 @@ struct ia64_opcode ia64_opcodes_b[] =
     {"brp.exit.imp",           BRP (1, 3)},
 #undef BRP
 
-    {0}
+    {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
   };
 
 #undef B0
@@ -494,3 +505,4 @@ struct ia64_opcode ia64_opcodes_b[] =
 #undef OpX6BtypePaWhaDPr
 #undef OpIhWhb
 #undef OpX6IhWhb
+#undef EMPTY
index 27390f59f2e4a9e67212182f8ab36a86c260c67e..f0761ddccf03b522917f4705955bb5cce11b0bce 100644 (file)
@@ -1,14 +1,33 @@
+/* ia64-opc-d.c -- IA-64 `D' opcode table.
+   Copyright 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
+   Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
+
+   This file is part of GDB, GAS, and the GNU binutils.
+
+   GDB, GAS, and the GNU binutils are free software; you can redistribute
+   them and/or modify them under the terms of the GNU General Public
+   License as published by the Free Software Foundation; either version
+   2, or (at your option) any later version.
+
+   GDB, GAS, and the GNU binutils are distributed in the hope that they
+   will be useful, but WITHOUT ANY WARRANTY; without even the implied
+   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
+   the GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this file; see the file COPYING.  If not, write to the
+   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+   02111-1307, USA.  */
+
 struct ia64_opcode ia64_opcodes_d[] =
   {
-    {"add",   IA64_TYPE_DYN, 1, 0, 0,
-     {IA64_OPND_R1, IA64_OPND_IMM22, IA64_OPND_R3_2}},
-    {"add",   IA64_TYPE_DYN, 1, 0, 0,
-     {IA64_OPND_R1, IA64_OPND_IMM14, IA64_OPND_R3}},
-    {"break", IA64_TYPE_DYN, 0, 0, 0, {IA64_OPND_IMMU21}},
-    {"chk.s", IA64_TYPE_DYN, 0, 0, 0, {IA64_OPND_R2, IA64_OPND_TGT25b}},
-    {"mov",   IA64_TYPE_DYN, 1, 0, 0, {IA64_OPND_R1,  IA64_OPND_AR3}},
-    {"mov",   IA64_TYPE_DYN, 1, 0, 0, {IA64_OPND_AR3, IA64_OPND_IMM8}},
-    {"mov",   IA64_TYPE_DYN, 1, 0, 0, {IA64_OPND_AR3, IA64_OPND_R2}},
-    {"nop",   IA64_TYPE_DYN, 0, 0, 0, {IA64_OPND_IMMU21}},
-    {0}
+    {"add",   IA64_TYPE_DYN, 1, 0, 0, {IA64_OPND_R1, IA64_OPND_IMM22, IA64_OPND_R3_2}, 0, 0, NULL},
+    {"add",   IA64_TYPE_DYN, 1, 0, 0, {IA64_OPND_R1, IA64_OPND_IMM14, IA64_OPND_R3}, 0, 0, NULL},
+    {"break", IA64_TYPE_DYN, 0, 0, 0, {IA64_OPND_IMMU21}, 0, 0, NULL},
+    {"chk.s", IA64_TYPE_DYN, 0, 0, 0, {IA64_OPND_R2, IA64_OPND_TGT25b}, 0, 0, NULL},
+    {"mov",   IA64_TYPE_DYN, 1, 0, 0, {IA64_OPND_R1,  IA64_OPND_AR3}, 0, 0, NULL},
+    {"mov",   IA64_TYPE_DYN, 1, 0, 0, {IA64_OPND_AR3, IA64_OPND_IMM8}, 0, 0, NULL},
+    {"mov",   IA64_TYPE_DYN, 1, 0, 0, {IA64_OPND_AR3, IA64_OPND_R2}, 0, 0, NULL},
+    {"nop",   IA64_TYPE_DYN, 0, 0, 0, {IA64_OPND_IMMU21}, 0, 0, NULL},
+    {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
   };
index 2f898c64d5cfc7de74ed6d55314a155942f803ee..41d4a0064056b7f6580f5087de31d7a2051c92a3 100644 (file)
@@ -1,5 +1,5 @@
 /* ia64-opc-f.c -- IA-64 `F' opcode table.
-   Copyright 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
 
    This file is part of GDB, GAS, and the GNU binutils.
 #define OpXbX6Sf(a,b,c,d) \
        (bOp (a) | bXb (b) | bX6 (c) | bSf (d)), (mOp | mXb | mX6 | mSf)
 
+/* Used to initialise unused fields in ia64_opcode struct,
+   in order to stop gcc from complaining.  */
+#define EMPTY 0,0,NULL
+
 struct ia64_opcode ia64_opcodes_f[] =
   {
-    /* F-type instruction encodings (sorted according to major opcode) */
-
-    {"frcpa.s0",       f2, OpXbQSf (0, 1, 0, 0), {F1, P2, F2, F3}},
-    {"frcpa",          f2, OpXbQSf (0, 1, 0, 0), {F1, P2, F2, F3}, PSEUDO},
-    {"frcpa.s1",       f2, OpXbQSf (0, 1, 0, 1), {F1, P2, F2, F3}},
-    {"frcpa.s2",       f2, OpXbQSf (0, 1, 0, 2), {F1, P2, F2, F3}},
-    {"frcpa.s3",       f2, OpXbQSf (0, 1, 0, 3), {F1, P2, F2, F3}},
-
-    {"frsqrta.s0",     f2, OpXbQSf (0, 1, 1, 0), {F1, P2, F3}},
-    {"frsqrta",                f2, OpXbQSf (0, 1, 1, 0), {F1, P2, F3}, PSEUDO},
-    {"frsqrta.s1",     f2, OpXbQSf (0, 1, 1, 1), {F1, P2, F3}},
-    {"frsqrta.s2",     f2, OpXbQSf (0, 1, 1, 2), {F1, P2, F3}},
-    {"frsqrta.s3",     f2, OpXbQSf (0, 1, 1, 3), {F1, P2, F3}},
-
-    {"fmin.s0",                f, OpXbX6Sf (0, 0, 0x14, 0), {F1, F2, F3}},
-    {"fmin",           f, OpXbX6Sf (0, 0, 0x14, 0), {F1, F2, F3}, PSEUDO},
-    {"fmin.s1",                f, OpXbX6Sf (0, 0, 0x14, 1), {F1, F2, F3}},
-    {"fmin.s2",                f, OpXbX6Sf (0, 0, 0x14, 2), {F1, F2, F3}},
-    {"fmin.s3",                f, OpXbX6Sf (0, 0, 0x14, 3), {F1, F2, F3}},
-    {"fmax.s0",                f, OpXbX6Sf (0, 0, 0x15, 0), {F1, F2, F3}},
-    {"fmax",           f, OpXbX6Sf (0, 0, 0x15, 0), {F1, F2, F3}, PSEUDO},
-    {"fmax.s1",                f, OpXbX6Sf (0, 0, 0x15, 1), {F1, F2, F3}},
-    {"fmax.s2",                f, OpXbX6Sf (0, 0, 0x15, 2), {F1, F2, F3}},
-    {"fmax.s3",                f, OpXbX6Sf (0, 0, 0x15, 3), {F1, F2, F3}},
-    {"famin.s0",       f, OpXbX6Sf (0, 0, 0x16, 0), {F1, F2, F3}},
-    {"famin",          f, OpXbX6Sf (0, 0, 0x16, 0), {F1, F2, F3}, PSEUDO},
-    {"famin.s1",       f, OpXbX6Sf (0, 0, 0x16, 1), {F1, F2, F3}},
-    {"famin.s2",       f, OpXbX6Sf (0, 0, 0x16, 2), {F1, F2, F3}},
-    {"famin.s3",       f, OpXbX6Sf (0, 0, 0x16, 3), {F1, F2, F3}},
-    {"famax.s0",       f, OpXbX6Sf (0, 0, 0x17, 0), {F1, F2, F3}},
-    {"famax",          f, OpXbX6Sf (0, 0, 0x17, 0), {F1, F2, F3}, PSEUDO},
-    {"famax.s1",       f, OpXbX6Sf (0, 0, 0x17, 1), {F1, F2, F3}},
-    {"famax.s2",       f, OpXbX6Sf (0, 0, 0x17, 2), {F1, F2, F3}},
-    {"famax.s3",       f, OpXbX6Sf (0, 0, 0x17, 3), {F1, F2, F3}},
-
-    {"mov",            f, OpXbX6 (0, 0, 0x10), {F1, F3}, PSEUDO | F2_EQ_F3},
-    {"fabs",           f, OpXbX6F2 (0, 0, 0x10, 0), {F1, F3}, PSEUDO},
-    {"fneg",           f, OpXbX6   (0, 0, 0x11), {F1, F3}, PSEUDO | F2_EQ_F3},
-    {"fnegabs",                f, OpXbX6F2 (0, 0, 0x11, 0), {F1, F3}, PSEUDO},
-    {"fmerge.s",       f, OpXbX6   (0, 0, 0x10), {F1, F2, F3}},
-    {"fmerge.ns",      f, OpXbX6   (0, 0, 0x11), {F1, F2, F3}},
-
-    {"fmerge.se",      f, OpXbX6 (0, 0, 0x12), {F1, F2, F3}},
-    {"fmix.lr",                f, OpXbX6 (0, 0, 0x39), {F1, F2, F3}},
-    {"fmix.r",         f, OpXbX6 (0, 0, 0x3a), {F1, F2, F3}},
-    {"fmix.l",         f, OpXbX6 (0, 0, 0x3b), {F1, F2, F3}},
-    {"fsxt.r",         f, OpXbX6 (0, 0, 0x3c), {F1, F2, F3}},
-    {"fsxt.l",         f, OpXbX6 (0, 0, 0x3d), {F1, F2, F3}},
-    {"fpack",          f, OpXbX6 (0, 0, 0x28), {F1, F2, F3}},
-    {"fswap",          f, OpXbX6 (0, 0, 0x34), {F1, F2, F3}},
-    {"fswap.nl",       f, OpXbX6 (0, 0, 0x35), {F1, F2, F3}},
-    {"fswap.nr",       f, OpXbX6 (0, 0, 0x36), {F1, F2, F3}},
-    {"fand",           f, OpXbX6 (0, 0, 0x2c), {F1, F2, F3}},
-    {"fandcm",         f, OpXbX6 (0, 0, 0x2d), {F1, F2, F3}},
-    {"for",            f, OpXbX6 (0, 0, 0x2e), {F1, F2, F3}},
-    {"fxor",           f, OpXbX6 (0, 0, 0x2f), {F1, F2, F3}},
-
-    {"fcvt.fx.s0",             f, OpXbX6Sf (0, 0, 0x18, 0), {F1, F2}},
-    {"fcvt.fx",                        f, OpXbX6Sf (0, 0, 0x18, 0), {F1, F2}, PSEUDO},
-    {"fcvt.fx.s1",             f, OpXbX6Sf (0, 0, 0x18, 1), {F1, F2}},
-    {"fcvt.fx.s2",             f, OpXbX6Sf (0, 0, 0x18, 2), {F1, F2}},
-    {"fcvt.fx.s3",             f, OpXbX6Sf (0, 0, 0x18, 3), {F1, F2}},
-    {"fcvt.fxu.s0",            f, OpXbX6Sf (0, 0, 0x19, 0), {F1, F2}},
-    {"fcvt.fxu",               f, OpXbX6Sf (0, 0, 0x19, 0), {F1, F2}, PSEUDO},
-    {"fcvt.fxu.s1",            f, OpXbX6Sf (0, 0, 0x19, 1), {F1, F2}},
-    {"fcvt.fxu.s2",            f, OpXbX6Sf (0, 0, 0x19, 2), {F1, F2}},
-    {"fcvt.fxu.s3",            f, OpXbX6Sf (0, 0, 0x19, 3), {F1, F2}},
-    {"fcvt.fx.trunc.s0",       f, OpXbX6Sf (0, 0, 0x1a, 0), {F1, F2}},
-    {"fcvt.fx.trunc",          f, OpXbX6Sf (0, 0, 0x1a, 0), {F1, F2}, PSEUDO},
-    {"fcvt.fx.trunc.s1",       f, OpXbX6Sf (0, 0, 0x1a, 1), {F1, F2}},
-    {"fcvt.fx.trunc.s2",       f, OpXbX6Sf (0, 0, 0x1a, 2), {F1, F2}},
-    {"fcvt.fx.trunc.s3",       f, OpXbX6Sf (0, 0, 0x1a, 3), {F1, F2}},
-    {"fcvt.fxu.trunc.s0",      f, OpXbX6Sf (0, 0, 0x1b, 0), {F1, F2}},
-    {"fcvt.fxu.trunc",         f, OpXbX6Sf (0, 0, 0x1b, 0), {F1, F2}, PSEUDO},
-    {"fcvt.fxu.trunc.s1",      f, OpXbX6Sf (0, 0, 0x1b, 1), {F1, F2}},
-    {"fcvt.fxu.trunc.s2",      f, OpXbX6Sf (0, 0, 0x1b, 2), {F1, F2}},
-    {"fcvt.fxu.trunc.s3",      f, OpXbX6Sf (0, 0, 0x1b, 3), {F1, F2}},
-
-    {"fcvt.xf",                f, OpXbX6 (0, 0, 0x1c), {F1, F2}},
-
-    {"fsetc.s0",       f0, OpXbX6Sf (0, 0, 0x04, 0), {IMMU7a, IMMU7b}},
-    {"fsetc",          f0, OpXbX6Sf (0, 0, 0x04, 0), {IMMU7a, IMMU7b}, PSEUDO},
-    {"fsetc.s1",       f0, OpXbX6Sf (0, 0, 0x04, 1), {IMMU7a, IMMU7b}},
-    {"fsetc.s2",       f0, OpXbX6Sf (0, 0, 0x04, 2), {IMMU7a, IMMU7b}},
-    {"fsetc.s3",       f0, OpXbX6Sf (0, 0, 0x04, 3), {IMMU7a, IMMU7b}},
-    {"fclrf.s0",       f0, OpXbX6Sf (0, 0, 0x05, 0)},
-    {"fclrf",          f0, OpXbX6Sf (0, 0, 0x05, 0), {0}, PSEUDO},
-    {"fclrf.s1",       f0, OpXbX6Sf (0, 0, 0x05, 1)},
-    {"fclrf.s2",       f0, OpXbX6Sf (0, 0, 0x05, 2)},
-    {"fclrf.s3",       f0, OpXbX6Sf (0, 0, 0x05, 3)},
-    {"fchkf.s0",       f0, OpXbX6Sf (0, 0, 0x08, 0), {TGT25}},
-    {"fchkf",          f0, OpXbX6Sf (0, 0, 0x08, 0), {TGT25}, PSEUDO},
-    {"fchkf.s1",       f0, OpXbX6Sf (0, 0, 0x08, 1), {TGT25}},
-    {"fchkf.s2",       f0, OpXbX6Sf (0, 0, 0x08, 2), {TGT25}},
-    {"fchkf.s3",       f0, OpXbX6Sf (0, 0, 0x08, 3), {TGT25}},
-
-    {"break.f",                f0, OpXbX6 (0, 0, 0x00), {IMMU21}},
-    {"nop.f",          f0, OpXbX6 (0, 0, 0x01), {IMMU21}},
-
-    {"fprcpa.s0",      f2, OpXbQSf (1, 1, 0, 0), {F1, P2, F2, F3}},
-    {"fprcpa",         f2, OpXbQSf (1, 1, 0, 0), {F1, P2, F2, F3}, PSEUDO},
-    {"fprcpa.s1",      f2, OpXbQSf (1, 1, 0, 1), {F1, P2, F2, F3}},
-    {"fprcpa.s2",      f2, OpXbQSf (1, 1, 0, 2), {F1, P2, F2, F3}},
-    {"fprcpa.s3",      f2, OpXbQSf (1, 1, 0, 3), {F1, P2, F2, F3}},
-
-    {"fprsqrta.s0",    f2, OpXbQSf (1, 1, 1, 0), {F1, P2, F3}},
-    {"fprsqrta",       f2, OpXbQSf (1, 1, 1, 0), {F1, P2, F3}, PSEUDO},
-    {"fprsqrta.s1",    f2, OpXbQSf (1, 1, 1, 1), {F1, P2, F3}},
-    {"fprsqrta.s2",    f2, OpXbQSf (1, 1, 1, 2), {F1, P2, F3}},
-    {"fprsqrta.s3",    f2, OpXbQSf (1, 1, 1, 3), {F1, P2, F3}},
-
-    {"fpmin.s0",       f, OpXbX6Sf (1, 0, 0x14, 0), {F1, F2, F3}},
-    {"fpmin",          f, OpXbX6Sf (1, 0, 0x14, 0), {F1, F2, F3}, PSEUDO},
-    {"fpmin.s1",       f, OpXbX6Sf (1, 0, 0x14, 1), {F1, F2, F3}},
-    {"fpmin.s2",       f, OpXbX6Sf (1, 0, 0x14, 2), {F1, F2, F3}},
-    {"fpmin.s3",       f, OpXbX6Sf (1, 0, 0x14, 3), {F1, F2, F3}},
-    {"fpmax.s0",       f, OpXbX6Sf (1, 0, 0x15, 0), {F1, F2, F3}},
-    {"fpmax",          f, OpXbX6Sf (1, 0, 0x15, 0), {F1, F2, F3}, PSEUDO},
-    {"fpmax.s1",       f, OpXbX6Sf (1, 0, 0x15, 1), {F1, F2, F3}},
-    {"fpmax.s2",       f, OpXbX6Sf (1, 0, 0x15, 2), {F1, F2, F3}},
-    {"fpmax.s3",       f, OpXbX6Sf (1, 0, 0x15, 3), {F1, F2, F3}},
-    {"fpamin.s0",      f, OpXbX6Sf (1, 0, 0x16, 0), {F1, F2, F3}},
-    {"fpamin",         f, OpXbX6Sf (1, 0, 0x16, 0), {F1, F2, F3}, PSEUDO},
-    {"fpamin.s1",      f, OpXbX6Sf (1, 0, 0x16, 1), {F1, F2, F3}},
-    {"fpamin.s2",      f, OpXbX6Sf (1, 0, 0x16, 2), {F1, F2, F3}},
-    {"fpamin.s3",      f, OpXbX6Sf (1, 0, 0x16, 3), {F1, F2, F3}},
-    {"fpamax.s0",      f, OpXbX6Sf (1, 0, 0x17, 0), {F1, F2, F3}},
-    {"fpamax",         f, OpXbX6Sf (1, 0, 0x17, 0), {F1, F2, F3}, PSEUDO},
-    {"fpamax.s1",      f, OpXbX6Sf (1, 0, 0x17, 1), {F1, F2, F3}},
-    {"fpamax.s2",      f, OpXbX6Sf (1, 0, 0x17, 2), {F1, F2, F3}},
-    {"fpamax.s3",      f, OpXbX6Sf (1, 0, 0x17, 3), {F1, F2, F3}},
-
-    {"fpcmp.eq.s0",    f, OpXbX6Sf (1, 0, 0x30, 0), {F1, F2, F3}},
-    {"fpcmp.eq",       f, OpXbX6Sf (1, 0, 0x30, 0), {F1, F2, F3}, PSEUDO},
-    {"fpcmp.eq.s1",    f, OpXbX6Sf (1, 0, 0x30, 1), {F1, F2, F3}},
-    {"fpcmp.eq.s2",    f, OpXbX6Sf (1, 0, 0x30, 2), {F1, F2, F3}},
-    {"fpcmp.eq.s3",    f, OpXbX6Sf (1, 0, 0x30, 3), {F1, F2, F3}},
-    {"fpcmp.lt.s0",    f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F2, F3}},
-    {"fpcmp.lt",       f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F2, F3}, PSEUDO},
-    {"fpcmp.lt.s1",    f, OpXbX6Sf (1, 0, 0x31, 1), {F1, F2, F3}},
-    {"fpcmp.lt.s2",    f, OpXbX6Sf (1, 0, 0x31, 2), {F1, F2, F3}},
-    {"fpcmp.lt.s3",    f, OpXbX6Sf (1, 0, 0x31, 3), {F1, F2, F3}},
-    {"fpcmp.le.s0",    f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F2, F3}},
-    {"fpcmp.le",       f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F2, F3}, PSEUDO},
-    {"fpcmp.le.s1",    f, OpXbX6Sf (1, 0, 0x32, 1), {F1, F2, F3}},
-    {"fpcmp.le.s2",    f, OpXbX6Sf (1, 0, 0x32, 2), {F1, F2, F3}},
-    {"fpcmp.le.s3",    f, OpXbX6Sf (1, 0, 0x32, 3), {F1, F2, F3}},
-    {"fpcmp.gt.s0",    f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.gt",       f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.gt.s1",    f, OpXbX6Sf (1, 0, 0x31, 1), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.gt.s2",    f, OpXbX6Sf (1, 0, 0x31, 2), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.gt.s3",    f, OpXbX6Sf (1, 0, 0x31, 3), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.ge.s0",    f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.ge",       f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.ge.s1",    f, OpXbX6Sf (1, 0, 0x32, 1), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.ge.s2",    f, OpXbX6Sf (1, 0, 0x32, 2), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.ge.s3",    f, OpXbX6Sf (1, 0, 0x32, 3), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.unord.s0", f, OpXbX6Sf (1, 0, 0x33, 0), {F1, F2, F3}},
-    {"fpcmp.unord",    f, OpXbX6Sf (1, 0, 0x33, 0), {F1, F2, F3}, PSEUDO},
-    {"fpcmp.unord.s1", f, OpXbX6Sf (1, 0, 0x33, 1), {F1, F2, F3}},
-    {"fpcmp.unord.s2", f, OpXbX6Sf (1, 0, 0x33, 2), {F1, F2, F3}},
-    {"fpcmp.unord.s3", f, OpXbX6Sf (1, 0, 0x33, 3), {F1, F2, F3}},
-    {"fpcmp.neq.s0",   f, OpXbX6Sf (1, 0, 0x34, 0), {F1, F2, F3}},
-    {"fpcmp.neq",      f, OpXbX6Sf (1, 0, 0x34, 0), {F1, F2, F3}, PSEUDO},
-    {"fpcmp.neq.s1",   f, OpXbX6Sf (1, 0, 0x34, 1), {F1, F2, F3}},
-    {"fpcmp.neq.s2",   f, OpXbX6Sf (1, 0, 0x34, 2), {F1, F2, F3}},
-    {"fpcmp.neq.s3",   f, OpXbX6Sf (1, 0, 0x34, 3), {F1, F2, F3}},
-    {"fpcmp.nlt.s0",   f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F2, F3}},
-    {"fpcmp.nlt",      f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F2, F3}, PSEUDO},
-    {"fpcmp.nlt.s1",   f, OpXbX6Sf (1, 0, 0x35, 1), {F1, F2, F3}},
-    {"fpcmp.nlt.s2",   f, OpXbX6Sf (1, 0, 0x35, 2), {F1, F2, F3}},
-    {"fpcmp.nlt.s3",   f, OpXbX6Sf (1, 0, 0x35, 3), {F1, F2, F3}},
-    {"fpcmp.nle.s0",   f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F2, F3}},
-    {"fpcmp.nle",      f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F2, F3}, PSEUDO},
-    {"fpcmp.nle.s1",   f, OpXbX6Sf (1, 0, 0x36, 1), {F1, F2, F3}},
-    {"fpcmp.nle.s2",   f, OpXbX6Sf (1, 0, 0x36, 2), {F1, F2, F3}},
-    {"fpcmp.nle.s3",   f, OpXbX6Sf (1, 0, 0x36, 3), {F1, F2, F3}},
-    {"fpcmp.ngt.s0",   f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.ngt",      f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.ngt.s1",   f, OpXbX6Sf (1, 0, 0x35, 1), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.ngt.s2",   f, OpXbX6Sf (1, 0, 0x35, 2), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.ngt.s3",   f, OpXbX6Sf (1, 0, 0x35, 3), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.nge.s0",   f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.nge",      f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.nge.s1",   f, OpXbX6Sf (1, 0, 0x36, 1), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.nge.s2",   f, OpXbX6Sf (1, 0, 0x36, 2), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.nge.s3",   f, OpXbX6Sf (1, 0, 0x36, 3), {F1, F3, F2}, PSEUDO},
-    {"fpcmp.ord.s0",   f, OpXbX6Sf (1, 0, 0x37, 0), {F1, F2, F3}},
-    {"fpcmp.ord",      f, OpXbX6Sf (1, 0, 0x37, 0), {F1, F2, F3}, PSEUDO},
-    {"fpcmp.ord.s1",   f, OpXbX6Sf (1, 0, 0x37, 1), {F1, F2, F3}},
-    {"fpcmp.ord.s2",   f, OpXbX6Sf (1, 0, 0x37, 2), {F1, F2, F3}},
-    {"fpcmp.ord.s3",   f, OpXbX6Sf (1, 0, 0x37, 3), {F1, F2, F3}},
-
-    {"fpabs",          f, OpXbX6F2 (1, 0, 0x10, 0), {F1, F3}, PSEUDO},
-    {"fpneg",          f, OpXbX6   (1, 0, 0x11), {F1, F3}, PSEUDO | F2_EQ_F3},
-    {"fpnegabs",       f, OpXbX6F2 (1, 0, 0x11, 0), {F1, F3}, PSEUDO},
-    {"fpmerge.s",      f, OpXbX6   (1, 0, 0x10), {F1, F2, F3}},
-    {"fpmerge.ns",     f, OpXbX6   (1, 0, 0x11), {F1, F2, F3}},
-    {"fpmerge.se",     f, OpXbX6 (1, 0, 0x12), {F1, F2, F3}},
-
-    {"fpcvt.fx.s0",            f, OpXbX6Sf (1, 0, 0x18, 0), {F1, F2}},
-    {"fpcvt.fx",               f, OpXbX6Sf (1, 0, 0x18, 0), {F1, F2}, PSEUDO},
-    {"fpcvt.fx.s1",            f, OpXbX6Sf (1, 0, 0x18, 1), {F1, F2}},
-    {"fpcvt.fx.s2",            f, OpXbX6Sf (1, 0, 0x18, 2), {F1, F2}},
-    {"fpcvt.fx.s3",            f, OpXbX6Sf (1, 0, 0x18, 3), {F1, F2}},
-    {"fpcvt.fxu.s0",           f, OpXbX6Sf (1, 0, 0x19, 0), {F1, F2}},
-    {"fpcvt.fxu",              f, OpXbX6Sf (1, 0, 0x19, 0), {F1, F2}, PSEUDO},
-    {"fpcvt.fxu.s1",           f, OpXbX6Sf (1, 0, 0x19, 1), {F1, F2}},
-    {"fpcvt.fxu.s2",           f, OpXbX6Sf (1, 0, 0x19, 2), {F1, F2}},
-    {"fpcvt.fxu.s3",           f, OpXbX6Sf (1, 0, 0x19, 3), {F1, F2}},
-    {"fpcvt.fx.trunc.s0",      f, OpXbX6Sf (1, 0, 0x1a, 0), {F1, F2}},
-    {"fpcvt.fx.trunc",         f, OpXbX6Sf (1, 0, 0x1a, 0), {F1, F2}, PSEUDO},
-    {"fpcvt.fx.trunc.s1",      f, OpXbX6Sf (1, 0, 0x1a, 1), {F1, F2}},
-    {"fpcvt.fx.trunc.s2",      f, OpXbX6Sf (1, 0, 0x1a, 2), {F1, F2}},
-    {"fpcvt.fx.trunc.s3",      f, OpXbX6Sf (1, 0, 0x1a, 3), {F1, F2}},
-    {"fpcvt.fxu.trunc.s0",     f, OpXbX6Sf (1, 0, 0x1b, 0), {F1, F2}},
-    {"fpcvt.fxu.trunc",                f, OpXbX6Sf (1, 0, 0x1b, 0), {F1, F2}, PSEUDO},
-    {"fpcvt.fxu.trunc.s1",     f, OpXbX6Sf (1, 0, 0x1b, 1), {F1, F2}},
-    {"fpcvt.fxu.trunc.s2",     f, OpXbX6Sf (1, 0, 0x1b, 2), {F1, F2}},
-    {"fpcvt.fxu.trunc.s3",     f, OpXbX6Sf (1, 0, 0x1b, 3), {F1, F2}},
-
-    {"fcmp.eq.s0",       f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P1, P2, F2, F3}},
-    {"fcmp.eq",                  f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P1, P2, F2, F3}, PSEUDO},
-    {"fcmp.eq.s1",       f2, OpRaRbTaSf (4, 0, 0, 0, 1), {P1, P2, F2, F3}},
-    {"fcmp.eq.s2",       f2, OpRaRbTaSf (4, 0, 0, 0, 2), {P1, P2, F2, F3}},
-    {"fcmp.eq.s3",       f2, OpRaRbTaSf (4, 0, 0, 0, 3), {P1, P2, F2, F3}},
-    {"fcmp.lt.s0",       f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F2, F3}},
-    {"fcmp.lt",                  f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F2, F3}, PSEUDO},
-    {"fcmp.lt.s1",       f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P1, P2, F2, F3}},
-    {"fcmp.lt.s2",       f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P1, P2, F2, F3}},
-    {"fcmp.lt.s3",       f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P1, P2, F2, F3}},
-    {"fcmp.le.s0",       f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F2, F3}},
-    {"fcmp.le",                  f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F2, F3}, PSEUDO},
-    {"fcmp.le.s1",       f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P1, P2, F2, F3}},
-    {"fcmp.le.s2",       f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P1, P2, F2, F3}},
-    {"fcmp.le.s3",       f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P1, P2, F2, F3}},
-    {"fcmp.unord.s0",    f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P1, P2, F2, F3}},
-    {"fcmp.unord",       f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P1, P2, F2, F3}, PSEUDO},
-    {"fcmp.unord.s1",    f2, OpRaRbTaSf (4, 1, 1, 0, 1), {P1, P2, F2, F3}},
-    {"fcmp.unord.s2",    f2, OpRaRbTaSf (4, 1, 1, 0, 2), {P1, P2, F2, F3}},
-    {"fcmp.unord.s3",    f2, OpRaRbTaSf (4, 1, 1, 0, 3), {P1, P2, F2, F3}},
-    {"fcmp.eq.unc.s0",   f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P1, P2, F2, F3}},
-    {"fcmp.eq.unc",      f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P1, P2, F2, F3}, PSEUDO},
-    {"fcmp.eq.unc.s1",   f2, OpRaRbTaSf (4, 0, 0, 1, 1), {P1, P2, F2, F3}},
-    {"fcmp.eq.unc.s2",   f2, OpRaRbTaSf (4, 0, 0, 1, 2), {P1, P2, F2, F3}},
-    {"fcmp.eq.unc.s3",   f2, OpRaRbTaSf (4, 0, 0, 1, 3), {P1, P2, F2, F3}},
-    {"fcmp.lt.unc.s0",   f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F2, F3}},
-    {"fcmp.lt.unc",      f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F2, F3}, PSEUDO},
-    {"fcmp.lt.unc.s1",   f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P1, P2, F2, F3}},
-    {"fcmp.lt.unc.s2",   f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P1, P2, F2, F3}},
-    {"fcmp.lt.unc.s3",   f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P1, P2, F2, F3}},
-    {"fcmp.le.unc.s0",   f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F2, F3}},
-    {"fcmp.le.unc",      f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F2, F3}, PSEUDO},
-    {"fcmp.le.unc.s1",   f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P1, P2, F2, F3}},
-    {"fcmp.le.unc.s2",   f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P1, P2, F2, F3}},
-    {"fcmp.le.unc.s3",   f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P1, P2, F2, F3}},
-    {"fcmp.unord.unc.s0", f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P1, P2, F2, F3}},
-    {"fcmp.unord.unc",    f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P1, P2, F2, F3}, PSEUDO},
-    {"fcmp.unord.unc.s1", f2, OpRaRbTaSf (4, 1, 1, 1, 1), {P1, P2, F2, F3}},
-    {"fcmp.unord.unc.s2", f2, OpRaRbTaSf (4, 1, 1, 1, 2), {P1, P2, F2, F3}},
-    {"fcmp.unord.unc.s3", f2, OpRaRbTaSf (4, 1, 1, 1, 3), {P1, P2, F2, F3}},
+    /* F-type instruction encodings (sorted according to major opcode) */
+
+    {"frcpa.s0",       f2, OpXbQSf (0, 1, 0, 0), {F1, P2, F2, F3}, EMPTY},
+    {"frcpa",          f2, OpXbQSf (0, 1, 0, 0), {F1, P2, F2, F3}, PSEUDO, 0, NULL},
+    {"frcpa.s1",       f2, OpXbQSf (0, 1, 0, 1), {F1, P2, F2, F3}, EMPTY},
+    {"frcpa.s2",       f2, OpXbQSf (0, 1, 0, 2), {F1, P2, F2, F3}, EMPTY},
+    {"frcpa.s3",       f2, OpXbQSf (0, 1, 0, 3), {F1, P2, F2, F3}, EMPTY},
+
+    {"frsqrta.s0",     f2, OpXbQSf (0, 1, 1, 0), {F1, P2, F3}, EMPTY},
+    {"frsqrta",                f2, OpXbQSf (0, 1, 1, 0), {F1, P2, F3}, PSEUDO, 0, NULL},
+    {"frsqrta.s1",     f2, OpXbQSf (0, 1, 1, 1), {F1, P2, F3}, EMPTY},
+    {"frsqrta.s2",     f2, OpXbQSf (0, 1, 1, 2), {F1, P2, F3}, EMPTY},
+    {"frsqrta.s3",     f2, OpXbQSf (0, 1, 1, 3), {F1, P2, F3}, EMPTY},
+
+    {"fmin.s0",                f, OpXbX6Sf (0, 0, 0x14, 0), {F1, F2, F3}, EMPTY},
+    {"fmin",           f, OpXbX6Sf (0, 0, 0x14, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
+    {"fmin.s1",                f, OpXbX6Sf (0, 0, 0x14, 1), {F1, F2, F3}, EMPTY},
+    {"fmin.s2",                f, OpXbX6Sf (0, 0, 0x14, 2), {F1, F2, F3}, EMPTY},
+    {"fmin.s3",                f, OpXbX6Sf (0, 0, 0x14, 3), {F1, F2, F3}, EMPTY},
+    {"fmax.s0",                f, OpXbX6Sf (0, 0, 0x15, 0), {F1, F2, F3}, EMPTY},
+    {"fmax",           f, OpXbX6Sf (0, 0, 0x15, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
+    {"fmax.s1",                f, OpXbX6Sf (0, 0, 0x15, 1), {F1, F2, F3}, EMPTY},
+    {"fmax.s2",                f, OpXbX6Sf (0, 0, 0x15, 2), {F1, F2, F3}, EMPTY},
+    {"fmax.s3",                f, OpXbX6Sf (0, 0, 0x15, 3), {F1, F2, F3}, EMPTY},
+    {"famin.s0",       f, OpXbX6Sf (0, 0, 0x16, 0), {F1, F2, F3}, EMPTY},
+    {"famin",          f, OpXbX6Sf (0, 0, 0x16, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
+    {"famin.s1",       f, OpXbX6Sf (0, 0, 0x16, 1), {F1, F2, F3}, EMPTY},
+    {"famin.s2",       f, OpXbX6Sf (0, 0, 0x16, 2), {F1, F2, F3}, EMPTY},
+    {"famin.s3",       f, OpXbX6Sf (0, 0, 0x16, 3), {F1, F2, F3}, EMPTY},
+    {"famax.s0",       f, OpXbX6Sf (0, 0, 0x17, 0), {F1, F2, F3}, EMPTY},
+    {"famax",          f, OpXbX6Sf (0, 0, 0x17, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
+    {"famax.s1",       f, OpXbX6Sf (0, 0, 0x17, 1), {F1, F2, F3}, EMPTY},
+    {"famax.s2",       f, OpXbX6Sf (0, 0, 0x17, 2), {F1, F2, F3}, EMPTY},
+    {"famax.s3",       f, OpXbX6Sf (0, 0, 0x17, 3), {F1, F2, F3}, EMPTY},
+
+    {"mov",            f, OpXbX6 (0, 0, 0x10), {F1, F3}, PSEUDO | F2_EQ_F3, 0, NULL},
+    {"fabs",           f, OpXbX6F2 (0, 0, 0x10, 0), {F1, F3}, PSEUDO, 0, NULL},
+    {"fneg",           f, OpXbX6   (0, 0, 0x11), {F1, F3}, PSEUDO | F2_EQ_F3, 0, NULL},
+    {"fnegabs",                f, OpXbX6F2 (0, 0, 0x11, 0), {F1, F3}, PSEUDO, 0, NULL},
+    {"fmerge.s",       f, OpXbX6   (0, 0, 0x10), {F1, F2, F3}, EMPTY},
+    {"fmerge.ns",      f, OpXbX6   (0, 0, 0x11), {F1, F2, F3}, EMPTY},
+
+    {"fmerge.se",      f, OpXbX6 (0, 0, 0x12), {F1, F2, F3}, EMPTY},
+    {"fmix.lr",                f, OpXbX6 (0, 0, 0x39), {F1, F2, F3}, EMPTY},
+    {"fmix.r",         f, OpXbX6 (0, 0, 0x3a), {F1, F2, F3}, EMPTY},
+    {"fmix.l",         f, OpXbX6 (0, 0, 0x3b), {F1, F2, F3}, EMPTY},
+    {"fsxt.r",         f, OpXbX6 (0, 0, 0x3c), {F1, F2, F3}, EMPTY},
+    {"fsxt.l",         f, OpXbX6 (0, 0, 0x3d), {F1, F2, F3}, EMPTY},
+    {"fpack",          f, OpXbX6 (0, 0, 0x28), {F1, F2, F3}, EMPTY},
+    {"fswap",          f, OpXbX6 (0, 0, 0x34), {F1, F2, F3}, EMPTY},
+    {"fswap.nl",       f, OpXbX6 (0, 0, 0x35), {F1, F2, F3}, EMPTY},
+    {"fswap.nr",       f, OpXbX6 (0, 0, 0x36), {F1, F2, F3}, EMPTY},
+    {"fand",           f, OpXbX6 (0, 0, 0x2c), {F1, F2, F3}, EMPTY},
+    {"fandcm",         f, OpXbX6 (0, 0, 0x2d), {F1, F2, F3}, EMPTY},
+    {"for",            f, OpXbX6 (0, 0, 0x2e), {F1, F2, F3}, EMPTY},
+    {"fxor",           f, OpXbX6 (0, 0, 0x2f), {F1, F2, F3}, EMPTY},
+
+    {"fcvt.fx.s0",             f, OpXbX6Sf (0, 0, 0x18, 0), {F1, F2}, EMPTY},
+    {"fcvt.fx",                        f, OpXbX6Sf (0, 0, 0x18, 0), {F1, F2}, PSEUDO, 0, NULL},
+    {"fcvt.fx.s1",             f, OpXbX6Sf (0, 0, 0x18, 1), {F1, F2}, EMPTY},
+    {"fcvt.fx.s2",             f, OpXbX6Sf (0, 0, 0x18, 2), {F1, F2}, EMPTY},
+    {"fcvt.fx.s3",             f, OpXbX6Sf (0, 0, 0x18, 3), {F1, F2}, EMPTY},
+    {"fcvt.fxu.s0",            f, OpXbX6Sf (0, 0, 0x19, 0), {F1, F2}, EMPTY},
+    {"fcvt.fxu",               f, OpXbX6Sf (0, 0, 0x19, 0), {F1, F2}, PSEUDO, 0, NULL},
+    {"fcvt.fxu.s1",            f, OpXbX6Sf (0, 0, 0x19, 1), {F1, F2}, EMPTY},
+    {"fcvt.fxu.s2",            f, OpXbX6Sf (0, 0, 0x19, 2), {F1, F2}, EMPTY},
+    {"fcvt.fxu.s3",            f, OpXbX6Sf (0, 0, 0x19, 3), {F1, F2}, EMPTY},
+    {"fcvt.fx.trunc.s0",       f, OpXbX6Sf (0, 0, 0x1a, 0), {F1, F2}, EMPTY},
+    {"fcvt.fx.trunc",          f, OpXbX6Sf (0, 0, 0x1a, 0), {F1, F2}, PSEUDO, 0, NULL},
+    {"fcvt.fx.trunc.s1",       f, OpXbX6Sf (0, 0, 0x1a, 1), {F1, F2}, EMPTY},
+    {"fcvt.fx.trunc.s2",       f, OpXbX6Sf (0, 0, 0x1a, 2), {F1, F2}, EMPTY},
+    {"fcvt.fx.trunc.s3",       f, OpXbX6Sf (0, 0, 0x1a, 3), {F1, F2}, EMPTY},
+    {"fcvt.fxu.trunc.s0",      f, OpXbX6Sf (0, 0, 0x1b, 0), {F1, F2}, EMPTY},
+    {"fcvt.fxu.trunc",         f, OpXbX6Sf (0, 0, 0x1b, 0), {F1, F2}, PSEUDO, 0, NULL},
+    {"fcvt.fxu.trunc.s1",      f, OpXbX6Sf (0, 0, 0x1b, 1), {F1, F2}, EMPTY},
+    {"fcvt.fxu.trunc.s2",      f, OpXbX6Sf (0, 0, 0x1b, 2), {F1, F2}, EMPTY},
+    {"fcvt.fxu.trunc.s3",      f, OpXbX6Sf (0, 0, 0x1b, 3), {F1, F2}, EMPTY},
+
+    {"fcvt.xf",                f, OpXbX6 (0, 0, 0x1c), {F1, F2}, EMPTY},
+
+    {"fsetc.s0",       f0, OpXbX6Sf (0, 0, 0x04, 0), {IMMU7a, IMMU7b}, EMPTY},
+    {"fsetc",          f0, OpXbX6Sf (0, 0, 0x04, 0), {IMMU7a, IMMU7b}, PSEUDO, 0, NULL},
+    {"fsetc.s1",       f0, OpXbX6Sf (0, 0, 0x04, 1), {IMMU7a, IMMU7b}, EMPTY},
+    {"fsetc.s2",       f0, OpXbX6Sf (0, 0, 0x04, 2), {IMMU7a, IMMU7b}, EMPTY},
+    {"fsetc.s3",       f0, OpXbX6Sf (0, 0, 0x04, 3), {IMMU7a, IMMU7b}, EMPTY},
+    {"fclrf.s0",       f0, OpXbX6Sf (0, 0, 0x05, 0), {}, EMPTY},
+    {"fclrf",          f0, OpXbX6Sf (0, 0, 0x05, 0), {0}, PSEUDO, 0, NULL},
+    {"fclrf.s1",       f0, OpXbX6Sf (0, 0, 0x05, 1), {}, EMPTY},
+    {"fclrf.s2",       f0, OpXbX6Sf (0, 0, 0x05, 2), {}, EMPTY},
+    {"fclrf.s3",       f0, OpXbX6Sf (0, 0, 0x05, 3), {}, EMPTY},
+    {"fchkf.s0",       f0, OpXbX6Sf (0, 0, 0x08, 0), {TGT25}, EMPTY},
+    {"fchkf",          f0, OpXbX6Sf (0, 0, 0x08, 0), {TGT25}, PSEUDO, 0, NULL},
+    {"fchkf.s1",       f0, OpXbX6Sf (0, 0, 0x08, 1), {TGT25}, EMPTY},
+    {"fchkf.s2",       f0, OpXbX6Sf (0, 0, 0x08, 2), {TGT25}, EMPTY},
+    {"fchkf.s3",       f0, OpXbX6Sf (0, 0, 0x08, 3), {TGT25}, EMPTY},
+
+    {"break.f",                f0, OpXbX6 (0, 0, 0x00), {IMMU21}, EMPTY},
+    {"nop.f",          f0, OpXbX6 (0, 0, 0x01), {IMMU21}, EMPTY},
+
+    {"fprcpa.s0",      f2, OpXbQSf (1, 1, 0, 0), {F1, P2, F2, F3}, EMPTY},
+    {"fprcpa",         f2, OpXbQSf (1, 1, 0, 0), {F1, P2, F2, F3}, PSEUDO, 0, NULL},
+    {"fprcpa.s1",      f2, OpXbQSf (1, 1, 0, 1), {F1, P2, F2, F3}, EMPTY},
+    {"fprcpa.s2",      f2, OpXbQSf (1, 1, 0, 2), {F1, P2, F2, F3}, EMPTY},
+    {"fprcpa.s3",      f2, OpXbQSf (1, 1, 0, 3), {F1, P2, F2, F3}, EMPTY},
+
+    {"fprsqrta.s0",    f2, OpXbQSf (1, 1, 1, 0), {F1, P2, F3}, EMPTY},
+    {"fprsqrta",       f2, OpXbQSf (1, 1, 1, 0), {F1, P2, F3}, PSEUDO, 0, NULL},
+    {"fprsqrta.s1",    f2, OpXbQSf (1, 1, 1, 1), {F1, P2, F3}, EMPTY},
+    {"fprsqrta.s2",    f2, OpXbQSf (1, 1, 1, 2), {F1, P2, F3}, EMPTY},
+    {"fprsqrta.s3",    f2, OpXbQSf (1, 1, 1, 3), {F1, P2, F3}, EMPTY},
+
+    {"fpmin.s0",       f, OpXbX6Sf (1, 0, 0x14, 0), {F1, F2, F3}, EMPTY},
+    {"fpmin",          f, OpXbX6Sf (1, 0, 0x14, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
+    {"fpmin.s1",       f, OpXbX6Sf (1, 0, 0x14, 1), {F1, F2, F3}, EMPTY},
+    {"fpmin.s2",       f, OpXbX6Sf (1, 0, 0x14, 2), {F1, F2, F3}, EMPTY},
+    {"fpmin.s3",       f, OpXbX6Sf (1, 0, 0x14, 3), {F1, F2, F3}, EMPTY},
+    {"fpmax.s0",       f, OpXbX6Sf (1, 0, 0x15, 0), {F1, F2, F3}, EMPTY},
+    {"fpmax",          f, OpXbX6Sf (1, 0, 0x15, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
+    {"fpmax.s1",       f, OpXbX6Sf (1, 0, 0x15, 1), {F1, F2, F3}, EMPTY},
+    {"fpmax.s2",       f, OpXbX6Sf (1, 0, 0x15, 2), {F1, F2, F3}, EMPTY},
+    {"fpmax.s3",       f, OpXbX6Sf (1, 0, 0x15, 3), {F1, F2, F3}, EMPTY},
+    {"fpamin.s0",      f, OpXbX6Sf (1, 0, 0x16, 0), {F1, F2, F3}, EMPTY},
+    {"fpamin",         f, OpXbX6Sf (1, 0, 0x16, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
+    {"fpamin.s1",      f, OpXbX6Sf (1, 0, 0x16, 1), {F1, F2, F3}, EMPTY},
+    {"fpamin.s2",      f, OpXbX6Sf (1, 0, 0x16, 2), {F1, F2, F3}, EMPTY},
+    {"fpamin.s3",      f, OpXbX6Sf (1, 0, 0x16, 3), {F1, F2, F3}, EMPTY},
+    {"fpamax.s0",      f, OpXbX6Sf (1, 0, 0x17, 0), {F1, F2, F3}, EMPTY},
+    {"fpamax",         f, OpXbX6Sf (1, 0, 0x17, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
+    {"fpamax.s1",      f, OpXbX6Sf (1, 0, 0x17, 1), {F1, F2, F3}, EMPTY},
+    {"fpamax.s2",      f, OpXbX6Sf (1, 0, 0x17, 2), {F1, F2, F3}, EMPTY},
+    {"fpamax.s3",      f, OpXbX6Sf (1, 0, 0x17, 3), {F1, F2, F3}, EMPTY},
+
+    {"fpcmp.eq.s0",    f, OpXbX6Sf (1, 0, 0x30, 0), {F1, F2, F3}, EMPTY},
+    {"fpcmp.eq",       f, OpXbX6Sf (1, 0, 0x30, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
+    {"fpcmp.eq.s1",    f, OpXbX6Sf (1, 0, 0x30, 1), {F1, F2, F3}, EMPTY},
+    {"fpcmp.eq.s2",    f, OpXbX6Sf (1, 0, 0x30, 2), {F1, F2, F3}, EMPTY},
+    {"fpcmp.eq.s3",    f, OpXbX6Sf (1, 0, 0x30, 3), {F1, F2, F3}, EMPTY},
+    {"fpcmp.lt.s0",    f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F2, F3}, EMPTY},
+    {"fpcmp.lt",       f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
+    {"fpcmp.lt.s1",    f, OpXbX6Sf (1, 0, 0x31, 1), {F1, F2, F3}, EMPTY},
+    {"fpcmp.lt.s2",    f, OpXbX6Sf (1, 0, 0x31, 2), {F1, F2, F3}, EMPTY},
+    {"fpcmp.lt.s3",    f, OpXbX6Sf (1, 0, 0x31, 3), {F1, F2, F3}, EMPTY},
+    {"fpcmp.le.s0",    f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F2, F3}, EMPTY},
+    {"fpcmp.le",       f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
+    {"fpcmp.le.s1",    f, OpXbX6Sf (1, 0, 0x32, 1), {F1, F2, F3}, EMPTY},
+    {"fpcmp.le.s2",    f, OpXbX6Sf (1, 0, 0x32, 2), {F1, F2, F3}, EMPTY},
+    {"fpcmp.le.s3",    f, OpXbX6Sf (1, 0, 0x32, 3), {F1, F2, F3}, EMPTY},
+    {"fpcmp.gt.s0",    f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.gt",       f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.gt.s1",    f, OpXbX6Sf (1, 0, 0x31, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.gt.s2",    f, OpXbX6Sf (1, 0, 0x31, 2), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.gt.s3",    f, OpXbX6Sf (1, 0, 0x31, 3), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.ge.s0",    f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.ge",       f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.ge.s1",    f, OpXbX6Sf (1, 0, 0x32, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.ge.s2",    f, OpXbX6Sf (1, 0, 0x32, 2), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.ge.s3",    f, OpXbX6Sf (1, 0, 0x32, 3), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.unord.s0", f, OpXbX6Sf (1, 0, 0x33, 0), {F1, F2, F3}, EMPTY},
+    {"fpcmp.unord",    f, OpXbX6Sf (1, 0, 0x33, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
+    {"fpcmp.unord.s1", f, OpXbX6Sf (1, 0, 0x33, 1), {F1, F2, F3}, EMPTY},
+    {"fpcmp.unord.s2", f, OpXbX6Sf (1, 0, 0x33, 2), {F1, F2, F3}, EMPTY},
+    {"fpcmp.unord.s3", f, OpXbX6Sf (1, 0, 0x33, 3), {F1, F2, F3}, EMPTY},
+    {"fpcmp.neq.s0",   f, OpXbX6Sf (1, 0, 0x34, 0), {F1, F2, F3}, EMPTY},
+    {"fpcmp.neq",      f, OpXbX6Sf (1, 0, 0x34, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
+    {"fpcmp.neq.s1",   f, OpXbX6Sf (1, 0, 0x34, 1), {F1, F2, F3}, EMPTY},
+    {"fpcmp.neq.s2",   f, OpXbX6Sf (1, 0, 0x34, 2), {F1, F2, F3}, EMPTY},
+    {"fpcmp.neq.s3",   f, OpXbX6Sf (1, 0, 0x34, 3), {F1, F2, F3}, EMPTY},
+    {"fpcmp.nlt.s0",   f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F2, F3}, EMPTY},
+    {"fpcmp.nlt",      f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
+    {"fpcmp.nlt.s1",   f, OpXbX6Sf (1, 0, 0x35, 1), {F1, F2, F3}, EMPTY},
+    {"fpcmp.nlt.s2",   f, OpXbX6Sf (1, 0, 0x35, 2), {F1, F2, F3}, EMPTY},
+    {"fpcmp.nlt.s3",   f, OpXbX6Sf (1, 0, 0x35, 3), {F1, F2, F3}, EMPTY},
+    {"fpcmp.nle.s0",   f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F2, F3}, EMPTY},
+    {"fpcmp.nle",      f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
+    {"fpcmp.nle.s1",   f, OpXbX6Sf (1, 0, 0x36, 1), {F1, F2, F3}, EMPTY},
+    {"fpcmp.nle.s2",   f, OpXbX6Sf (1, 0, 0x36, 2), {F1, F2, F3}, EMPTY},
+    {"fpcmp.nle.s3",   f, OpXbX6Sf (1, 0, 0x36, 3), {F1, F2, F3}, EMPTY},
+    {"fpcmp.ngt.s0",   f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.ngt",      f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.ngt.s1",   f, OpXbX6Sf (1, 0, 0x35, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.ngt.s2",   f, OpXbX6Sf (1, 0, 0x35, 2), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.ngt.s3",   f, OpXbX6Sf (1, 0, 0x35, 3), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.nge.s0",   f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.nge",      f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.nge.s1",   f, OpXbX6Sf (1, 0, 0x36, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.nge.s2",   f, OpXbX6Sf (1, 0, 0x36, 2), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.nge.s3",   f, OpXbX6Sf (1, 0, 0x36, 3), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fpcmp.ord.s0",   f, OpXbX6Sf (1, 0, 0x37, 0), {F1, F2, F3}, EMPTY},
+    {"fpcmp.ord",      f, OpXbX6Sf (1, 0, 0x37, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
+    {"fpcmp.ord.s1",   f, OpXbX6Sf (1, 0, 0x37, 1), {F1, F2, F3}, EMPTY},
+    {"fpcmp.ord.s2",   f, OpXbX6Sf (1, 0, 0x37, 2), {F1, F2, F3}, EMPTY},
+    {"fpcmp.ord.s3",   f, OpXbX6Sf (1, 0, 0x37, 3), {F1, F2, F3}, EMPTY},
+
+    {"fpabs",          f, OpXbX6F2 (1, 0, 0x10, 0), {F1, F3}, PSEUDO, 0, NULL},
+    {"fpneg",          f, OpXbX6   (1, 0, 0x11), {F1, F3}, PSEUDO | F2_EQ_F3, 0, NULL},
+    {"fpnegabs",       f, OpXbX6F2 (1, 0, 0x11, 0), {F1, F3}, PSEUDO, 0, NULL},
+    {"fpmerge.s",      f, OpXbX6   (1, 0, 0x10), {F1, F2, F3}, EMPTY},
+    {"fpmerge.ns",     f, OpXbX6   (1, 0, 0x11), {F1, F2, F3}, EMPTY},
+    {"fpmerge.se",     f, OpXbX6 (1, 0, 0x12), {F1, F2, F3}, EMPTY},
+
+    {"fpcvt.fx.s0",            f, OpXbX6Sf (1, 0, 0x18, 0), {F1, F2}, EMPTY},
+    {"fpcvt.fx",               f, OpXbX6Sf (1, 0, 0x18, 0), {F1, F2}, PSEUDO, 0, NULL},
+    {"fpcvt.fx.s1",            f, OpXbX6Sf (1, 0, 0x18, 1), {F1, F2}, EMPTY},
+    {"fpcvt.fx.s2",            f, OpXbX6Sf (1, 0, 0x18, 2), {F1, F2}, EMPTY},
+    {"fpcvt.fx.s3",            f, OpXbX6Sf (1, 0, 0x18, 3), {F1, F2}, EMPTY},
+    {"fpcvt.fxu.s0",           f, OpXbX6Sf (1, 0, 0x19, 0), {F1, F2}, EMPTY},
+    {"fpcvt.fxu",              f, OpXbX6Sf (1, 0, 0x19, 0), {F1, F2}, PSEUDO, 0, NULL},
+    {"fpcvt.fxu.s1",           f, OpXbX6Sf (1, 0, 0x19, 1), {F1, F2}, EMPTY},
+    {"fpcvt.fxu.s2",           f, OpXbX6Sf (1, 0, 0x19, 2), {F1, F2}, EMPTY},
+    {"fpcvt.fxu.s3",           f, OpXbX6Sf (1, 0, 0x19, 3), {F1, F2}, EMPTY},
+    {"fpcvt.fx.trunc.s0",      f, OpXbX6Sf (1, 0, 0x1a, 0), {F1, F2}, EMPTY},
+    {"fpcvt.fx.trunc",         f, OpXbX6Sf (1, 0, 0x1a, 0), {F1, F2}, PSEUDO, 0, NULL},
+    {"fpcvt.fx.trunc.s1",      f, OpXbX6Sf (1, 0, 0x1a, 1), {F1, F2}, EMPTY},
+    {"fpcvt.fx.trunc.s2",      f, OpXbX6Sf (1, 0, 0x1a, 2), {F1, F2}, EMPTY},
+    {"fpcvt.fx.trunc.s3",      f, OpXbX6Sf (1, 0, 0x1a, 3), {F1, F2}, EMPTY},
+    {"fpcvt.fxu.trunc.s0",     f, OpXbX6Sf (1, 0, 0x1b, 0), {F1, F2}, EMPTY},
+    {"fpcvt.fxu.trunc",                f, OpXbX6Sf (1, 0, 0x1b, 0), {F1, F2}, PSEUDO, 0, NULL},
+    {"fpcvt.fxu.trunc.s1",     f, OpXbX6Sf (1, 0, 0x1b, 1), {F1, F2}, EMPTY},
+    {"fpcvt.fxu.trunc.s2",     f, OpXbX6Sf (1, 0, 0x1b, 2), {F1, F2}, EMPTY},
+    {"fpcvt.fxu.trunc.s3",     f, OpXbX6Sf (1, 0, 0x1b, 3), {F1, F2}, EMPTY},
+
+    {"fcmp.eq.s0",       f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.eq",                  f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
+    {"fcmp.eq.s1",       f2, OpRaRbTaSf (4, 0, 0, 0, 1), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.eq.s2",       f2, OpRaRbTaSf (4, 0, 0, 0, 2), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.eq.s3",       f2, OpRaRbTaSf (4, 0, 0, 0, 3), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.lt.s0",       f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.lt",                  f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
+    {"fcmp.lt.s1",       f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.lt.s2",       f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.lt.s3",       f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.le.s0",       f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.le",                  f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
+    {"fcmp.le.s1",       f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.le.s2",       f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.le.s3",       f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.unord.s0",    f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.unord",       f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
+    {"fcmp.unord.s1",    f2, OpRaRbTaSf (4, 1, 1, 0, 1), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.unord.s2",    f2, OpRaRbTaSf (4, 1, 1, 0, 2), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.unord.s3",    f2, OpRaRbTaSf (4, 1, 1, 0, 3), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.eq.unc.s0",   f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.eq.unc",      f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
+    {"fcmp.eq.unc.s1",   f2, OpRaRbTaSf (4, 0, 0, 1, 1), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.eq.unc.s2",   f2, OpRaRbTaSf (4, 0, 0, 1, 2), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.eq.unc.s3",   f2, OpRaRbTaSf (4, 0, 0, 1, 3), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.lt.unc.s0",   f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.lt.unc",      f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
+    {"fcmp.lt.unc.s1",   f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.lt.unc.s2",   f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.lt.unc.s3",   f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.le.unc.s0",   f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.le.unc",      f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
+    {"fcmp.le.unc.s1",   f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.le.unc.s2",   f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.le.unc.s3",   f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.unord.unc.s0", f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.unord.unc",    f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
+    {"fcmp.unord.unc.s1", f2, OpRaRbTaSf (4, 1, 1, 1, 1), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.unord.unc.s2", f2, OpRaRbTaSf (4, 1, 1, 1, 2), {P1, P2, F2, F3}, EMPTY},
+    {"fcmp.unord.unc.s3", f2, OpRaRbTaSf (4, 1, 1, 1, 3), {P1, P2, F2, F3}, EMPTY},
 
     /* pseudo-ops of the above */
-    {"fcmp.gt.s0",       f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F3, F2}},
-    {"fcmp.gt",                  f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F3, F2}, PSEUDO},
-    {"fcmp.gt.s1",       f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P1, P2, F3, F2}},
-    {"fcmp.gt.s2",       f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P1, P2, F3, F2}},
-    {"fcmp.gt.s3",       f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P1, P2, F3, F2}},
-    {"fcmp.ge.s0",       f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F3, F2}},
-    {"fcmp.ge",                  f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F3, F2}, PSEUDO},
-    {"fcmp.ge.s1",       f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P1, P2, F3, F2}},
-    {"fcmp.ge.s2",       f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P1, P2, F3, F2}},
-    {"fcmp.ge.s3",       f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P1, P2, F3, F2}},
-    {"fcmp.neq.s0",      f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P2, P1, F2, F3}},
-    {"fcmp.neq",         f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P2, P1, F2, F3}, PSEUDO},
-    {"fcmp.neq.s1",      f2, OpRaRbTaSf (4, 0, 0, 0, 1), {P2, P1, F2, F3}},
-    {"fcmp.neq.s2",      f2, OpRaRbTaSf (4, 0, 0, 0, 2), {P2, P1, F2, F3}},
-    {"fcmp.neq.s3",      f2, OpRaRbTaSf (4, 0, 0, 0, 3), {P2, P1, F2, F3}},
-    {"fcmp.nlt.s0",      f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F2, F3}},
-    {"fcmp.nlt",         f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F2, F3}, PSEUDO},
-    {"fcmp.nlt.s1",      f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P2, P1, F2, F3}},
-    {"fcmp.nlt.s2",      f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P2, P1, F2, F3}},
-    {"fcmp.nlt.s3",      f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P2, P1, F2, F3}},
-    {"fcmp.nle.s0",      f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F2, F3}},
-    {"fcmp.nle",         f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F2, F3}, PSEUDO},
-    {"fcmp.nle.s1",      f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P2, P1, F2, F3}},
-    {"fcmp.nle.s2",      f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P2, P1, F2, F3}},
-    {"fcmp.nle.s3",      f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P2, P1, F2, F3}},
-    {"fcmp.ngt.s0",      f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F3, F2}},
-    {"fcmp.ngt",         f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F3, F2}, PSEUDO},
-    {"fcmp.ngt.s1",      f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P2, P1, F3, F2}},
-    {"fcmp.ngt.s2",      f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P2, P1, F3, F2}},
-    {"fcmp.ngt.s3",      f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P2, P1, F3, F2}},
-    {"fcmp.nge.s0",      f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F3, F2}},
-    {"fcmp.nge",         f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F3, F2}, PSEUDO},
-    {"fcmp.nge.s1",      f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P2, P1, F3, F2}},
-    {"fcmp.nge.s2",      f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P2, P1, F3, F2}},
-    {"fcmp.nge.s3",      f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P2, P1, F3, F2}},
-    {"fcmp.ord.s0",      f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P2, P1, F2, F3}},
-    {"fcmp.ord",         f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P2, P1, F2, F3}, PSEUDO},
-    {"fcmp.ord.s1",      f2, OpRaRbTaSf (4, 1, 1, 0, 1), {P2, P1, F2, F3}},
-    {"fcmp.ord.s2",      f2, OpRaRbTaSf (4, 1, 1, 0, 2), {P2, P1, F2, F3}},
-    {"fcmp.ord.s3",      f2, OpRaRbTaSf (4, 1, 1, 0, 3), {P2, P1, F2, F3}},
-    {"fcmp.gt.unc.s0",   f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F3, F2}},
-    {"fcmp.gt.unc",      f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F3, F2}, PSEUDO},
-    {"fcmp.gt.unc.s1",   f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P1, P2, F3, F2}},
-    {"fcmp.gt.unc.s2",   f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P1, P2, F3, F2}},
-    {"fcmp.gt.unc.s3",   f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P1, P2, F3, F2}},
-    {"fcmp.ge.unc.s0",   f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F3, F2}},
-    {"fcmp.ge.unc",      f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F3, F2}, PSEUDO},
-    {"fcmp.ge.unc.s1",   f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P1, P2, F3, F2}},
-    {"fcmp.ge.unc.s2",   f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P1, P2, F3, F2}},
-    {"fcmp.ge.unc.s3",   f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P1, P2, F3, F2}},
-    {"fcmp.neq.unc.s0",          f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P2, P1, F2, F3}},
-    {"fcmp.neq.unc",     f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P2, P1, F2, F3}, PSEUDO},
-    {"fcmp.neq.unc.s1",          f2, OpRaRbTaSf (4, 0, 0, 1, 1), {P2, P1, F2, F3}},
-    {"fcmp.neq.unc.s2",          f2, OpRaRbTaSf (4, 0, 0, 1, 2), {P2, P1, F2, F3}},
-    {"fcmp.neq.unc.s3",          f2, OpRaRbTaSf (4, 0, 0, 1, 3), {P2, P1, F2, F3}},
-    {"fcmp.nlt.unc.s0",          f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F2, F3}},
-    {"fcmp.nlt.unc",     f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F2, F3}, PSEUDO},
-    {"fcmp.nlt.unc.s1",          f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P2, P1, F2, F3}},
-    {"fcmp.nlt.unc.s2",          f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P2, P1, F2, F3}},
-    {"fcmp.nlt.unc.s3",          f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P2, P1, F2, F3}},
-    {"fcmp.nle.unc.s0",          f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F2, F3}},
-    {"fcmp.nle.unc",     f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F2, F3}, PSEUDO},
-    {"fcmp.nle.unc.s1",          f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P2, P1, F2, F3}},
-    {"fcmp.nle.unc.s2",          f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P2, P1, F2, F3}},
-    {"fcmp.nle.unc.s3",          f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P2, P1, F2, F3}},
-    {"fcmp.ngt.unc.s0",          f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F3, F2}},
-    {"fcmp.ngt.unc",     f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F3, F2}, PSEUDO},
-    {"fcmp.ngt.unc.s1",          f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P2, P1, F3, F2}},
-    {"fcmp.ngt.unc.s2",          f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P2, P1, F3, F2}},
-    {"fcmp.ngt.unc.s3",          f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P2, P1, F3, F2}},
-    {"fcmp.nge.unc.s0",          f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F3, F2}},
-    {"fcmp.nge.unc",     f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F3, F2}, PSEUDO},
-    {"fcmp.nge.unc.s1",          f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P2, P1, F3, F2}},
-    {"fcmp.nge.unc.s2",          f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P2, P1, F3, F2}},
-    {"fcmp.nge.unc.s3",          f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P2, P1, F3, F2}},
-    {"fcmp.ord.unc.s0",          f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P2, P1, F2, F3}},
-    {"fcmp.ord.unc",     f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P2, P1, F2, F3}, PSEUDO},
-    {"fcmp.ord.unc.s1",   f2, OpRaRbTaSf (4, 1, 1, 1, 1), {P2, P1, F2, F3}},
-    {"fcmp.ord.unc.s2",   f2, OpRaRbTaSf (4, 1, 1, 1, 2), {P2, P1, F2, F3}},
-    {"fcmp.ord.unc.s3",   f2, OpRaRbTaSf (4, 1, 1, 1, 3), {P2, P1, F2, F3}},
-
-    {"fclass.m",       f2, OpTa (5, 0), {P1, P2, F2, IMMU9}},
-    {"fclass.nm",      f2, OpTa (5, 0), {P2, P1, F2, IMMU9}, PSEUDO},
-    {"fclass.m.unc",   f2, OpTa (5, 1), {P1, P2, F2, IMMU9}},
-    {"fclass.nm.unc",  f2, OpTa (5, 1), {P2, P1, F2, IMMU9}, PSEUDO},
+    {"fcmp.gt.s0",       f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F3, F2}, EMPTY},
+    {"fcmp.gt",                  f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F3, F2}, PSEUDO, 0, NULL},
+    {"fcmp.gt.s1",       f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P1, P2, F3, F2}, EMPTY},
+    {"fcmp.gt.s2",       f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P1, P2, F3, F2}, EMPTY},
+    {"fcmp.gt.s3",       f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P1, P2, F3, F2}, EMPTY},
+    {"fcmp.ge.s0",       f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F3, F2}, EMPTY},
+    {"fcmp.ge",                  f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F3, F2}, PSEUDO, 0, NULL},
+    {"fcmp.ge.s1",       f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P1, P2, F3, F2}, EMPTY},
+    {"fcmp.ge.s2",       f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P1, P2, F3, F2}, EMPTY},
+    {"fcmp.ge.s3",       f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P1, P2, F3, F2}, EMPTY},
+    {"fcmp.neq.s0",      f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.neq",         f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
+    {"fcmp.neq.s1",      f2, OpRaRbTaSf (4, 0, 0, 0, 1), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.neq.s2",      f2, OpRaRbTaSf (4, 0, 0, 0, 2), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.neq.s3",      f2, OpRaRbTaSf (4, 0, 0, 0, 3), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.nlt.s0",      f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.nlt",         f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
+    {"fcmp.nlt.s1",      f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.nlt.s2",      f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.nlt.s3",      f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.nle.s0",      f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.nle",         f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
+    {"fcmp.nle.s1",      f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.nle.s2",      f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.nle.s3",      f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.ngt.s0",      f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F3, F2}, EMPTY},
+    {"fcmp.ngt",         f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F3, F2}, PSEUDO, 0, NULL},
+    {"fcmp.ngt.s1",      f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P2, P1, F3, F2}, EMPTY},
+    {"fcmp.ngt.s2",      f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P2, P1, F3, F2}, EMPTY},
+    {"fcmp.ngt.s3",      f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P2, P1, F3, F2}, EMPTY},
+    {"fcmp.nge.s0",      f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F3, F2}, EMPTY},
+    {"fcmp.nge",         f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F3, F2}, PSEUDO, 0, NULL},
+    {"fcmp.nge.s1",      f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P2, P1, F3, F2}, EMPTY},
+    {"fcmp.nge.s2",      f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P2, P1, F3, F2}, EMPTY},
+    {"fcmp.nge.s3",      f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P2, P1, F3, F2}, EMPTY},
+    {"fcmp.ord.s0",      f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.ord",         f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
+    {"fcmp.ord.s1",      f2, OpRaRbTaSf (4, 1, 1, 0, 1), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.ord.s2",      f2, OpRaRbTaSf (4, 1, 1, 0, 2), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.ord.s3",      f2, OpRaRbTaSf (4, 1, 1, 0, 3), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.gt.unc.s0",   f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F3, F2}, EMPTY},
+    {"fcmp.gt.unc",      f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F3, F2}, PSEUDO, 0, NULL},
+    {"fcmp.gt.unc.s1",   f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P1, P2, F3, F2}, EMPTY},
+    {"fcmp.gt.unc.s2",   f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P1, P2, F3, F2}, EMPTY},
+    {"fcmp.gt.unc.s3",   f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P1, P2, F3, F2}, EMPTY},
+    {"fcmp.ge.unc.s0",   f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F3, F2}, EMPTY},
+    {"fcmp.ge.unc",      f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F3, F2}, PSEUDO, 0, NULL},
+    {"fcmp.ge.unc.s1",   f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P1, P2, F3, F2}, EMPTY},
+    {"fcmp.ge.unc.s2",   f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P1, P2, F3, F2}, EMPTY},
+    {"fcmp.ge.unc.s3",   f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P1, P2, F3, F2}, EMPTY},
+    {"fcmp.neq.unc.s0",          f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.neq.unc",     f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
+    {"fcmp.neq.unc.s1",          f2, OpRaRbTaSf (4, 0, 0, 1, 1), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.neq.unc.s2",          f2, OpRaRbTaSf (4, 0, 0, 1, 2), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.neq.unc.s3",          f2, OpRaRbTaSf (4, 0, 0, 1, 3), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.nlt.unc.s0",          f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.nlt.unc",     f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
+    {"fcmp.nlt.unc.s1",          f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.nlt.unc.s2",          f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.nlt.unc.s3",          f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.nle.unc.s0",          f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.nle.unc",     f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
+    {"fcmp.nle.unc.s1",          f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.nle.unc.s2",          f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.nle.unc.s3",          f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.ngt.unc.s0",          f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F3, F2}, EMPTY},
+    {"fcmp.ngt.unc",     f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F3, F2}, PSEUDO, 0, NULL},
+    {"fcmp.ngt.unc.s1",          f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P2, P1, F3, F2}, EMPTY},
+    {"fcmp.ngt.unc.s2",          f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P2, P1, F3, F2}, EMPTY},
+    {"fcmp.ngt.unc.s3",          f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P2, P1, F3, F2}, EMPTY},
+    {"fcmp.nge.unc.s0",          f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F3, F2}, EMPTY},
+    {"fcmp.nge.unc",     f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F3, F2}, PSEUDO, 0, NULL},
+    {"fcmp.nge.unc.s1",          f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P2, P1, F3, F2}, EMPTY},
+    {"fcmp.nge.unc.s2",          f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P2, P1, F3, F2}, EMPTY},
+    {"fcmp.nge.unc.s3",          f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P2, P1, F3, F2}, EMPTY},
+    {"fcmp.ord.unc.s0",          f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.ord.unc",     f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
+    {"fcmp.ord.unc.s1",   f2, OpRaRbTaSf (4, 1, 1, 1, 1), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.ord.unc.s2",   f2, OpRaRbTaSf (4, 1, 1, 1, 2), {P2, P1, F2, F3}, EMPTY},
+    {"fcmp.ord.unc.s3",   f2, OpRaRbTaSf (4, 1, 1, 1, 3), {P2, P1, F2, F3}, EMPTY},
+
+    {"fclass.m",       f2, OpTa (5, 0), {P1, P2, F2, IMMU9}, EMPTY},
+    {"fclass.nm",      f2, OpTa (5, 0), {P2, P1, F2, IMMU9}, PSEUDO, 0, NULL},
+    {"fclass.m.unc",   f2, OpTa (5, 1), {P1, P2, F2, IMMU9}, EMPTY},
+    {"fclass.nm.unc",  f2, OpTa (5, 1), {P2, P1, F2, IMMU9}, PSEUDO, 0, NULL},
 
     /* note: fnorm and fcvt.xuf have identical encodings! */
-    {"fnorm.s0",       f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO},
-    {"fnorm",          f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO},
-    {"fnorm.s1",       f, OpXaSfF2F4 (0x8, 0, 1, 0, 1), {F1, F3}, PSEUDO},
-    {"fnorm.s2",       f, OpXaSfF2F4 (0x8, 0, 2, 0, 1), {F1, F3}, PSEUDO},
-    {"fnorm.s3",       f, OpXaSfF2F4 (0x8, 0, 3, 0, 1), {F1, F3}, PSEUDO},
-    {"fnorm.s.s0",     f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO},
-    {"fnorm.s",                f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO},
-    {"fnorm.s.s1",     f, OpXaSfF2F4 (0x8, 1, 1, 0, 1), {F1, F3}, PSEUDO},
-    {"fnorm.s.s2",     f, OpXaSfF2F4 (0x8, 1, 2, 0, 1), {F1, F3}, PSEUDO},
-    {"fnorm.s.s3",     f, OpXaSfF2F4 (0x8, 1, 3, 0, 1), {F1, F3}, PSEUDO},
-    {"fcvt.xuf.s0",    f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO},
-    {"fcvt.xuf",       f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO},
-    {"fcvt.xuf.s1",    f, OpXaSfF2F4 (0x8, 0, 1, 0, 1), {F1, F3}, PSEUDO},
-    {"fcvt.xuf.s2",    f, OpXaSfF2F4 (0x8, 0, 2, 0, 1), {F1, F3}, PSEUDO},
-    {"fcvt.xuf.s3",    f, OpXaSfF2F4 (0x8, 0, 3, 0, 1), {F1, F3}, PSEUDO},
-    {"fcvt.xuf.s.s0",  f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO},
-    {"fcvt.xuf.s",     f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO},
-    {"fcvt.xuf.s.s1",  f, OpXaSfF2F4 (0x8, 1, 1, 0, 1), {F1, F3}, PSEUDO},
-    {"fcvt.xuf.s.s2",  f, OpXaSfF2F4 (0x8, 1, 2, 0, 1), {F1, F3}, PSEUDO},
-    {"fcvt.xuf.s.s3",  f, OpXaSfF2F4 (0x8, 1, 3, 0, 1), {F1, F3}, PSEUDO},
-    {"fadd.s0",                f, OpXaSfF4 (0x8, 0, 0, 1), {F1, F3, F2}, PSEUDO},
-    {"fadd",           f, OpXaSfF4 (0x8, 0, 0, 1), {F1, F3, F2}, PSEUDO},
-    {"fadd.s1",                f, OpXaSfF4 (0x8, 0, 1, 1), {F1, F3, F2}, PSEUDO},
-    {"fadd.s2",                f, OpXaSfF4 (0x8, 0, 2, 1), {F1, F3, F2}, PSEUDO},
-    {"fadd.s3",                f, OpXaSfF4 (0x8, 0, 3, 1), {F1, F3, F2}, PSEUDO},
-    {"fadd.s.s0",      f, OpXaSfF4 (0x8, 1, 0, 1), {F1, F3, F2}, PSEUDO},
-    {"fadd.s",         f, OpXaSfF4 (0x8, 1, 0, 1), {F1, F3, F2}, PSEUDO},
-    {"fadd.s.s1",      f, OpXaSfF4 (0x8, 1, 1, 1), {F1, F3, F2}, PSEUDO},
-    {"fadd.s.s2",      f, OpXaSfF4 (0x8, 1, 2, 1), {F1, F3, F2}, PSEUDO},
-    {"fadd.s.s3",      f, OpXaSfF4 (0x8, 1, 3, 1), {F1, F3, F2}, PSEUDO},
-    {"fmpy.s0",                f, OpXaSfF2 (0x8, 0, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"fmpy",           f, OpXaSfF2 (0x8, 0, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"fmpy.s1",                f, OpXaSfF2 (0x8, 0, 1, 0), {F1, F3, F4}, PSEUDO},
-    {"fmpy.s2",                f, OpXaSfF2 (0x8, 0, 2, 0), {F1, F3, F4}, PSEUDO},
-    {"fmpy.s3",                f, OpXaSfF2 (0x8, 0, 3, 0), {F1, F3, F4}, PSEUDO},
-    {"fmpy.s.s0",      f, OpXaSfF2 (0x8, 1, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"fmpy.s",         f, OpXaSfF2 (0x8, 1, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"fmpy.s.s1",      f, OpXaSfF2 (0x8, 1, 1, 0), {F1, F3, F4}, PSEUDO},
-    {"fmpy.s.s2",      f, OpXaSfF2 (0x8, 1, 2, 0), {F1, F3, F4}, PSEUDO},
-    {"fmpy.s.s3",      f, OpXaSfF2 (0x8, 1, 3, 0), {F1, F3, F4}, PSEUDO},
-    {"fma.s0",         f, OpXaSf (0x8, 0, 0), {F1, F3, F4, F2}},
-    {"fma",            f, OpXaSf (0x8, 0, 0), {F1, F3, F4, F2}, PSEUDO},
-    {"fma.s1",         f, OpXaSf (0x8, 0, 1), {F1, F3, F4, F2}},
-    {"fma.s2",         f, OpXaSf (0x8, 0, 2), {F1, F3, F4, F2}},
-    {"fma.s3",         f, OpXaSf (0x8, 0, 3), {F1, F3, F4, F2}},
-    {"fma.s.s0",       f, OpXaSf (0x8, 1, 0), {F1, F3, F4, F2}},
-    {"fma.s",          f, OpXaSf (0x8, 1, 0), {F1, F3, F4, F2}, PSEUDO},
-    {"fma.s.s1",       f, OpXaSf (0x8, 1, 1), {F1, F3, F4, F2}},
-    {"fma.s.s2",       f, OpXaSf (0x8, 1, 2), {F1, F3, F4, F2}},
-    {"fma.s.s3",       f, OpXaSf (0x8, 1, 3), {F1, F3, F4, F2}},
-
-    {"fnorm.d.s0",     f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO},
-    {"fnorm.d",                f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO},
-    {"fnorm.d.s1",     f, OpXaSfF2F4 (0x9, 0, 1, 0, 1), {F1, F3}, PSEUDO},
-    {"fnorm.d.s2",     f, OpXaSfF2F4 (0x9, 0, 2, 0, 1), {F1, F3}, PSEUDO},
-    {"fnorm.d.s3",     f, OpXaSfF2F4 (0x9, 0, 3, 0, 1), {F1, F3}, PSEUDO},
-    {"fcvt.xuf.d.s0",  f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO},
-    {"fcvt.xuf.d",     f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO},
-    {"fcvt.xuf.d.s1",  f, OpXaSfF2F4 (0x9, 0, 1, 0, 1), {F1, F3}, PSEUDO},
-    {"fcvt.xuf.d.s2",  f, OpXaSfF2F4 (0x9, 0, 2, 0, 1), {F1, F3}, PSEUDO},
-    {"fcvt.xuf.d.s3",  f, OpXaSfF2F4 (0x9, 0, 3, 0, 1), {F1, F3}, PSEUDO},
-    {"fadd.d.s0",      f, OpXaSfF4 (0x9, 0, 0, 1), {F1, F3, F2}, PSEUDO},
-    {"fadd.d",         f, OpXaSfF4 (0x9, 0, 0, 1), {F1, F3, F2}, PSEUDO},
-    {"fadd.d.s1",      f, OpXaSfF4 (0x9, 0, 1, 1), {F1, F3, F2}, PSEUDO},
-    {"fadd.d.s2",      f, OpXaSfF4 (0x9, 0, 2, 1), {F1, F3, F2}, PSEUDO},
-    {"fadd.d.s3",      f, OpXaSfF4 (0x9, 0, 3, 1), {F1, F3, F2}, PSEUDO},
-    {"fmpy.d.s0",      f, OpXaSfF2 (0x9, 0, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"fmpy.d",         f, OpXaSfF2 (0x9, 0, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"fmpy.d.s1",      f, OpXaSfF2 (0x9, 0, 1, 0), {F1, F3, F4}, PSEUDO},
-    {"fmpy.d.s2",      f, OpXaSfF2 (0x9, 0, 2, 0), {F1, F3, F4}, PSEUDO},
-    {"fmpy.d.s3",      f, OpXaSfF2 (0x9, 0, 3, 0), {F1, F3, F4}, PSEUDO},
-    {"fma.d.s0",       f, OpXaSf (0x9, 0, 0), {F1, F3, F4, F2}},
-    {"fma.d",          f, OpXaSf (0x9, 0, 0), {F1, F3, F4, F2}, PSEUDO},
-    {"fma.d.s1",       f, OpXaSf (0x9, 0, 1), {F1, F3, F4, F2}},
-    {"fma.d.s2",       f, OpXaSf (0x9, 0, 2), {F1, F3, F4, F2}},
-    {"fma.d.s3",       f, OpXaSf (0x9, 0, 3), {F1, F3, F4, F2}},
-
-    {"fpmpy.s0",       f, OpXaSfF2 (0x9, 1, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"fpmpy",          f, OpXaSfF2 (0x9, 1, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"fpmpy.s1",       f, OpXaSfF2 (0x9, 1, 1, 0), {F1, F3, F4}, PSEUDO},
-    {"fpmpy.s2",       f, OpXaSfF2 (0x9, 1, 2, 0), {F1, F3, F4}, PSEUDO},
-    {"fpmpy.s3",       f, OpXaSfF2 (0x9, 1, 3, 0), {F1, F3, F4}, PSEUDO},
-    {"fpma.s0",                f, OpXaSf   (0x9, 1, 0), {F1, F3, F4, F2}},
-    {"fpma",           f, OpXaSf   (0x9, 1, 0), {F1, F3, F4, F2}, PSEUDO},
-    {"fpma.s1",                f, OpXaSf   (0x9, 1, 1), {F1, F3, F4, F2}},
-    {"fpma.s2",                f, OpXaSf   (0x9, 1, 2), {F1, F3, F4, F2}},
-    {"fpma.s3",                f, OpXaSf   (0x9, 1, 3), {F1, F3, F4, F2}},
-
-    {"fsub.s0",                f, OpXaSfF4 (0xa, 0, 0, 1), {F1, F3, F2}, PSEUDO},
-    {"fsub",           f, OpXaSfF4 (0xa, 0, 0, 1), {F1, F3, F2}, PSEUDO},
-    {"fsub.s1",                f, OpXaSfF4 (0xa, 0, 1, 1), {F1, F3, F2}, PSEUDO},
-    {"fsub.s2",                f, OpXaSfF4 (0xa, 0, 2, 1), {F1, F3, F2}, PSEUDO},
-    {"fsub.s3",                f, OpXaSfF4 (0xa, 0, 3, 1), {F1, F3, F2}, PSEUDO},
-    {"fsub.s.s0",      f, OpXaSfF4 (0xa, 1, 0, 1), {F1, F3, F2}, PSEUDO},
-    {"fsub.s",         f, OpXaSfF4 (0xa, 1, 0, 1), {F1, F3, F2}, PSEUDO},
-    {"fsub.s.s1",      f, OpXaSfF4 (0xa, 1, 1, 1), {F1, F3, F2}, PSEUDO},
-    {"fsub.s.s2",      f, OpXaSfF4 (0xa, 1, 2, 1), {F1, F3, F2}, PSEUDO},
-    {"fsub.s.s3",      f, OpXaSfF4 (0xa, 1, 3, 1), {F1, F3, F2}, PSEUDO},
-    {"fms.s0",         f, OpXaSf   (0xa, 0, 0), {F1, F3, F4, F2}},
-    {"fms",            f, OpXaSf   (0xa, 0, 0), {F1, F3, F4, F2}, PSEUDO},
-    {"fms.s1",         f, OpXaSf   (0xa, 0, 1), {F1, F3, F4, F2}},
-    {"fms.s2",         f, OpXaSf   (0xa, 0, 2), {F1, F3, F4, F2}},
-    {"fms.s3",         f, OpXaSf   (0xa, 0, 3), {F1, F3, F4, F2}},
-    {"fms.s.s0",       f, OpXaSf   (0xa, 1, 0), {F1, F3, F4, F2}},
-    {"fms.s",          f, OpXaSf   (0xa, 1, 0), {F1, F3, F4, F2}, PSEUDO},
-    {"fms.s.s1",       f, OpXaSf   (0xa, 1, 1), {F1, F3, F4, F2}},
-    {"fms.s.s2",       f, OpXaSf   (0xa, 1, 2), {F1, F3, F4, F2}},
-    {"fms.s.s3",       f, OpXaSf   (0xa, 1, 3), {F1, F3, F4, F2}},
-    {"fsub.d.s0",      f, OpXaSfF4 (0xb, 0, 0, 1), {F1, F3, F2}, PSEUDO},
-    {"fsub.d",         f, OpXaSfF4 (0xb, 0, 0, 1), {F1, F3, F2}, PSEUDO},
-    {"fsub.d.s1",      f, OpXaSfF4 (0xb, 0, 1, 1), {F1, F3, F2}, PSEUDO},
-    {"fsub.d.s2",      f, OpXaSfF4 (0xb, 0, 2, 1), {F1, F3, F2}, PSEUDO},
-    {"fsub.d.s3",      f, OpXaSfF4 (0xb, 0, 3, 1), {F1, F3, F2}, PSEUDO},
-    {"fms.d.s0",       f, OpXaSf   (0xb, 0, 0), {F1, F3, F4, F2}},
-    {"fms.d",          f, OpXaSf   (0xb, 0, 0), {F1, F3, F4, F2}, PSEUDO},
-    {"fms.d.s1",       f, OpXaSf   (0xb, 0, 1), {F1, F3, F4, F2}},
-    {"fms.d.s2",       f, OpXaSf   (0xb, 0, 2), {F1, F3, F4, F2}},
-    {"fms.d.s3",       f, OpXaSf   (0xb, 0, 3), {F1, F3, F4, F2}},
-
-    {"fpms.s0",                f, OpXaSf (0xb, 1, 0), {F1, F3, F4, F2}},
-    {"fpms",           f, OpXaSf (0xb, 1, 0), {F1, F3, F4, F2}, PSEUDO},
-    {"fpms.s1",                f, OpXaSf (0xb, 1, 1), {F1, F3, F4, F2}},
-    {"fpms.s2",                f, OpXaSf (0xb, 1, 2), {F1, F3, F4, F2}},
-    {"fpms.s3",                f, OpXaSf (0xb, 1, 3), {F1, F3, F4, F2}},
-
-    {"fnmpy.s0",       f, OpXaSfF2 (0xc, 0, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"fnmpy",          f, OpXaSfF2 (0xc, 0, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"fnmpy.s1",       f, OpXaSfF2 (0xc, 0, 1, 0), {F1, F3, F4}, PSEUDO},
-    {"fnmpy.s2",       f, OpXaSfF2 (0xc, 0, 2, 0), {F1, F3, F4}, PSEUDO},
-    {"fnmpy.s3",       f, OpXaSfF2 (0xc, 0, 3, 0), {F1, F3, F4}, PSEUDO},
-    {"fnmpy.s.s0",     f, OpXaSfF2 (0xc, 1, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"fnmpy.s",                f, OpXaSfF2 (0xc, 1, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"fnmpy.s.s1",     f, OpXaSfF2 (0xc, 1, 1, 0), {F1, F3, F4}, PSEUDO},
-    {"fnmpy.s.s2",     f, OpXaSfF2 (0xc, 1, 2, 0), {F1, F3, F4}, PSEUDO},
-    {"fnmpy.s.s3",     f, OpXaSfF2 (0xc, 1, 3, 0), {F1, F3, F4}, PSEUDO},
-    {"fnma.s0",                f, OpXaSf (0xc, 0, 0), {F1, F3, F4, F2}},
-    {"fnma",           f, OpXaSf (0xc, 0, 0), {F1, F3, F4, F2}, PSEUDO},
-    {"fnma.s1",                f, OpXaSf (0xc, 0, 1), {F1, F3, F4, F2}},
-    {"fnma.s2",                f, OpXaSf (0xc, 0, 2), {F1, F3, F4, F2}},
-    {"fnma.s3",                f, OpXaSf (0xc, 0, 3), {F1, F3, F4, F2}},
-    {"fnma.s.s0",      f, OpXaSf (0xc, 1, 0), {F1, F3, F4, F2}},
-    {"fnma.s",         f, OpXaSf (0xc, 1, 0), {F1, F3, F4, F2}, PSEUDO},
-    {"fnma.s.s1",      f, OpXaSf (0xc, 1, 1), {F1, F3, F4, F2}},
-    {"fnma.s.s2",      f, OpXaSf (0xc, 1, 2), {F1, F3, F4, F2}},
-    {"fnma.s.s3",      f, OpXaSf (0xc, 1, 3), {F1, F3, F4, F2}},
-    {"fnmpy.d.s0",     f, OpXaSfF2 (0xd, 0, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"fnmpy.d",                f, OpXaSfF2 (0xd, 0, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"fnmpy.d.s1",     f, OpXaSfF2 (0xd, 0, 1, 0), {F1, F3, F4}, PSEUDO},
-    {"fnmpy.d.s2",     f, OpXaSfF2 (0xd, 0, 2, 0), {F1, F3, F4}, PSEUDO},
-    {"fnmpy.d.s3",     f, OpXaSfF2 (0xd, 0, 3, 0), {F1, F3, F4}, PSEUDO},
-    {"fnma.d.s0",      f, OpXaSf (0xd, 0, 0), {F1, F3, F4, F2}},
-    {"fnma.d",         f, OpXaSf (0xd, 0, 0), {F1, F3, F4, F2}, PSEUDO},
-    {"fnma.d.s1",      f, OpXaSf (0xd, 0, 1), {F1, F3, F4, F2}},
-    {"fnma.d.s2",      f, OpXaSf (0xd, 0, 2), {F1, F3, F4, F2}},
-    {"fnma.d.s3",      f, OpXaSf (0xd, 0, 3), {F1, F3, F4, F2}},
-
-    {"fpnmpy.s0",      f, OpXaSfF2 (0xd, 1, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"fpnmpy",         f, OpXaSfF2 (0xd, 1, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"fpnmpy.s1",      f, OpXaSfF2 (0xd, 1, 1, 0), {F1, F3, F4}, PSEUDO},
-    {"fpnmpy.s2",      f, OpXaSfF2 (0xd, 1, 2, 0), {F1, F3, F4}, PSEUDO},
-    {"fpnmpy.s3",      f, OpXaSfF2 (0xd, 1, 3, 0), {F1, F3, F4}, PSEUDO},
-    {"fpnma.s0",       f, OpXaSf   (0xd, 1, 0), {F1, F3, F4, F2}},
-    {"fpnma",          f, OpXaSf   (0xd, 1, 0), {F1, F3, F4, F2}, PSEUDO},
-    {"fpnma.s1",       f, OpXaSf   (0xd, 1, 1), {F1, F3, F4, F2}},
-    {"fpnma.s2",       f, OpXaSf   (0xd, 1, 2), {F1, F3, F4, F2}},
-    {"fpnma.s3",       f, OpXaSf   (0xd, 1, 3), {F1, F3, F4, F2}},
-
-    {"xmpy.l",         f, OpXaX2F2 (0xe, 1, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"xmpy.lu",                f, OpXaX2F2 (0xe, 1, 0, 0), {F1, F3, F4}, PSEUDO},
-    {"xmpy.h",         f, OpXaX2F2 (0xe, 1, 3, 0), {F1, F3, F4}, PSEUDO},
-    {"xmpy.hu",                f, OpXaX2F2 (0xe, 1, 2, 0), {F1, F3, F4}, PSEUDO},
-    {"xma.l",          f, OpXaX2 (0xe, 1, 0), {F1, F3, F4, F2}},
-    {"xma.lu",         f, OpXaX2 (0xe, 1, 0), {F1, F3, F4, F2}, PSEUDO},
-    {"xma.h",          f, OpXaX2 (0xe, 1, 3), {F1, F3, F4, F2}},
-    {"xma.hu",         f, OpXaX2 (0xe, 1, 2), {F1, F3, F4, F2}},
-
-    {"fselect",                f, OpXa (0xe, 0), {F1, F3, F4, F2}},
-
-    {0}
+    {"fnorm.s0",       f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fnorm",          f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fnorm.s1",       f, OpXaSfF2F4 (0x8, 0, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fnorm.s2",       f, OpXaSfF2F4 (0x8, 0, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fnorm.s3",       f, OpXaSfF2F4 (0x8, 0, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fnorm.s.s0",     f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fnorm.s",                f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fnorm.s.s1",     f, OpXaSfF2F4 (0x8, 1, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fnorm.s.s2",     f, OpXaSfF2F4 (0x8, 1, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fnorm.s.s3",     f, OpXaSfF2F4 (0x8, 1, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fcvt.xuf.s0",    f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fcvt.xuf",       f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fcvt.xuf.s1",    f, OpXaSfF2F4 (0x8, 0, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fcvt.xuf.s2",    f, OpXaSfF2F4 (0x8, 0, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fcvt.xuf.s3",    f, OpXaSfF2F4 (0x8, 0, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fcvt.xuf.s.s0",  f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fcvt.xuf.s",     f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fcvt.xuf.s.s1",  f, OpXaSfF2F4 (0x8, 1, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fcvt.xuf.s.s2",  f, OpXaSfF2F4 (0x8, 1, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fcvt.xuf.s.s3",  f, OpXaSfF2F4 (0x8, 1, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fadd.s0",                f, OpXaSfF4 (0x8, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fadd",           f, OpXaSfF4 (0x8, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fadd.s1",                f, OpXaSfF4 (0x8, 0, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fadd.s2",                f, OpXaSfF4 (0x8, 0, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fadd.s3",                f, OpXaSfF4 (0x8, 0, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fadd.s.s0",      f, OpXaSfF4 (0x8, 1, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fadd.s",         f, OpXaSfF4 (0x8, 1, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fadd.s.s1",      f, OpXaSfF4 (0x8, 1, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fadd.s.s2",      f, OpXaSfF4 (0x8, 1, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fadd.s.s3",      f, OpXaSfF4 (0x8, 1, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fmpy.s0",                f, OpXaSfF2 (0x8, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fmpy",           f, OpXaSfF2 (0x8, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fmpy.s1",                f, OpXaSfF2 (0x8, 0, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fmpy.s2",                f, OpXaSfF2 (0x8, 0, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fmpy.s3",                f, OpXaSfF2 (0x8, 0, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fmpy.s.s0",      f, OpXaSfF2 (0x8, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fmpy.s",         f, OpXaSfF2 (0x8, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fmpy.s.s1",      f, OpXaSfF2 (0x8, 1, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fmpy.s.s2",      f, OpXaSfF2 (0x8, 1, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fmpy.s.s3",      f, OpXaSfF2 (0x8, 1, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fma.s0",         f, OpXaSf (0x8, 0, 0), {F1, F3, F4, F2}, EMPTY},
+    {"fma",            f, OpXaSf (0x8, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
+    {"fma.s1",         f, OpXaSf (0x8, 0, 1), {F1, F3, F4, F2}, EMPTY},
+    {"fma.s2",         f, OpXaSf (0x8, 0, 2), {F1, F3, F4, F2}, EMPTY},
+    {"fma.s3",         f, OpXaSf (0x8, 0, 3), {F1, F3, F4, F2}, EMPTY},
+    {"fma.s.s0",       f, OpXaSf (0x8, 1, 0), {F1, F3, F4, F2}, EMPTY},
+    {"fma.s",          f, OpXaSf (0x8, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
+    {"fma.s.s1",       f, OpXaSf (0x8, 1, 1), {F1, F3, F4, F2}, EMPTY},
+    {"fma.s.s2",       f, OpXaSf (0x8, 1, 2), {F1, F3, F4, F2}, EMPTY},
+    {"fma.s.s3",       f, OpXaSf (0x8, 1, 3), {F1, F3, F4, F2}, EMPTY},
+
+    {"fnorm.d.s0",     f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fnorm.d",                f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fnorm.d.s1",     f, OpXaSfF2F4 (0x9, 0, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fnorm.d.s2",     f, OpXaSfF2F4 (0x9, 0, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fnorm.d.s3",     f, OpXaSfF2F4 (0x9, 0, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fcvt.xuf.d.s0",  f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fcvt.xuf.d",     f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fcvt.xuf.d.s1",  f, OpXaSfF2F4 (0x9, 0, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fcvt.xuf.d.s2",  f, OpXaSfF2F4 (0x9, 0, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fcvt.xuf.d.s3",  f, OpXaSfF2F4 (0x9, 0, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
+    {"fadd.d.s0",      f, OpXaSfF4 (0x9, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fadd.d",         f, OpXaSfF4 (0x9, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fadd.d.s1",      f, OpXaSfF4 (0x9, 0, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fadd.d.s2",      f, OpXaSfF4 (0x9, 0, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fadd.d.s3",      f, OpXaSfF4 (0x9, 0, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fmpy.d.s0",      f, OpXaSfF2 (0x9, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fmpy.d",         f, OpXaSfF2 (0x9, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fmpy.d.s1",      f, OpXaSfF2 (0x9, 0, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fmpy.d.s2",      f, OpXaSfF2 (0x9, 0, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fmpy.d.s3",      f, OpXaSfF2 (0x9, 0, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fma.d.s0",       f, OpXaSf (0x9, 0, 0), {F1, F3, F4, F2}, EMPTY},
+    {"fma.d",          f, OpXaSf (0x9, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
+    {"fma.d.s1",       f, OpXaSf (0x9, 0, 1), {F1, F3, F4, F2}, EMPTY},
+    {"fma.d.s2",       f, OpXaSf (0x9, 0, 2), {F1, F3, F4, F2}, EMPTY},
+    {"fma.d.s3",       f, OpXaSf (0x9, 0, 3), {F1, F3, F4, F2}, EMPTY},
+
+    {"fpmpy.s0",       f, OpXaSfF2 (0x9, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fpmpy",          f, OpXaSfF2 (0x9, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fpmpy.s1",       f, OpXaSfF2 (0x9, 1, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fpmpy.s2",       f, OpXaSfF2 (0x9, 1, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fpmpy.s3",       f, OpXaSfF2 (0x9, 1, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fpma.s0",                f, OpXaSf   (0x9, 1, 0), {F1, F3, F4, F2}, EMPTY},
+    {"fpma",           f, OpXaSf   (0x9, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
+    {"fpma.s1",                f, OpXaSf   (0x9, 1, 1), {F1, F3, F4, F2}, EMPTY},
+    {"fpma.s2",                f, OpXaSf   (0x9, 1, 2), {F1, F3, F4, F2}, EMPTY},
+    {"fpma.s3",                f, OpXaSf   (0x9, 1, 3), {F1, F3, F4, F2}, EMPTY},
+
+    {"fsub.s0",                f, OpXaSfF4 (0xa, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fsub",           f, OpXaSfF4 (0xa, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fsub.s1",                f, OpXaSfF4 (0xa, 0, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fsub.s2",                f, OpXaSfF4 (0xa, 0, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fsub.s3",                f, OpXaSfF4 (0xa, 0, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fsub.s.s0",      f, OpXaSfF4 (0xa, 1, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fsub.s",         f, OpXaSfF4 (0xa, 1, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fsub.s.s1",      f, OpXaSfF4 (0xa, 1, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fsub.s.s2",      f, OpXaSfF4 (0xa, 1, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fsub.s.s3",      f, OpXaSfF4 (0xa, 1, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fms.s0",         f, OpXaSf   (0xa, 0, 0), {F1, F3, F4, F2}, EMPTY},
+    {"fms",            f, OpXaSf   (0xa, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
+    {"fms.s1",         f, OpXaSf   (0xa, 0, 1), {F1, F3, F4, F2}, EMPTY},
+    {"fms.s2",         f, OpXaSf   (0xa, 0, 2), {F1, F3, F4, F2}, EMPTY},
+    {"fms.s3",         f, OpXaSf   (0xa, 0, 3), {F1, F3, F4, F2}, EMPTY},
+    {"fms.s.s0",       f, OpXaSf   (0xa, 1, 0), {F1, F3, F4, F2}, EMPTY},
+    {"fms.s",          f, OpXaSf   (0xa, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
+    {"fms.s.s1",       f, OpXaSf   (0xa, 1, 1), {F1, F3, F4, F2}, EMPTY},
+    {"fms.s.s2",       f, OpXaSf   (0xa, 1, 2), {F1, F3, F4, F2}, EMPTY},
+    {"fms.s.s3",       f, OpXaSf   (0xa, 1, 3), {F1, F3, F4, F2}, EMPTY},
+    {"fsub.d.s0",      f, OpXaSfF4 (0xb, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fsub.d",         f, OpXaSfF4 (0xb, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fsub.d.s1",      f, OpXaSfF4 (0xb, 0, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fsub.d.s2",      f, OpXaSfF4 (0xb, 0, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fsub.d.s3",      f, OpXaSfF4 (0xb, 0, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
+    {"fms.d.s0",       f, OpXaSf   (0xb, 0, 0), {F1, F3, F4, F2}, EMPTY},
+    {"fms.d",          f, OpXaSf   (0xb, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
+    {"fms.d.s1",       f, OpXaSf   (0xb, 0, 1), {F1, F3, F4, F2}, EMPTY},
+    {"fms.d.s2",       f, OpXaSf   (0xb, 0, 2), {F1, F3, F4, F2}, EMPTY},
+    {"fms.d.s3",       f, OpXaSf   (0xb, 0, 3), {F1, F3, F4, F2}, EMPTY},
+
+    {"fpms.s0",                f, OpXaSf (0xb, 1, 0), {F1, F3, F4, F2}, EMPTY},
+    {"fpms",           f, OpXaSf (0xb, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
+    {"fpms.s1",                f, OpXaSf (0xb, 1, 1), {F1, F3, F4, F2}, EMPTY},
+    {"fpms.s2",                f, OpXaSf (0xb, 1, 2), {F1, F3, F4, F2}, EMPTY},
+    {"fpms.s3",                f, OpXaSf (0xb, 1, 3), {F1, F3, F4, F2}, EMPTY},
+
+    {"fnmpy.s0",       f, OpXaSfF2 (0xc, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fnmpy",          f, OpXaSfF2 (0xc, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fnmpy.s1",       f, OpXaSfF2 (0xc, 0, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fnmpy.s2",       f, OpXaSfF2 (0xc, 0, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fnmpy.s3",       f, OpXaSfF2 (0xc, 0, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fnmpy.s.s0",     f, OpXaSfF2 (0xc, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fnmpy.s",                f, OpXaSfF2 (0xc, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fnmpy.s.s1",     f, OpXaSfF2 (0xc, 1, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fnmpy.s.s2",     f, OpXaSfF2 (0xc, 1, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fnmpy.s.s3",     f, OpXaSfF2 (0xc, 1, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fnma.s0",                f, OpXaSf (0xc, 0, 0), {F1, F3, F4, F2}, EMPTY},
+    {"fnma",           f, OpXaSf (0xc, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
+    {"fnma.s1",                f, OpXaSf (0xc, 0, 1), {F1, F3, F4, F2}, EMPTY},
+    {"fnma.s2",                f, OpXaSf (0xc, 0, 2), {F1, F3, F4, F2}, EMPTY},
+    {"fnma.s3",                f, OpXaSf (0xc, 0, 3), {F1, F3, F4, F2}, EMPTY},
+    {"fnma.s.s0",      f, OpXaSf (0xc, 1, 0), {F1, F3, F4, F2}, EMPTY},
+    {"fnma.s",         f, OpXaSf (0xc, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
+    {"fnma.s.s1",      f, OpXaSf (0xc, 1, 1), {F1, F3, F4, F2}, EMPTY},
+    {"fnma.s.s2",      f, OpXaSf (0xc, 1, 2), {F1, F3, F4, F2}, EMPTY},
+    {"fnma.s.s3",      f, OpXaSf (0xc, 1, 3), {F1, F3, F4, F2}, EMPTY},
+    {"fnmpy.d.s0",     f, OpXaSfF2 (0xd, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fnmpy.d",                f, OpXaSfF2 (0xd, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fnmpy.d.s1",     f, OpXaSfF2 (0xd, 0, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fnmpy.d.s2",     f, OpXaSfF2 (0xd, 0, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fnmpy.d.s3",     f, OpXaSfF2 (0xd, 0, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fnma.d.s0",      f, OpXaSf (0xd, 0, 0), {F1, F3, F4, F2}, EMPTY},
+    {"fnma.d",         f, OpXaSf (0xd, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
+    {"fnma.d.s1",      f, OpXaSf (0xd, 0, 1), {F1, F3, F4, F2}, EMPTY},
+    {"fnma.d.s2",      f, OpXaSf (0xd, 0, 2), {F1, F3, F4, F2}, EMPTY},
+    {"fnma.d.s3",      f, OpXaSf (0xd, 0, 3), {F1, F3, F4, F2}, EMPTY},
+
+    {"fpnmpy.s0",      f, OpXaSfF2 (0xd, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fpnmpy",         f, OpXaSfF2 (0xd, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fpnmpy.s1",      f, OpXaSfF2 (0xd, 1, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fpnmpy.s2",      f, OpXaSfF2 (0xd, 1, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fpnmpy.s3",      f, OpXaSfF2 (0xd, 1, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"fpnma.s0",       f, OpXaSf   (0xd, 1, 0), {F1, F3, F4, F2}, EMPTY},
+    {"fpnma",          f, OpXaSf   (0xd, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
+    {"fpnma.s1",       f, OpXaSf   (0xd, 1, 1), {F1, F3, F4, F2}, EMPTY},
+    {"fpnma.s2",       f, OpXaSf   (0xd, 1, 2), {F1, F3, F4, F2}, EMPTY},
+    {"fpnma.s3",       f, OpXaSf   (0xd, 1, 3), {F1, F3, F4, F2}, EMPTY},
+
+    {"xmpy.l",         f, OpXaX2F2 (0xe, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"xmpy.lu",                f, OpXaX2F2 (0xe, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"xmpy.h",         f, OpXaX2F2 (0xe, 1, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"xmpy.hu",                f, OpXaX2F2 (0xe, 1, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
+    {"xma.l",          f, OpXaX2 (0xe, 1, 0), {F1, F3, F4, F2}, EMPTY},
+    {"xma.lu",         f, OpXaX2 (0xe, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
+    {"xma.h",          f, OpXaX2 (0xe, 1, 3), {F1, F3, F4, F2}, EMPTY},
+    {"xma.hu",         f, OpXaX2 (0xe, 1, 2), {F1, F3, F4, F2}, EMPTY},
+
+    {"fselect",                f, OpXa (0xe, 0), {F1, F3, F4, F2}, EMPTY},
+
+    {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
   };
 
 #undef f0
@@ -644,3 +648,4 @@ struct ia64_opcode ia64_opcodes_f[] =
 #undef OpXbX6
 #undef OpXbX6F2
 #undef OpXbX6Sf
+#undef EMPTY
index 899e65181ce3237239cad5acf4d247c1558cd8bd..8de169611eff4ef07e017c127878a4bbec0dabe0 100644 (file)
@@ -1,5 +1,5 @@
 /* ia64-opc-i.c -- IA-64 `I' opcode table.
-   Copyright 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
 
    This file is part of GDB, GAS, and the GNU binutils.
      (bOp (a) | bX3 (b) | bXb (c) | bIh (d) | bWh (e) | bTag13 (f)), \
      (mOp | mX3 | mXb | mIh | mWh | mTag13)
 
+/* Used to initialise unused fields in ia64_opcode struct,
+   in order to stop gcc from complaining.  */
+#define EMPTY 0,0,NULL
+
 struct ia64_opcode ia64_opcodes_i[] =
   {
-    /* I-type instruction encodings (sorted according to major opcode) */
+    /* I-type instruction encodings (sorted according to major opcode) */
 
-    {"break.i",        I0, OpX3X6 (0, 0, 0x00), {IMMU21}, X_IN_MLX},
-    {"nop.i",  I0, OpX3X6 (0, 0, 0x01), {IMMU21}, X_IN_MLX},
-    {"chk.s.i",        I0, OpX3 (0, 1), {R2, TGT25b}},
+    {"break.i",        I0, OpX3X6 (0, 0, 0x00), {IMMU21}, X_IN_MLX, 0, NULL},
+    {"nop.i",  I0, OpX3X6 (0, 0, 0x01), {IMMU21}, X_IN_MLX, 0, NULL},
+    {"chk.s.i",        I0, OpX3 (0, 1), {R2, TGT25b}, EMPTY},
 
-    {"mov", I, OpX3XbIhWhTag13 (0, 7, 0, 0, 1, 0), {B1, R2}, PSEUDO},
+    {"mov", I, OpX3XbIhWhTag13 (0, 7, 0, 0, 1, 0), {B1, R2}, PSEUDO, 0, NULL},
 #define MOV(a,b,c,d) \
-    I, OpX3XbIhWh (0, a, b, c, d), {B1, R2, TAG13b}
+    I, OpX3XbIhWh (0, a, b, c, d), {B1, R2, TAG13b}, EMPTY
     {"mov.sptk",               MOV (7, 0, 0, 0)},
     {"mov.sptk.imp",           MOV (7, 0, 1, 0)},
     {"mov",                    MOV (7, 0, 0, 1)},
@@ -117,46 +121,46 @@ struct ia64_opcode ia64_opcodes_i[] =
     {"mov.ret.dptk",           MOV (7, 1, 0, 2)},
     {"mov.ret.dptk.imp",       MOV (7, 1, 1, 2)},
 #undef MOV
-    {"mov",    I, OpX3X6 (0, 0, 0x31), {R1, B2}},
-    {"mov",    I, OpX3 (0, 3), {PR, R2, IMM17}},
-    {"mov",    I, OpX3 (0, 2), {PR_ROT, IMM44}},
-    {"mov",    I, OpX3X6 (0, 0, 0x30), {R1, IP}},
-    {"mov",    I, OpX3X6 (0, 0, 0x33), {R1, PR}},
-    {"mov.i",  I, OpX3X6 (0, 0, 0x2a), {AR3, R2}},
-    {"mov.i",  I, OpX3X6 (0, 0, 0x0a), {AR3, IMM8}},
-    {"mov.i",  I, OpX3X6 (0, 0, 0x32), {R1, AR3}},
-    {"zxt1",   I, OpX3X6 (0, 0, 0x10), {R1, R3}},
-    {"zxt2",   I, OpX3X6 (0, 0, 0x11), {R1, R3}},
-    {"zxt4",   I, OpX3X6 (0, 0, 0x12), {R1, R3}},
-    {"sxt1",   I, OpX3X6 (0, 0, 0x14), {R1, R3}},
-    {"sxt2",   I, OpX3X6 (0, 0, 0x15), {R1, R3}},
-    {"sxt4",   I, OpX3X6 (0, 0, 0x16), {R1, R3}},
-    {"czx1.l", I, OpX3X6 (0, 0, 0x18), {R1, R3}},
-    {"czx2.l", I, OpX3X6 (0, 0, 0x19), {R1, R3}},
-    {"czx1.r", I, OpX3X6 (0, 0, 0x1c), {R1, R3}},
-    {"czx2.r", I, OpX3X6 (0, 0, 0x1d), {R1, R3}},
+    {"mov",    I, OpX3X6 (0, 0, 0x31), {R1, B2}, EMPTY},
+    {"mov",    I, OpX3 (0, 3), {PR, R2, IMM17}, EMPTY},
+    {"mov",    I, OpX3 (0, 2), {PR_ROT, IMM44}, EMPTY},
+    {"mov",    I, OpX3X6 (0, 0, 0x30), {R1, IP}, EMPTY},
+    {"mov",    I, OpX3X6 (0, 0, 0x33), {R1, PR}, EMPTY},
+    {"mov.i",  I, OpX3X6 (0, 0, 0x2a), {AR3, R2}, EMPTY},
+    {"mov.i",  I, OpX3X6 (0, 0, 0x0a), {AR3, IMM8}, EMPTY},
+    {"mov.i",  I, OpX3X6 (0, 0, 0x32), {R1, AR3}, EMPTY},
+    {"zxt1",   I, OpX3X6 (0, 0, 0x10), {R1, R3}, EMPTY},
+    {"zxt2",   I, OpX3X6 (0, 0, 0x11), {R1, R3}, EMPTY},
+    {"zxt4",   I, OpX3X6 (0, 0, 0x12), {R1, R3}, EMPTY},
+    {"sxt1",   I, OpX3X6 (0, 0, 0x14), {R1, R3}, EMPTY},
+    {"sxt2",   I, OpX3X6 (0, 0, 0x15), {R1, R3}, EMPTY},
+    {"sxt4",   I, OpX3X6 (0, 0, 0x16), {R1, R3}, EMPTY},
+    {"czx1.l", I, OpX3X6 (0, 0, 0x18), {R1, R3}, EMPTY},
+    {"czx2.l", I, OpX3X6 (0, 0, 0x19), {R1, R3}, EMPTY},
+    {"czx1.r", I, OpX3X6 (0, 0, 0x1c), {R1, R3}, EMPTY},
+    {"czx2.r", I, OpX3X6 (0, 0, 0x1d), {R1, R3}, EMPTY},
 
-    {"dep",    I, Op (4), {R1, R2, R3, CPOS6c, LEN4}},
+    {"dep",    I, Op (4), {R1, R2, R3, CPOS6c, LEN4}, EMPTY},
 
-    {"shrp",   I, OpX2X (5, 3, 0), {R1, R2, R3, CNT6}},
+    {"shrp",   I, OpX2X (5, 3, 0), {R1, R2, R3, CNT6}, EMPTY},
 
     {"shr.u",  I, OpX2XYa (5, 1, 0, 0), {R1, R3, POS6},
-     PSEUDO | LEN_EQ_64MCNT},
-    {"extr.u", I, OpX2XYa (5, 1, 0, 0), {R1, R3, POS6, LEN6}},
+     PSEUDO | LEN_EQ_64MCNT, 0, NULL},
+    {"extr.u", I, OpX2XYa (5, 1, 0, 0), {R1, R3, POS6, LEN6}, EMPTY},
 
     {"shr",    I, OpX2XYa (5, 1, 0, 1), {R1, R3, POS6},
-     PSEUDO | LEN_EQ_64MCNT},
-    {"extr",   I, OpX2XYa (5, 1, 0, 1), {R1, R3, POS6, LEN6}},
+     PSEUDO | LEN_EQ_64MCNT, 0, NULL},
+    {"extr",   I, OpX2XYa (5, 1, 0, 1), {R1, R3, POS6, LEN6}, EMPTY},
 
     {"shl",    I, OpX2XYb (5, 1, 1, 0), {R1, R2, CPOS6a},
-     PSEUDO | LEN_EQ_64MCNT},
-    {"dep.z",  I, OpX2XYb (5, 1, 1, 0), {R1, R2, CPOS6a, LEN6}},
-    {"dep.z",  I, OpX2XYb (5, 1, 1, 1), {R1, IMM8, CPOS6a, LEN6}},
-    {"dep",    I, OpX2X (5, 3, 1), {R1, IMM1, R3, CPOS6b, LEN6}},
+     PSEUDO | LEN_EQ_64MCNT, 0, NULL},
+    {"dep.z",  I, OpX2XYb (5, 1, 1, 0), {R1, R2, CPOS6a, LEN6}, EMPTY},
+    {"dep.z",  I, OpX2XYb (5, 1, 1, 1), {R1, IMM8, CPOS6a, LEN6}, EMPTY},
+    {"dep",    I, OpX2X (5, 3, 1), {R1, IMM1, R3, CPOS6b, LEN6}, EMPTY},
 #define TBIT(a,b,c,d) \
-        I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3, POS6}
+        I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3, POS6}, EMPTY
 #define TBITCM(a,b,c,d)        \
-        I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3, POS6}, PSEUDO
+        I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3, POS6}, PSEUDO, 0, NULL
     {"tbit.z",          TBIT   (0, 0, 0, 0)},
     {"tbit.nz",                 TBITCM (0, 0, 0, 0)},
     {"tbit.z.unc",      TBIT   (0, 0, 0, 1)},
@@ -175,9 +179,9 @@ struct ia64_opcode ia64_opcodes_i[] =
     {"tbit.z.and.orcm",  TBITCM (1, 1, 0, 1)},
 #undef TBIT
 #define TNAT(a,b,c,d) \
-       I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3}
+       I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3}, EMPTY
 #define TNATCM(a,b,c,d) \
-       I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3}, PSEUDO
+       I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3}, PSEUDO, 0, NULL
     {"tnat.z",          TNAT   (0, 0, 1, 0)},
     {"tnat.nz",                 TNATCM (0, 0, 1, 0)},
     {"tnat.z.unc",      TNAT   (0, 0, 1, 1)},
@@ -196,50 +200,50 @@ struct ia64_opcode ia64_opcodes_i[] =
     {"tnat.z.and.orcm",  TNATCM (1, 1, 1, 1)},
 #undef TNAT
 
-    {"pmpyshr2",   I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 3), {R1, R2, R3, CNT2c}},
-    {"pmpyshr2.u", I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 1), {R1, R2, R3, CNT2c}},
-    {"pmpy2.r",           I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 1, 3), {R1, R2, R3}},
-    {"pmpy2.l",           I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 3), {R1, R2, R3}},
-    {"mix1.r",    I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 2), {R1, R2, R3}},
-    {"mix2.r",    I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 2), {R1, R2, R3}},
-    {"mix4.r",    I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 2), {R1, R2, R3}},
-    {"mix1.l",    I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 2), {R1, R2, R3}},
-    {"mix2.l",    I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 2), {R1, R2, R3}},
-    {"mix4.l",    I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 2), {R1, R2, R3}},
-    {"pack2.uss",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 0), {R1, R2, R3}},
-    {"pack2.sss",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 0), {R1, R2, R3}},
-    {"pack4.sss",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 0), {R1, R2, R3}},
-    {"unpack1.h",  I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 1), {R1, R2, R3}},
-    {"unpack2.h",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 1), {R1, R2, R3}},
-    {"unpack4.h",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 1), {R1, R2, R3}},
-    {"unpack1.l",  I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 1), {R1, R2, R3}},
-    {"unpack2.l",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 1), {R1, R2, R3}},
-    {"unpack4.l",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 1), {R1, R2, R3}},
-    {"pmin1.u",           I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 0), {R1, R2, R3}},
-    {"pmax1.u",           I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 1), {R1, R2, R3}},
-    {"pmin2",     I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 0), {R1, R2, R3}},
-    {"pmax2",     I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 1), {R1, R2, R3}},
-    {"psad1",     I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 3, 2), {R1, R2, R3}},
-    {"mux1", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 3, 2, 2), {R1, R2, MBTYPE4}},
-    {"mux2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 2, 2), {R1, R2, MHTYPE8}},
-    {"pshr2",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 2, 0), {R1, R3, R2}},
-    {"pshr4",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 2, 0), {R1, R3, R2}},
-    {"shr",    I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 2, 0), {R1, R3, R2}},
-    {"pshr2.u",        I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 0), {R1, R3, R2}},
-    {"pshr4.u",        I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 0), {R1, R3, R2}},
-    {"shr.u",  I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 0), {R1, R3, R2}},
-    {"pshr2",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 3, 0), {R1, R3, CNT5}},
-    {"pshr4",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 3, 0), {R1, R3, CNT5}},
-    {"pshr2.u",        I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 0), {R1, R3, CNT5}},
-    {"pshr4.u",        I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 1, 0), {R1, R3, CNT5}},
-    {"pshl2",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 1), {R1, R2, R3}},
-    {"pshl4",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 1), {R1, R2, R3}},
-    {"shl",    I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 1), {R1, R2, R3}},
-    {"pshl2",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 1, 1), {R1, R2, CCNT5}},
-    {"pshl4",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 3, 1, 1), {R1, R2, CCNT5}},
-    {"popcnt", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 2), {R1, R3}},
+    {"pmpyshr2",   I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 3), {R1, R2, R3, CNT2c}, EMPTY},
+    {"pmpyshr2.u", I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 1), {R1, R2, R3, CNT2c}, EMPTY},
+    {"pmpy2.r",           I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 1, 3), {R1, R2, R3}, EMPTY},
+    {"pmpy2.l",           I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 3), {R1, R2, R3}, EMPTY},
+    {"mix1.r",    I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 2), {R1, R2, R3}, EMPTY},
+    {"mix2.r",    I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 2), {R1, R2, R3}, EMPTY},
+    {"mix4.r",    I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 2), {R1, R2, R3}, EMPTY},
+    {"mix1.l",    I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 2), {R1, R2, R3}, EMPTY},
+    {"mix2.l",    I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 2), {R1, R2, R3}, EMPTY},
+    {"mix4.l",    I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 2), {R1, R2, R3}, EMPTY},
+    {"pack2.uss",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 0), {R1, R2, R3}, EMPTY},
+    {"pack2.sss",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 0), {R1, R2, R3}, EMPTY},
+    {"pack4.sss",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 0), {R1, R2, R3}, EMPTY},
+    {"unpack1.h",  I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 1), {R1, R2, R3}, EMPTY},
+    {"unpack2.h",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 1), {R1, R2, R3}, EMPTY},
+    {"unpack4.h",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 1), {R1, R2, R3}, EMPTY},
+    {"unpack1.l",  I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 1), {R1, R2, R3}, EMPTY},
+    {"unpack2.l",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 1), {R1, R2, R3}, EMPTY},
+    {"unpack4.l",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 1), {R1, R2, R3}, EMPTY},
+    {"pmin1.u",           I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 0), {R1, R2, R3}, EMPTY},
+    {"pmax1.u",           I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 1), {R1, R2, R3}, EMPTY},
+    {"pmin2",     I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 0), {R1, R2, R3}, EMPTY},
+    {"pmax2",     I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 1), {R1, R2, R3}, EMPTY},
+    {"psad1",     I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 3, 2), {R1, R2, R3}, EMPTY},
+    {"mux1", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 3, 2, 2), {R1, R2, MBTYPE4}, EMPTY},
+    {"mux2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 2, 2), {R1, R2, MHTYPE8}, EMPTY},
+    {"pshr2",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 2, 0), {R1, R3, R2}, EMPTY},
+    {"pshr4",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 2, 0), {R1, R3, R2}, EMPTY},
+    {"shr",    I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 2, 0), {R1, R3, R2}, EMPTY},
+    {"pshr2.u",        I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 0), {R1, R3, R2}, EMPTY},
+    {"pshr4.u",        I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 0), {R1, R3, R2}, EMPTY},
+    {"shr.u",  I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 0), {R1, R3, R2}, EMPTY},
+    {"pshr2",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 3, 0), {R1, R3, CNT5}, EMPTY},
+    {"pshr4",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 3, 0), {R1, R3, CNT5}, EMPTY},
+    {"pshr2.u",        I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 0), {R1, R3, CNT5}, EMPTY},
+    {"pshr4.u",        I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 1, 0), {R1, R3, CNT5}, EMPTY},
+    {"pshl2",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 1), {R1, R2, R3}, EMPTY},
+    {"pshl4",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 1), {R1, R2, R3}, EMPTY},
+    {"shl",    I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 1), {R1, R2, R3}, EMPTY},
+    {"pshl2",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 1, 1), {R1, R2, CCNT5}, EMPTY},
+    {"pshl4",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 3, 1, 1), {R1, R2, CCNT5}, EMPTY},
+    {"popcnt", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 2), {R1, R3}, EMPTY},
 
-    {0}
+    {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
   };
 
 #undef I0
@@ -294,3 +298,4 @@ struct ia64_opcode ia64_opcodes_i[] =
 #undef OpX3X6
 #undef OpX3XbIhWh
 #undef OpX3XbIhWhTag13
+#undef EMPTY
index bc098160a4b5e44f9adecffb999f32043f570161..ba59d1dc4d2a6bb5937b2b345807563659f3b451 100644 (file)
@@ -1,5 +1,5 @@
 /* ia64-opc-m.c -- IA-64 `M' opcode table.
-   Copyright 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
 
    This file is part of GDB, GAS, and the GNU binutils.
        (bOp (a) | bM (b) | bX (c) | bX6a (d) | bHint (e)), \
        (mOp | mM | mX | mX6a | mHint)
 
+/* Used to initialise unused fields in ia64_opcode struct,
+   in order to stop gcc from complaining.  */
+#define EMPTY 0,0,NULL
+
 struct ia64_opcode ia64_opcodes_m[] =
   {
-    /* M-type instruction encodings (sorted according to major opcode) */
+    /* M-type instruction encodings (sorted according to major opcode) */
 
-    {"chk.a.nc",       M0, OpX3 (0, 4), {R1, TGT25c}},
-    {"chk.a.clr",      M0, OpX3 (0, 5), {R1, TGT25c}},
-    {"chk.a.nc",       M0, OpX3 (0, 6), {F1, TGT25c}},
-    {"chk.a.clr",      M0, OpX3 (0, 7), {F1, TGT25c}},
+    {"chk.a.nc",       M0, OpX3 (0, 4), {R1, TGT25c}, EMPTY},
+    {"chk.a.clr",      M0, OpX3 (0, 5), {R1, TGT25c}, EMPTY},
+    {"chk.a.nc",       M0, OpX3 (0, 6), {F1, TGT25c}, EMPTY},
+    {"chk.a.clr",      M0, OpX3 (0, 7), {F1, TGT25c}, EMPTY},
 
-    {"invala",         M0, OpX3X4X2 (0, 0, 0, 1)},
-    {"fwb",            M0, OpX3X4X2 (0, 0, 0, 2)},
-    {"mf",             M0, OpX3X4X2 (0, 0, 2, 2)},
-    {"mf.a",           M0, OpX3X4X2 (0, 0, 3, 2)},
-    {"srlz.d",         M0, OpX3X4X2 (0, 0, 0, 3)},
-    {"srlz.i",         M0, OpX3X4X2 (0, 0, 1, 3)},
-    {"sync.i",         M0, OpX3X4X2 (0, 0, 3, 3)},
-    {"flushrs",                M0, OpX3X4X2 (0, 0, 0xc, 0), {0, }, FIRST | NO_PRED},
-    {"loadrs",         M0, OpX3X4X2 (0, 0, 0xa, 0), {0, }, FIRST | NO_PRED},
-    {"invala.e",       M0, OpX3X4X2 (0, 0, 2, 1), {R1}},
-    {"invala.e",       M0, OpX3X4X2 (0, 0, 3, 1), {F1}},
-    {"mov.m",          M, OpX3X4X2 (0, 0, 8, 2), {AR3, IMM8}},
+    {"invala",         M0, OpX3X4X2 (0, 0, 0, 1), {}, EMPTY},
+    {"fwb",            M0, OpX3X4X2 (0, 0, 0, 2), {}, EMPTY},
+    {"mf",             M0, OpX3X4X2 (0, 0, 2, 2), {}, EMPTY},
+    {"mf.a",           M0, OpX3X4X2 (0, 0, 3, 2), {}, EMPTY},
+    {"srlz.d",         M0, OpX3X4X2 (0, 0, 0, 3), {}, EMPTY},
+    {"srlz.i",         M0, OpX3X4X2 (0, 0, 1, 3), {}, EMPTY},
+    {"sync.i",         M0, OpX3X4X2 (0, 0, 3, 3), {}, EMPTY},
+    {"flushrs",                M0, OpX3X4X2 (0, 0, 0xc, 0), {}, FIRST | NO_PRED, 0, NULL},
+    {"loadrs",         M0, OpX3X4X2 (0, 0, 0xa, 0), {}, FIRST | NO_PRED, 0, NULL},
+    {"invala.e",       M0, OpX3X4X2 (0, 0, 2, 1), {R1}, EMPTY},
+    {"invala.e",       M0, OpX3X4X2 (0, 0, 3, 1), {F1}, EMPTY},
+    {"mov.m",          M, OpX3X4X2 (0, 0, 8, 2), {AR3, IMM8}, EMPTY},
 
-    {"break.m",                M0, OpX3X4X2 (0, 0, 0, 0), {IMMU21}},
-    {"nop.m",          M0, OpX3X4X2 (0, 0, 1, 0), {IMMU21}},
+    {"break.m",                M0, OpX3X4X2 (0, 0, 0, 0), {IMMU21}, EMPTY},
+    {"nop.m",          M0, OpX3X4X2 (0, 0, 1, 0), {IMMU21}, EMPTY},
 
-    {"sum",            M0, OpX3X4 (0, 0, 4), {IMMU24}},
-    {"rum",            M0, OpX3X4 (0, 0, 5), {IMMU24}},
-    {"ssm",            M0, OpX3X4 (0, 0, 6), {IMMU24}, PRIV},
-    {"rsm",            M0, OpX3X4 (0, 0, 7), {IMMU24}, PRIV},
+    {"sum",            M0, OpX3X4 (0, 0, 4), {IMMU24}, EMPTY},
+    {"rum",            M0, OpX3X4 (0, 0, 5), {IMMU24}, EMPTY},
+    {"ssm",            M0, OpX3X4 (0, 0, 6), {IMMU24}, PRIV, 0, NULL},
+    {"rsm",            M0, OpX3X4 (0, 0, 7), {IMMU24}, PRIV, 0, NULL},
 
-    {"mov.m",  M, OpX3X6b (1, 0, 0x2a), {AR3, R2}},
-    {"mov.m",  M, OpX3X6b (1, 0, 0x22), {R1, AR3}},
-    {"mov",    M, OpX3X6b (1, 0, 0x2c), {CR3, R2}, PRIV},
-    {"mov",    M, OpX3X6b (1, 0, 0x24), {R1, CR3}, PRIV},
+    {"mov.m",  M, OpX3X6b (1, 0, 0x2a), {AR3, R2}, EMPTY},
+    {"mov.m",  M, OpX3X6b (1, 0, 0x22), {R1, AR3}, EMPTY},
+    {"mov",    M, OpX3X6b (1, 0, 0x2c), {CR3, R2}, PRIV, 0, NULL},
+    {"mov",    M, OpX3X6b (1, 0, 0x24), {R1, CR3}, PRIV, 0, NULL},
 
-    {"alloc",  M, OpX3 (1, 6), {R1, AR_PFS, SOF, SOL, SOR}, FIRST|NO_PRED|MOD_RRBS},
+    {"alloc",  M, OpX3 (1, 6), {R1, AR_PFS, SOF, SOL, SOR}, FIRST|NO_PRED|MOD_RRBS, 0, NULL},
 
-    {"mov",    M, OpX3X6b (1, 0, 0x2d), {PSR_L, R2}, PRIV},
-    {"mov",    M, OpX3X6b (1, 0, 0x29), {PSR_UM, R2}},
-    {"mov",    M, OpX3X6b (1, 0, 0x25), {R1, PSR}, PRIV},
-    {"mov",    M, OpX3X6b (1, 0, 0x21), {R1, PSR_UM}},
-    {"probe.r",        M, OpX3X6b (1, 0, 0x38), {R1, R3, R2}},
-    {"probe.w",        M, OpX3X6b (1, 0, 0x39), {R1, R3, R2}},
-    {"probe.r", M, OpX3X6b (1, 0, 0x18), {R1, R3, IMMU2}},
-    {"probe.w", M, OpX3X6b (1, 0, 0x19), {R1, R3, IMMU2}},
-    {"probe.rw.fault", M0, OpX3X6b (1, 0, 0x31), {R3, IMMU2}},
-    {"probe.r.fault",  M0, OpX3X6b (1, 0, 0x32), {R3, IMMU2}},
-    {"probe.w.fault",  M0, OpX3X6b (1, 0, 0x33), {R3, IMMU2}},
-    {"itc.d",  M0, OpX3X6b (1, 0, 0x2e), {R2}, LAST | PRIV},
-    {"itc.i",  M0, OpX3X6b (1, 0, 0x2f), {R2}, LAST | PRIV},
+    {"mov",    M, OpX3X6b (1, 0, 0x2d), {PSR_L, R2}, PRIV, 0, NULL},
+    {"mov",    M, OpX3X6b (1, 0, 0x29), {PSR_UM, R2}, EMPTY},
+    {"mov",    M, OpX3X6b (1, 0, 0x25), {R1, PSR}, PRIV, 0, NULL},
+    {"mov",    M, OpX3X6b (1, 0, 0x21), {R1, PSR_UM}, EMPTY},
+    {"probe.r",        M, OpX3X6b (1, 0, 0x38), {R1, R3, R2}, EMPTY},
+    {"probe.w",        M, OpX3X6b (1, 0, 0x39), {R1, R3, R2}, EMPTY},
+    {"probe.r", M, OpX3X6b (1, 0, 0x18), {R1, R3, IMMU2}, EMPTY},
+    {"probe.w", M, OpX3X6b (1, 0, 0x19), {R1, R3, IMMU2}, EMPTY},
+    {"probe.rw.fault", M0, OpX3X6b (1, 0, 0x31), {R3, IMMU2}, EMPTY},
+    {"probe.r.fault",  M0, OpX3X6b (1, 0, 0x32), {R3, IMMU2}, EMPTY},
+    {"probe.w.fault",  M0, OpX3X6b (1, 0, 0x33), {R3, IMMU2}, EMPTY},
+    {"itc.d",  M0, OpX3X6b (1, 0, 0x2e), {R2}, LAST | PRIV, 0, NULL},
+    {"itc.i",  M0, OpX3X6b (1, 0, 0x2f), {R2}, LAST | PRIV, 0, NULL},
 
-    {"mov",    M, OpX3X6b (1, 0, 0x00), {RR_R3, R2}, PRIV},
-    {"mov",    M, OpX3X6b (1, 0, 0x01), {DBR_R3, R2}, PRIV},
-    {"mov",    M, OpX3X6b (1, 0, 0x02), {IBR_R3, R2}, PRIV},
-    {"mov",    M, OpX3X6b (1, 0, 0x03), {PKR_R3, R2}, PRIV},
-    {"mov",    M, OpX3X6b (1, 0, 0x04), {PMC_R3, R2}, PRIV},
-    {"mov",    M, OpX3X6b (1, 0, 0x05), {PMD_R3, R2}, PRIV},
-    {"mov",    M, OpX3X6b (1, 0, 0x06), {MSR_R3, R2}, PRIV},
-    {"itr.d",  M, OpX3X6b (1, 0, 0x0e), {DTR_R3, R2}, PRIV},
-    {"itr.i",  M, OpX3X6b (1, 0, 0x0f), {ITR_R3, R2}, PRIV},
+    {"mov",    M, OpX3X6b (1, 0, 0x00), {RR_R3, R2}, PRIV, 0, NULL},
+    {"mov",    M, OpX3X6b (1, 0, 0x01), {DBR_R3, R2}, PRIV, 0, NULL},
+    {"mov",    M, OpX3X6b (1, 0, 0x02), {IBR_R3, R2}, PRIV, 0, NULL},
+    {"mov",    M, OpX3X6b (1, 0, 0x03), {PKR_R3, R2}, PRIV, 0, NULL},
+    {"mov",    M, OpX3X6b (1, 0, 0x04), {PMC_R3, R2}, PRIV, 0, NULL},
+    {"mov",    M, OpX3X6b (1, 0, 0x05), {PMD_R3, R2}, PRIV, 0, NULL},
+    {"mov",    M, OpX3X6b (1, 0, 0x06), {MSR_R3, R2}, PRIV, 0, NULL},
+    {"itr.d",  M, OpX3X6b (1, 0, 0x0e), {DTR_R3, R2}, PRIV, 0, NULL},
+    {"itr.i",  M, OpX3X6b (1, 0, 0x0f), {ITR_R3, R2}, PRIV, 0, NULL},
 
-    {"mov",    M, OpX3X6b (1, 0, 0x10), {R1, RR_R3}, PRIV},
-    {"mov",    M, OpX3X6b (1, 0, 0x11), {R1, DBR_R3}, PRIV},
-    {"mov",    M, OpX3X6b (1, 0, 0x12), {R1, IBR_R3}, PRIV},
-    {"mov",    M, OpX3X6b (1, 0, 0x13), {R1, PKR_R3}, PRIV},
-    {"mov",    M, OpX3X6b (1, 0, 0x14), {R1, PMC_R3}, PRIV},
-    {"mov",    M, OpX3X6b (1, 0, 0x15), {R1, PMD_R3}},
-    {"mov",    M, OpX3X6b (1, 0, 0x16), {R1, MSR_R3}, PRIV},
-    {"mov",    M, OpX3X6b (1, 0, 0x17), {R1, CPUID_R3}},
+    {"mov",    M, OpX3X6b (1, 0, 0x10), {R1, RR_R3}, PRIV, 0, NULL},
+    {"mov",    M, OpX3X6b (1, 0, 0x11), {R1, DBR_R3}, PRIV, 0, NULL},
+    {"mov",    M, OpX3X6b (1, 0, 0x12), {R1, IBR_R3}, PRIV, 0, NULL},
+    {"mov",    M, OpX3X6b (1, 0, 0x13), {R1, PKR_R3}, PRIV, 0, NULL},
+    {"mov",    M, OpX3X6b (1, 0, 0x14), {R1, PMC_R3}, PRIV, 0, NULL},
+    {"mov",    M, OpX3X6b (1, 0, 0x15), {R1, PMD_R3}, EMPTY},
+    {"mov",    M, OpX3X6b (1, 0, 0x16), {R1, MSR_R3}, PRIV, 0, NULL},
+    {"mov",    M, OpX3X6b (1, 0, 0x17), {R1, CPUID_R3}, EMPTY},
 
-    {"ptc.l",  M0, OpX3X6b (1, 0, 0x09), {R3, R2}, PRIV},
-    {"ptc.g",  M0, OpX3X6b (1, 0, 0x0a), {R3, R2}, LAST | PRIV},
-    {"ptc.ga", M0, OpX3X6b (1, 0, 0x0b), {R3, R2}, LAST | PRIV},
-    {"ptr.d",  M0, OpX3X6b (1, 0, 0x0c), {R3, R2}, PRIV},
-    {"ptr.i",  M0, OpX3X6b (1, 0, 0x0d), {R3, R2}, PRIV},
+    {"ptc.l",  M0, OpX3X6b (1, 0, 0x09), {R3, R2}, PRIV, 0, NULL},
+    {"ptc.g",  M0, OpX3X6b (1, 0, 0x0a), {R3, R2}, LAST | PRIV, 0, NULL},
+    {"ptc.ga", M0, OpX3X6b (1, 0, 0x0b), {R3, R2}, LAST | PRIV, 0, NULL},
+    {"ptr.d",  M0, OpX3X6b (1, 0, 0x0c), {R3, R2}, PRIV, 0, NULL},
+    {"ptr.i",  M0, OpX3X6b (1, 0, 0x0d), {R3, R2}, PRIV, 0, NULL},
 
-    {"thash",  M, OpX3X6b (1, 0, 0x1a), {R1, R3}},
-    {"ttag",   M, OpX3X6b (1, 0, 0x1b), {R1, R3}},
-    {"tpa",    M, OpX3X6b (1, 0, 0x1e), {R1, R3}, PRIV},
-    {"tak",    M, OpX3X6b (1, 0, 0x1f), {R1, R3}, PRIV},
+    {"thash",  M, OpX3X6b (1, 0, 0x1a), {R1, R3}, EMPTY},
+    {"ttag",   M, OpX3X6b (1, 0, 0x1b), {R1, R3}, EMPTY},
+    {"tpa",    M, OpX3X6b (1, 0, 0x1e), {R1, R3}, PRIV, 0, NULL},
+    {"tak",    M, OpX3X6b (1, 0, 0x1f), {R1, R3}, PRIV, 0, NULL},
 
-    {"chk.s.m",        M0, OpX3 (1, 1), {R2, TGT25b}},
-    {"chk.s",  M0, OpX3 (1, 3), {F2, TGT25b}},
+    {"chk.s.m",        M0, OpX3 (1, 1), {R2, TGT25b}, EMPTY},
+    {"chk.s",  M0, OpX3 (1, 3), {F2, TGT25b}, EMPTY},
 
-    {"fc",     M0, OpX3X6b (1, 0, 0x30), {R3}},
-    {"ptc.e",  M0, OpX3X6b (1, 0, 0x34), {R3}, PRIV},
+    {"fc",     M0, OpX3X6b (1, 0, 0x30), {R3}, EMPTY},
+    {"ptc.e",  M0, OpX3X6b (1, 0, 0x34), {R3}, PRIV, 0, NULL},
 
     /* integer load */
-    {"ld1",            M, OpMXX6aHint (4, 0, 0, 0x00, 0), {R1, MR3}},
-    {"ld1.nt1",                M, OpMXX6aHint (4, 0, 0, 0x00, 1), {R1, MR3}},
-    {"ld1.nta",                M, OpMXX6aHint (4, 0, 0, 0x00, 3), {R1, MR3}},
-    {"ld2",            M, OpMXX6aHint (4, 0, 0, 0x01, 0), {R1, MR3}},
-    {"ld2.nt1",                M, OpMXX6aHint (4, 0, 0, 0x01, 1), {R1, MR3}},
-    {"ld2.nta",                M, OpMXX6aHint (4, 0, 0, 0x01, 3), {R1, MR3}},
-    {"ld4",            M, OpMXX6aHint (4, 0, 0, 0x02, 0), {R1, MR3}},
-    {"ld4.nt1",                M, OpMXX6aHint (4, 0, 0, 0x02, 1), {R1, MR3}},
-    {"ld4.nta",                M, OpMXX6aHint (4, 0, 0, 0x02, 3), {R1, MR3}},
-    {"ld8",            M, OpMXX6aHint (4, 0, 0, 0x03, 0), {R1, MR3}},
-    {"ld8.nt1",                M, OpMXX6aHint (4, 0, 0, 0x03, 1), {R1, MR3}},
-    {"ld8.nta",                M, OpMXX6aHint (4, 0, 0, 0x03, 3), {R1, MR3}},
-    {"ld1.s",          M, OpMXX6aHint (4, 0, 0, 0x04, 0), {R1, MR3}},
-    {"ld1.s.nt1",      M, OpMXX6aHint (4, 0, 0, 0x04, 1), {R1, MR3}},
-    {"ld1.s.nta",      M, OpMXX6aHint (4, 0, 0, 0x04, 3), {R1, MR3}},
-    {"ld2.s",          M, OpMXX6aHint (4, 0, 0, 0x05, 0), {R1, MR3}},
-    {"ld2.s.nt1",      M, OpMXX6aHint (4, 0, 0, 0x05, 1), {R1, MR3}},
-    {"ld2.s.nta",      M, OpMXX6aHint (4, 0, 0, 0x05, 3), {R1, MR3}},
-    {"ld4.s",          M, OpMXX6aHint (4, 0, 0, 0x06, 0), {R1, MR3}},
-    {"ld4.s.nt1",      M, OpMXX6aHint (4, 0, 0, 0x06, 1), {R1, MR3}},
-    {"ld4.s.nta",      M, OpMXX6aHint (4, 0, 0, 0x06, 3), {R1, MR3}},
-    {"ld8.s",          M, OpMXX6aHint (4, 0, 0, 0x07, 0), {R1, MR3}},
-    {"ld8.s.nt1",      M, OpMXX6aHint (4, 0, 0, 0x07, 1), {R1, MR3}},
-    {"ld8.s.nta",      M, OpMXX6aHint (4, 0, 0, 0x07, 3), {R1, MR3}},
-    {"ld1.a",          M, OpMXX6aHint (4, 0, 0, 0x08, 0), {R1, MR3}},
-    {"ld1.a.nt1",      M, OpMXX6aHint (4, 0, 0, 0x08, 1), {R1, MR3}},
-    {"ld1.a.nta",      M, OpMXX6aHint (4, 0, 0, 0x08, 3), {R1, MR3}},
-    {"ld2.a",          M, OpMXX6aHint (4, 0, 0, 0x09, 0), {R1, MR3}},
-    {"ld2.a.nt1",      M, OpMXX6aHint (4, 0, 0, 0x09, 1), {R1, MR3}},
-    {"ld2.a.nta",      M, OpMXX6aHint (4, 0, 0, 0x09, 3), {R1, MR3}},
-    {"ld4.a",          M, OpMXX6aHint (4, 0, 0, 0x0a, 0), {R1, MR3}},
-    {"ld4.a.nt1",      M, OpMXX6aHint (4, 0, 0, 0x0a, 1), {R1, MR3}},
-    {"ld4.a.nta",      M, OpMXX6aHint (4, 0, 0, 0x0a, 3), {R1, MR3}},
-    {"ld8.a",          M, OpMXX6aHint (4, 0, 0, 0x0b, 0), {R1, MR3}},
-    {"ld8.a.nt1",      M, OpMXX6aHint (4, 0, 0, 0x0b, 1), {R1, MR3}},
-    {"ld8.a.nta",      M, OpMXX6aHint (4, 0, 0, 0x0b, 3), {R1, MR3}},
-    {"ld1.sa",         M, OpMXX6aHint (4, 0, 0, 0x0c, 0), {R1, MR3}},
-    {"ld1.sa.nt1",     M, OpMXX6aHint (4, 0, 0, 0x0c, 1), {R1, MR3}},
-    {"ld1.sa.nta",     M, OpMXX6aHint (4, 0, 0, 0x0c, 3), {R1, MR3}},
-    {"ld2.sa",         M, OpMXX6aHint (4, 0, 0, 0x0d, 0), {R1, MR3}},
-    {"ld2.sa.nt1",     M, OpMXX6aHint (4, 0, 0, 0x0d, 1), {R1, MR3}},
-    {"ld2.sa.nta",     M, OpMXX6aHint (4, 0, 0, 0x0d, 3), {R1, MR3}},
-    {"ld4.sa",         M, OpMXX6aHint (4, 0, 0, 0x0e, 0), {R1, MR3}},
-    {"ld4.sa.nt1",     M, OpMXX6aHint (4, 0, 0, 0x0e, 1), {R1, MR3}},
-    {"ld4.sa.nta",     M, OpMXX6aHint (4, 0, 0, 0x0e, 3), {R1, MR3}},
-    {"ld8.sa",         M, OpMXX6aHint (4, 0, 0, 0x0f, 0), {R1, MR3}},
-    {"ld8.sa.nt1",     M, OpMXX6aHint (4, 0, 0, 0x0f, 1), {R1, MR3}},
-    {"ld8.sa.nta",     M, OpMXX6aHint (4, 0, 0, 0x0f, 3), {R1, MR3}},
-    {"ld1.bias",       M, OpMXX6aHint (4, 0, 0, 0x10, 0), {R1, MR3}},
-    {"ld1.bias.nt1",   M, OpMXX6aHint (4, 0, 0, 0x10, 1), {R1, MR3}},
-    {"ld1.bias.nta",   M, OpMXX6aHint (4, 0, 0, 0x10, 3), {R1, MR3}},
-    {"ld2.bias",       M, OpMXX6aHint (4, 0, 0, 0x11, 0), {R1, MR3}},
-    {"ld2.bias.nt1",   M, OpMXX6aHint (4, 0, 0, 0x11, 1), {R1, MR3}},
-    {"ld2.bias.nta",   M, OpMXX6aHint (4, 0, 0, 0x11, 3), {R1, MR3}},
-    {"ld4.bias",       M, OpMXX6aHint (4, 0, 0, 0x12, 0), {R1, MR3}},
-    {"ld4.bias.nt1",   M, OpMXX6aHint (4, 0, 0, 0x12, 1), {R1, MR3}},
-    {"ld4.bias.nta",   M, OpMXX6aHint (4, 0, 0, 0x12, 3), {R1, MR3}},
-    {"ld8.bias",       M, OpMXX6aHint (4, 0, 0, 0x13, 0), {R1, MR3}},
-    {"ld8.bias.nt1",   M, OpMXX6aHint (4, 0, 0, 0x13, 1), {R1, MR3}},
-    {"ld8.bias.nta",   M, OpMXX6aHint (4, 0, 0, 0x13, 3), {R1, MR3}},
-    {"ld1.acq",                M, OpMXX6aHint (4, 0, 0, 0x14, 0), {R1, MR3}},
-    {"ld1.acq.nt1",    M, OpMXX6aHint (4, 0, 0, 0x14, 1), {R1, MR3}},
-    {"ld1.acq.nta",    M, OpMXX6aHint (4, 0, 0, 0x14, 3), {R1, MR3}},
-    {"ld2.acq",                M, OpMXX6aHint (4, 0, 0, 0x15, 0), {R1, MR3}},
-    {"ld2.acq.nt1",    M, OpMXX6aHint (4, 0, 0, 0x15, 1), {R1, MR3}},
-    {"ld2.acq.nta",    M, OpMXX6aHint (4, 0, 0, 0x15, 3), {R1, MR3}},
-    {"ld4.acq",                M, OpMXX6aHint (4, 0, 0, 0x16, 0), {R1, MR3}},
-    {"ld4.acq.nt1",    M, OpMXX6aHint (4, 0, 0, 0x16, 1), {R1, MR3}},
-    {"ld4.acq.nta",    M, OpMXX6aHint (4, 0, 0, 0x16, 3), {R1, MR3}},
-    {"ld8.acq",                M, OpMXX6aHint (4, 0, 0, 0x17, 0), {R1, MR3}},
-    {"ld8.acq.nt1",    M, OpMXX6aHint (4, 0, 0, 0x17, 1), {R1, MR3}},
-    {"ld8.acq.nta",    M, OpMXX6aHint (4, 0, 0, 0x17, 3), {R1, MR3}},
-    {"ld8.fill",       M, OpMXX6aHint (4, 0, 0, 0x1b, 0), {R1, MR3}},
-    {"ld8.fill.nt1",   M, OpMXX6aHint (4, 0, 0, 0x1b, 1), {R1, MR3}},
-    {"ld8.fill.nta",   M, OpMXX6aHint (4, 0, 0, 0x1b, 3), {R1, MR3}},
-    {"ld1.c.clr",      M, OpMXX6aHint (4, 0, 0, 0x20, 0), {R1, MR3}},
-    {"ld1.c.clr.nt1",  M, OpMXX6aHint (4, 0, 0, 0x20, 1), {R1, MR3}},
-    {"ld1.c.clr.nta",  M, OpMXX6aHint (4, 0, 0, 0x20, 3), {R1, MR3}},
-    {"ld2.c.clr",      M, OpMXX6aHint (4, 0, 0, 0x21, 0), {R1, MR3}},
-    {"ld2.c.clr.nt1",  M, OpMXX6aHint (4, 0, 0, 0x21, 1), {R1, MR3}},
-    {"ld2.c.clr.nta",  M, OpMXX6aHint (4, 0, 0, 0x21, 3), {R1, MR3}},
-    {"ld4.c.clr",      M, OpMXX6aHint (4, 0, 0, 0x22, 0), {R1, MR3}},
-    {"ld4.c.clr.nt1",  M, OpMXX6aHint (4, 0, 0, 0x22, 1), {R1, MR3}},
-    {"ld4.c.clr.nta",  M, OpMXX6aHint (4, 0, 0, 0x22, 3), {R1, MR3}},
-    {"ld8.c.clr",      M, OpMXX6aHint (4, 0, 0, 0x23, 0), {R1, MR3}},
-    {"ld8.c.clr.nt1",  M, OpMXX6aHint (4, 0, 0, 0x23, 1), {R1, MR3}},
-    {"ld8.c.clr.nta",  M, OpMXX6aHint (4, 0, 0, 0x23, 3), {R1, MR3}},
-    {"ld1.c.nc",       M, OpMXX6aHint (4, 0, 0, 0x24, 0), {R1, MR3}},
-    {"ld1.c.nc.nt1",   M, OpMXX6aHint (4, 0, 0, 0x24, 1), {R1, MR3}},
-    {"ld1.c.nc.nta",   M, OpMXX6aHint (4, 0, 0, 0x24, 3), {R1, MR3}},
-    {"ld2.c.nc",       M, OpMXX6aHint (4, 0, 0, 0x25, 0), {R1, MR3}},
-    {"ld2.c.nc.nt1",   M, OpMXX6aHint (4, 0, 0, 0x25, 1), {R1, MR3}},
-    {"ld2.c.nc.nta",   M, OpMXX6aHint (4, 0, 0, 0x25, 3), {R1, MR3}},
-    {"ld4.c.nc",       M, OpMXX6aHint (4, 0, 0, 0x26, 0), {R1, MR3}},
-    {"ld4.c.nc.nt1",   M, OpMXX6aHint (4, 0, 0, 0x26, 1), {R1, MR3}},
-    {"ld4.c.nc.nta",   M, OpMXX6aHint (4, 0, 0, 0x26, 3), {R1, MR3}},
-    {"ld8.c.nc",       M, OpMXX6aHint (4, 0, 0, 0x27, 0), {R1, MR3}},
-    {"ld8.c.nc.nt1",   M, OpMXX6aHint (4, 0, 0, 0x27, 1), {R1, MR3}},
-    {"ld8.c.nc.nta",   M, OpMXX6aHint (4, 0, 0, 0x27, 3), {R1, MR3}},
-    {"ld1.c.clr.acq",    M, OpMXX6aHint (4, 0, 0, 0x28, 0), {R1, MR3}},
-    {"ld1.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x28, 1), {R1, MR3}},
-    {"ld1.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x28, 3), {R1, MR3}},
-    {"ld2.c.clr.acq",    M, OpMXX6aHint (4, 0, 0, 0x29, 0), {R1, MR3}},
-    {"ld2.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x29, 1), {R1, MR3}},
-    {"ld2.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x29, 3), {R1, MR3}},
-    {"ld4.c.clr.acq",    M, OpMXX6aHint (4, 0, 0, 0x2a, 0), {R1, MR3}},
-    {"ld4.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x2a, 1), {R1, MR3}},
-    {"ld4.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x2a, 3), {R1, MR3}},
-    {"ld8.c.clr.acq",    M, OpMXX6aHint (4, 0, 0, 0x2b, 0), {R1, MR3}},
-    {"ld8.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x2b, 1), {R1, MR3}},
-    {"ld8.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x2b, 3), {R1, MR3}},
+    {"ld1",            M, OpMXX6aHint (4, 0, 0, 0x00, 0), {R1, MR3}, EMPTY},
+    {"ld1.nt1",                M, OpMXX6aHint (4, 0, 0, 0x00, 1), {R1, MR3}, EMPTY},
+    {"ld1.nta",                M, OpMXX6aHint (4, 0, 0, 0x00, 3), {R1, MR3}, EMPTY},
+    {"ld2",            M, OpMXX6aHint (4, 0, 0, 0x01, 0), {R1, MR3}, EMPTY},
+    {"ld2.nt1",                M, OpMXX6aHint (4, 0, 0, 0x01, 1), {R1, MR3}, EMPTY},
+    {"ld2.nta",                M, OpMXX6aHint (4, 0, 0, 0x01, 3), {R1, MR3}, EMPTY},
+    {"ld4",            M, OpMXX6aHint (4, 0, 0, 0x02, 0), {R1, MR3}, EMPTY},
+    {"ld4.nt1",                M, OpMXX6aHint (4, 0, 0, 0x02, 1), {R1, MR3}, EMPTY},
+    {"ld4.nta",                M, OpMXX6aHint (4, 0, 0, 0x02, 3), {R1, MR3}, EMPTY},
+    {"ld8",            M, OpMXX6aHint (4, 0, 0, 0x03, 0), {R1, MR3}, EMPTY},
+    {"ld8.nt1",                M, OpMXX6aHint (4, 0, 0, 0x03, 1), {R1, MR3}, EMPTY},
+    {"ld8.nta",                M, OpMXX6aHint (4, 0, 0, 0x03, 3), {R1, MR3}, EMPTY},
+    {"ld1.s",          M, OpMXX6aHint (4, 0, 0, 0x04, 0), {R1, MR3}, EMPTY},
+    {"ld1.s.nt1",      M, OpMXX6aHint (4, 0, 0, 0x04, 1), {R1, MR3}, EMPTY},
+    {"ld1.s.nta",      M, OpMXX6aHint (4, 0, 0, 0x04, 3), {R1, MR3}, EMPTY},
+    {"ld2.s",          M, OpMXX6aHint (4, 0, 0, 0x05, 0), {R1, MR3}, EMPTY},
+    {"ld2.s.nt1",      M, OpMXX6aHint (4, 0, 0, 0x05, 1), {R1, MR3}, EMPTY},
+    {"ld2.s.nta",      M, OpMXX6aHint (4, 0, 0, 0x05, 3), {R1, MR3}, EMPTY},
+    {"ld4.s",          M, OpMXX6aHint (4, 0, 0, 0x06, 0), {R1, MR3}, EMPTY},
+    {"ld4.s.nt1",      M, OpMXX6aHint (4, 0, 0, 0x06, 1), {R1, MR3}, EMPTY},
+    {"ld4.s.nta",      M, OpMXX6aHint (4, 0, 0, 0x06, 3), {R1, MR3}, EMPTY},
+    {"ld8.s",          M, OpMXX6aHint (4, 0, 0, 0x07, 0), {R1, MR3}, EMPTY},
+    {"ld8.s.nt1",      M, OpMXX6aHint (4, 0, 0, 0x07, 1), {R1, MR3}, EMPTY},
+    {"ld8.s.nta",      M, OpMXX6aHint (4, 0, 0, 0x07, 3), {R1, MR3}, EMPTY},
+    {"ld1.a",          M, OpMXX6aHint (4, 0, 0, 0x08, 0), {R1, MR3}, EMPTY},
+    {"ld1.a.nt1",      M, OpMXX6aHint (4, 0, 0, 0x08, 1), {R1, MR3}, EMPTY},
+    {"ld1.a.nta",      M, OpMXX6aHint (4, 0, 0, 0x08, 3), {R1, MR3}, EMPTY},
+    {"ld2.a",          M, OpMXX6aHint (4, 0, 0, 0x09, 0), {R1, MR3}, EMPTY},
+    {"ld2.a.nt1",      M, OpMXX6aHint (4, 0, 0, 0x09, 1), {R1, MR3}, EMPTY},
+    {"ld2.a.nta",      M, OpMXX6aHint (4, 0, 0, 0x09, 3), {R1, MR3}, EMPTY},
+    {"ld4.a",          M, OpMXX6aHint (4, 0, 0, 0x0a, 0), {R1, MR3}, EMPTY},
+    {"ld4.a.nt1",      M, OpMXX6aHint (4, 0, 0, 0x0a, 1), {R1, MR3}, EMPTY},
+    {"ld4.a.nta",      M, OpMXX6aHint (4, 0, 0, 0x0a, 3), {R1, MR3}, EMPTY},
+    {"ld8.a",          M, OpMXX6aHint (4, 0, 0, 0x0b, 0), {R1, MR3}, EMPTY},
+    {"ld8.a.nt1",      M, OpMXX6aHint (4, 0, 0, 0x0b, 1), {R1, MR3}, EMPTY},
+    {"ld8.a.nta",      M, OpMXX6aHint (4, 0, 0, 0x0b, 3), {R1, MR3}, EMPTY},
+    {"ld1.sa",         M, OpMXX6aHint (4, 0, 0, 0x0c, 0), {R1, MR3}, EMPTY},
+    {"ld1.sa.nt1",     M, OpMXX6aHint (4, 0, 0, 0x0c, 1), {R1, MR3}, EMPTY},
+    {"ld1.sa.nta",     M, OpMXX6aHint (4, 0, 0, 0x0c, 3), {R1, MR3}, EMPTY},
+    {"ld2.sa",         M, OpMXX6aHint (4, 0, 0, 0x0d, 0), {R1, MR3}, EMPTY},
+    {"ld2.sa.nt1",     M, OpMXX6aHint (4, 0, 0, 0x0d, 1), {R1, MR3}, EMPTY},
+    {"ld2.sa.nta",     M, OpMXX6aHint (4, 0, 0, 0x0d, 3), {R1, MR3}, EMPTY},
+    {"ld4.sa",         M, OpMXX6aHint (4, 0, 0, 0x0e, 0), {R1, MR3}, EMPTY},
+    {"ld4.sa.nt1",     M, OpMXX6aHint (4, 0, 0, 0x0e, 1), {R1, MR3}, EMPTY},
+    {"ld4.sa.nta",     M, OpMXX6aHint (4, 0, 0, 0x0e, 3), {R1, MR3}, EMPTY},
+    {"ld8.sa",         M, OpMXX6aHint (4, 0, 0, 0x0f, 0), {R1, MR3}, EMPTY},
+    {"ld8.sa.nt1",     M, OpMXX6aHint (4, 0, 0, 0x0f, 1), {R1, MR3}, EMPTY},
+    {"ld8.sa.nta",     M, OpMXX6aHint (4, 0, 0, 0x0f, 3), {R1, MR3}, EMPTY},
+    {"ld1.bias",       M, OpMXX6aHint (4, 0, 0, 0x10, 0), {R1, MR3}, EMPTY},
+    {"ld1.bias.nt1",   M, OpMXX6aHint (4, 0, 0, 0x10, 1), {R1, MR3}, EMPTY},
+    {"ld1.bias.nta",   M, OpMXX6aHint (4, 0, 0, 0x10, 3), {R1, MR3}, EMPTY},
+    {"ld2.bias",       M, OpMXX6aHint (4, 0, 0, 0x11, 0), {R1, MR3}, EMPTY},
+    {"ld2.bias.nt1",   M, OpMXX6aHint (4, 0, 0, 0x11, 1), {R1, MR3}, EMPTY},
+    {"ld2.bias.nta",   M, OpMXX6aHint (4, 0, 0, 0x11, 3), {R1, MR3}, EMPTY},
+    {"ld4.bias",       M, OpMXX6aHint (4, 0, 0, 0x12, 0), {R1, MR3}, EMPTY},
+    {"ld4.bias.nt1",   M, OpMXX6aHint (4, 0, 0, 0x12, 1), {R1, MR3}, EMPTY},
+    {"ld4.bias.nta",   M, OpMXX6aHint (4, 0, 0, 0x12, 3), {R1, MR3}, EMPTY},
+    {"ld8.bias",       M, OpMXX6aHint (4, 0, 0, 0x13, 0), {R1, MR3}, EMPTY},
+    {"ld8.bias.nt1",   M, OpMXX6aHint (4, 0, 0, 0x13, 1), {R1, MR3}, EMPTY},
+    {"ld8.bias.nta",   M, OpMXX6aHint (4, 0, 0, 0x13, 3), {R1, MR3}, EMPTY},
+    {"ld1.acq",                M, OpMXX6aHint (4, 0, 0, 0x14, 0), {R1, MR3}, EMPTY},
+    {"ld1.acq.nt1",    M, OpMXX6aHint (4, 0, 0, 0x14, 1), {R1, MR3}, EMPTY},
+    {"ld1.acq.nta",    M, OpMXX6aHint (4, 0, 0, 0x14, 3), {R1, MR3}, EMPTY},
+    {"ld2.acq",                M, OpMXX6aHint (4, 0, 0, 0x15, 0), {R1, MR3}, EMPTY},
+    {"ld2.acq.nt1",    M, OpMXX6aHint (4, 0, 0, 0x15, 1), {R1, MR3}, EMPTY},
+    {"ld2.acq.nta",    M, OpMXX6aHint (4, 0, 0, 0x15, 3), {R1, MR3}, EMPTY},
+    {"ld4.acq",                M, OpMXX6aHint (4, 0, 0, 0x16, 0), {R1, MR3}, EMPTY},
+    {"ld4.acq.nt1",    M, OpMXX6aHint (4, 0, 0, 0x16, 1), {R1, MR3}, EMPTY},
+    {"ld4.acq.nta",    M, OpMXX6aHint (4, 0, 0, 0x16, 3), {R1, MR3}, EMPTY},
+    {"ld8.acq",                M, OpMXX6aHint (4, 0, 0, 0x17, 0), {R1, MR3}, EMPTY},
+    {"ld8.acq.nt1",    M, OpMXX6aHint (4, 0, 0, 0x17, 1), {R1, MR3}, EMPTY},
+    {"ld8.acq.nta",    M, OpMXX6aHint (4, 0, 0, 0x17, 3), {R1, MR3}, EMPTY},
+    {"ld8.fill",       M, OpMXX6aHint (4, 0, 0, 0x1b, 0), {R1, MR3}, EMPTY},
+    {"ld8.fill.nt1",   M, OpMXX6aHint (4, 0, 0, 0x1b, 1), {R1, MR3}, EMPTY},
+    {"ld8.fill.nta",   M, OpMXX6aHint (4, 0, 0, 0x1b, 3), {R1, MR3}, EMPTY},
+    {"ld1.c.clr",      M, OpMXX6aHint (4, 0, 0, 0x20, 0), {R1, MR3}, EMPTY},
+    {"ld1.c.clr.nt1",  M, OpMXX6aHint (4, 0, 0, 0x20, 1), {R1, MR3}, EMPTY},
+    {"ld1.c.clr.nta",  M, OpMXX6aHint (4, 0, 0, 0x20, 3), {R1, MR3}, EMPTY},
+    {"ld2.c.clr",      M, OpMXX6aHint (4, 0, 0, 0x21, 0), {R1, MR3}, EMPTY},
+    {"ld2.c.clr.nt1",  M, OpMXX6aHint (4, 0, 0, 0x21, 1), {R1, MR3}, EMPTY},
+    {"ld2.c.clr.nta",  M, OpMXX6aHint (4, 0, 0, 0x21, 3), {R1, MR3}, EMPTY},
+    {"ld4.c.clr",      M, OpMXX6aHint (4, 0, 0, 0x22, 0), {R1, MR3}, EMPTY},
+    {"ld4.c.clr.nt1",  M, OpMXX6aHint (4, 0, 0, 0x22, 1), {R1, MR3}, EMPTY},
+    {"ld4.c.clr.nta",  M, OpMXX6aHint (4, 0, 0, 0x22, 3), {R1, MR3}, EMPTY},
+    {"ld8.c.clr",      M, OpMXX6aHint (4, 0, 0, 0x23, 0), {R1, MR3}, EMPTY},
+    {"ld8.c.clr.nt1",  M, OpMXX6aHint (4, 0, 0, 0x23, 1), {R1, MR3}, EMPTY},
+    {"ld8.c.clr.nta",  M, OpMXX6aHint (4, 0, 0, 0x23, 3), {R1, MR3}, EMPTY},
+    {"ld1.c.nc",       M, OpMXX6aHint (4, 0, 0, 0x24, 0), {R1, MR3}, EMPTY},
+    {"ld1.c.nc.nt1",   M, OpMXX6aHint (4, 0, 0, 0x24, 1), {R1, MR3}, EMPTY},
+    {"ld1.c.nc.nta",   M, OpMXX6aHint (4, 0, 0, 0x24, 3), {R1, MR3}, EMPTY},
+    {"ld2.c.nc",       M, OpMXX6aHint (4, 0, 0, 0x25, 0), {R1, MR3}, EMPTY},
+    {"ld2.c.nc.nt1",   M, OpMXX6aHint (4, 0, 0, 0x25, 1), {R1, MR3}, EMPTY},
+    {"ld2.c.nc.nta",   M, OpMXX6aHint (4, 0, 0, 0x25, 3), {R1, MR3}, EMPTY},
+    {"ld4.c.nc",       M, OpMXX6aHint (4, 0, 0, 0x26, 0), {R1, MR3}, EMPTY},
+    {"ld4.c.nc.nt1",   M, OpMXX6aHint (4, 0, 0, 0x26, 1), {R1, MR3}, EMPTY},
+    {"ld4.c.nc.nta",   M, OpMXX6aHint (4, 0, 0, 0x26, 3), {R1, MR3}, EMPTY},
+    {"ld8.c.nc",       M, OpMXX6aHint (4, 0, 0, 0x27, 0), {R1, MR3}, EMPTY},
+    {"ld8.c.nc.nt1",   M, OpMXX6aHint (4, 0, 0, 0x27, 1), {R1, MR3}, EMPTY},
+    {"ld8.c.nc.nta",   M, OpMXX6aHint (4, 0, 0, 0x27, 3), {R1, MR3}, EMPTY},
+    {"ld1.c.clr.acq",    M, OpMXX6aHint (4, 0, 0, 0x28, 0), {R1, MR3}, EMPTY},
+    {"ld1.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x28, 1), {R1, MR3}, EMPTY},
+    {"ld1.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x28, 3), {R1, MR3}, EMPTY},
+    {"ld2.c.clr.acq",    M, OpMXX6aHint (4, 0, 0, 0x29, 0), {R1, MR3}, EMPTY},
+    {"ld2.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x29, 1), {R1, MR3}, EMPTY},
+    {"ld2.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x29, 3), {R1, MR3}, EMPTY},
+    {"ld4.c.clr.acq",    M, OpMXX6aHint (4, 0, 0, 0x2a, 0), {R1, MR3}, EMPTY},
+    {"ld4.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x2a, 1), {R1, MR3}, EMPTY},
+    {"ld4.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x2a, 3), {R1, MR3}, EMPTY},
+    {"ld8.c.clr.acq",    M, OpMXX6aHint (4, 0, 0, 0x2b, 0), {R1, MR3}, EMPTY},
+    {"ld8.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x2b, 1), {R1, MR3}, EMPTY},
+    {"ld8.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x2b, 3), {R1, MR3}, EMPTY},
 
-    /* integer load w/increment by register */
-#define LDINCREG(c,h) M, OpMXX6aHint (4, 1, 0, c, h), {R1, MR3, R2}, POSTINC,
+    /* Integer load w/increment by register.  */
+#define LDINCREG(c,h) M, OpMXX6aHint (4, 1, 0, c, h), {R1, MR3, R2}, POSTINC, 0, NULL
     {"ld1",            LDINCREG (0x00, 0)},
     {"ld1.nt1",                LDINCREG (0x00, 1)},
     {"ld1.nta",                LDINCREG (0x00, 3)},
@@ -376,26 +380,26 @@ struct ia64_opcode ia64_opcodes_m[] =
     {"ld8.c.clr.acq.nta", LDINCREG (0x2b, 3)},
 #undef LDINCREG
 
-    {"st1",            M, OpMXX6aHint (4, 0, 0, 0x30, 0), {MR3, R2}},
-    {"st1.nta",                M, OpMXX6aHint (4, 0, 0, 0x30, 3), {MR3, R2}},
-    {"st2",            M, OpMXX6aHint (4, 0, 0, 0x31, 0), {MR3, R2}},
-    {"st2.nta",                M, OpMXX6aHint (4, 0, 0, 0x31, 3), {MR3, R2}},
-    {"st4",            M, OpMXX6aHint (4, 0, 0, 0x32, 0), {MR3, R2}},
-    {"st4.nta",                M, OpMXX6aHint (4, 0, 0, 0x32, 3), {MR3, R2}},
-    {"st8",            M, OpMXX6aHint (4, 0, 0, 0x33, 0), {MR3, R2}},
-    {"st8.nta",                M, OpMXX6aHint (4, 0, 0, 0x33, 3), {MR3, R2}},
-    {"st1.rel",                M, OpMXX6aHint (4, 0, 0, 0x34, 0), {MR3, R2}},
-    {"st1.rel.nta",    M, OpMXX6aHint (4, 0, 0, 0x34, 3), {MR3, R2}},
-    {"st2.rel",                M, OpMXX6aHint (4, 0, 0, 0x35, 0), {MR3, R2}},
-    {"st2.rel.nta",    M, OpMXX6aHint (4, 0, 0, 0x35, 3), {MR3, R2}},
-    {"st4.rel",                M, OpMXX6aHint (4, 0, 0, 0x36, 0), {MR3, R2}},
-    {"st4.rel.nta",    M, OpMXX6aHint (4, 0, 0, 0x36, 3), {MR3, R2}},
-    {"st8.rel",                M, OpMXX6aHint (4, 0, 0, 0x37, 0), {MR3, R2}},
-    {"st8.rel.nta",    M, OpMXX6aHint (4, 0, 0, 0x37, 3), {MR3, R2}},
-    {"st8.spill",      M, OpMXX6aHint (4, 0, 0, 0x3b, 0), {MR3, R2}},
-    {"st8.spill.nta",  M, OpMXX6aHint (4, 0, 0, 0x3b, 3), {MR3, R2}},
+    {"st1",            M, OpMXX6aHint (4, 0, 0, 0x30, 0), {MR3, R2}, EMPTY},
+    {"st1.nta",                M, OpMXX6aHint (4, 0, 0, 0x30, 3), {MR3, R2}, EMPTY},
+    {"st2",            M, OpMXX6aHint (4, 0, 0, 0x31, 0), {MR3, R2}, EMPTY},
+    {"st2.nta",                M, OpMXX6aHint (4, 0, 0, 0x31, 3), {MR3, R2}, EMPTY},
+    {"st4",            M, OpMXX6aHint (4, 0, 0, 0x32, 0), {MR3, R2}, EMPTY},
+    {"st4.nta",                M, OpMXX6aHint (4, 0, 0, 0x32, 3), {MR3, R2}, EMPTY},
+    {"st8",            M, OpMXX6aHint (4, 0, 0, 0x33, 0), {MR3, R2}, EMPTY},
+    {"st8.nta",                M, OpMXX6aHint (4, 0, 0, 0x33, 3), {MR3, R2}, EMPTY},
+    {"st1.rel",                M, OpMXX6aHint (4, 0, 0, 0x34, 0), {MR3, R2}, EMPTY},
+    {"st1.rel.nta",    M, OpMXX6aHint (4, 0, 0, 0x34, 3), {MR3, R2}, EMPTY},
+    {"st2.rel",                M, OpMXX6aHint (4, 0, 0, 0x35, 0), {MR3, R2}, EMPTY},
+    {"st2.rel.nta",    M, OpMXX6aHint (4, 0, 0, 0x35, 3), {MR3, R2}, EMPTY},
+    {"st4.rel",                M, OpMXX6aHint (4, 0, 0, 0x36, 0), {MR3, R2}, EMPTY},
+    {"st4.rel.nta",    M, OpMXX6aHint (4, 0, 0, 0x36, 3), {MR3, R2}, EMPTY},
+    {"st8.rel",                M, OpMXX6aHint (4, 0, 0, 0x37, 0), {MR3, R2}, EMPTY},
+    {"st8.rel.nta",    M, OpMXX6aHint (4, 0, 0, 0x37, 3), {MR3, R2}, EMPTY},
+    {"st8.spill",      M, OpMXX6aHint (4, 0, 0, 0x3b, 0), {MR3, R2}, EMPTY},
+    {"st8.spill.nta",  M, OpMXX6aHint (4, 0, 0, 0x3b, 3), {MR3, R2}, EMPTY},
 
-#define CMPXCHG(c,h)   M, OpMXX6aHint (4, 0, 1, c, h), {R1, MR3, R2, AR_CCV}
+#define CMPXCHG(c,h)   M, OpMXX6aHint (4, 0, 1, c, h), {R1, MR3, R2, AR_CCV}, EMPTY
     {"cmpxchg1.acq",           CMPXCHG (0x00, 0)},
     {"cmpxchg1.acq.nt1",       CMPXCHG (0x00, 1)},
     {"cmpxchg1.acq.nta",       CMPXCHG (0x00, 3)},
@@ -421,39 +425,39 @@ struct ia64_opcode ia64_opcodes_m[] =
     {"cmpxchg8.rel.nt1",       CMPXCHG (0x07, 1)},
     {"cmpxchg8.rel.nta",       CMPXCHG (0x07, 3)},
 #undef CMPXCHG
-    {"xchg1",            M, OpMXX6aHint (4, 0, 1, 0x08, 0), {R1, MR3, R2}},
-    {"xchg1.nt1",        M, OpMXX6aHint (4, 0, 1, 0x08, 1), {R1, MR3, R2}},
-    {"xchg1.nta",        M, OpMXX6aHint (4, 0, 1, 0x08, 3), {R1, MR3, R2}},
-    {"xchg2",            M, OpMXX6aHint (4, 0, 1, 0x09, 0), {R1, MR3, R2}},
-    {"xchg2.nt1",        M, OpMXX6aHint (4, 0, 1, 0x09, 1), {R1, MR3, R2}},
-    {"xchg2.nta",        M, OpMXX6aHint (4, 0, 1, 0x09, 3), {R1, MR3, R2}},
-    {"xchg4",            M, OpMXX6aHint (4, 0, 1, 0x0a, 0), {R1, MR3, R2}},
-    {"xchg4.nt1",        M, OpMXX6aHint (4, 0, 1, 0x0a, 1), {R1, MR3, R2}},
-    {"xchg4.nta",        M, OpMXX6aHint (4, 0, 1, 0x0a, 3), {R1, MR3, R2}},
-    {"xchg8",            M, OpMXX6aHint (4, 0, 1, 0x0b, 0), {R1, MR3, R2}},
-    {"xchg8.nt1",        M, OpMXX6aHint (4, 0, 1, 0x0b, 1), {R1, MR3, R2}},
-    {"xchg8.nta",        M, OpMXX6aHint (4, 0, 1, 0x0b, 3), {R1, MR3, R2}},
+    {"xchg1",            M, OpMXX6aHint (4, 0, 1, 0x08, 0), {R1, MR3, R2}, EMPTY},
+    {"xchg1.nt1",        M, OpMXX6aHint (4, 0, 1, 0x08, 1), {R1, MR3, R2}, EMPTY},
+    {"xchg1.nta",        M, OpMXX6aHint (4, 0, 1, 0x08, 3), {R1, MR3, R2}, EMPTY},
+    {"xchg2",            M, OpMXX6aHint (4, 0, 1, 0x09, 0), {R1, MR3, R2}, EMPTY},
+    {"xchg2.nt1",        M, OpMXX6aHint (4, 0, 1, 0x09, 1), {R1, MR3, R2}, EMPTY},
+    {"xchg2.nta",        M, OpMXX6aHint (4, 0, 1, 0x09, 3), {R1, MR3, R2}, EMPTY},
+    {"xchg4",            M, OpMXX6aHint (4, 0, 1, 0x0a, 0), {R1, MR3, R2}, EMPTY},
+    {"xchg4.nt1",        M, OpMXX6aHint (4, 0, 1, 0x0a, 1), {R1, MR3, R2}, EMPTY},
+    {"xchg4.nta",        M, OpMXX6aHint (4, 0, 1, 0x0a, 3), {R1, MR3, R2}, EMPTY},
+    {"xchg8",            M, OpMXX6aHint (4, 0, 1, 0x0b, 0), {R1, MR3, R2}, EMPTY},
+    {"xchg8.nt1",        M, OpMXX6aHint (4, 0, 1, 0x0b, 1), {R1, MR3, R2}, EMPTY},
+    {"xchg8.nta",        M, OpMXX6aHint (4, 0, 1, 0x0b, 3), {R1, MR3, R2}, EMPTY},
 
-    {"fetchadd4.acq",    M, OpMXX6aHint (4, 0, 1, 0x12, 0), {R1, MR3, INC3}},
-    {"fetchadd4.acq.nt1", M, OpMXX6aHint (4, 0, 1, 0x12, 1), {R1, MR3, INC3}},
-    {"fetchadd4.acq.nta", M, OpMXX6aHint (4, 0, 1, 0x12, 3), {R1, MR3, INC3}},
-    {"fetchadd8.acq",    M, OpMXX6aHint (4, 0, 1, 0x13, 0), {R1, MR3, INC3}},
-    {"fetchadd8.acq.nt1", M, OpMXX6aHint (4, 0, 1, 0x13, 1), {R1, MR3, INC3}},
-    {"fetchadd8.acq.nta", M, OpMXX6aHint (4, 0, 1, 0x13, 3), {R1, MR3, INC3}},
-    {"fetchadd4.rel",    M, OpMXX6aHint (4, 0, 1, 0x16, 0), {R1, MR3, INC3}},
-    {"fetchadd4.rel.nt1", M, OpMXX6aHint (4, 0, 1, 0x16, 1), {R1, MR3, INC3}},
-    {"fetchadd4.rel.nta", M, OpMXX6aHint (4, 0, 1, 0x16, 3), {R1, MR3, INC3}},
-    {"fetchadd8.rel",    M, OpMXX6aHint (4, 0, 1, 0x17, 0), {R1, MR3, INC3}},
-    {"fetchadd8.rel.nt1", M, OpMXX6aHint (4, 0, 1, 0x17, 1), {R1, MR3, INC3}},
-    {"fetchadd8.rel.nta", M, OpMXX6aHint (4, 0, 1, 0x17, 3), {R1, MR3, INC3}},
+    {"fetchadd4.acq",    M, OpMXX6aHint (4, 0, 1, 0x12, 0), {R1, MR3, INC3}, EMPTY},
+    {"fetchadd4.acq.nt1", M, OpMXX6aHint (4, 0, 1, 0x12, 1), {R1, MR3, INC3}, EMPTY},
+    {"fetchadd4.acq.nta", M, OpMXX6aHint (4, 0, 1, 0x12, 3), {R1, MR3, INC3}, EMPTY},
+    {"fetchadd8.acq",    M, OpMXX6aHint (4, 0, 1, 0x13, 0), {R1, MR3, INC3}, EMPTY},
+    {"fetchadd8.acq.nt1", M, OpMXX6aHint (4, 0, 1, 0x13, 1), {R1, MR3, INC3}, EMPTY},
+    {"fetchadd8.acq.nta", M, OpMXX6aHint (4, 0, 1, 0x13, 3), {R1, MR3, INC3}, EMPTY},
+    {"fetchadd4.rel",    M, OpMXX6aHint (4, 0, 1, 0x16, 0), {R1, MR3, INC3}, EMPTY},
+    {"fetchadd4.rel.nt1", M, OpMXX6aHint (4, 0, 1, 0x16, 1), {R1, MR3, INC3}, EMPTY},
+    {"fetchadd4.rel.nta", M, OpMXX6aHint (4, 0, 1, 0x16, 3), {R1, MR3, INC3}, EMPTY},
+    {"fetchadd8.rel",    M, OpMXX6aHint (4, 0, 1, 0x17, 0), {R1, MR3, INC3}, EMPTY},
+    {"fetchadd8.rel.nt1", M, OpMXX6aHint (4, 0, 1, 0x17, 1), {R1, MR3, INC3}, EMPTY},
+    {"fetchadd8.rel.nta", M, OpMXX6aHint (4, 0, 1, 0x17, 3), {R1, MR3, INC3}, EMPTY},
 
-    {"getf.sig",         M, OpMXX6a (4, 0, 1, 0x1c), {R1, F2}},
-    {"getf.exp",         M, OpMXX6a (4, 0, 1, 0x1d), {R1, F2}},
-    {"getf.s",           M, OpMXX6a (4, 0, 1, 0x1e), {R1, F2}},
-    {"getf.d",           M, OpMXX6a (4, 0, 1, 0x1f), {R1, F2}},
+    {"getf.sig",         M, OpMXX6a (4, 0, 1, 0x1c), {R1, F2}, EMPTY},
+    {"getf.exp",         M, OpMXX6a (4, 0, 1, 0x1d), {R1, F2}, EMPTY},
+    {"getf.s",           M, OpMXX6a (4, 0, 1, 0x1e), {R1, F2}, EMPTY},
+    {"getf.d",           M, OpMXX6a (4, 0, 1, 0x1f), {R1, F2}, EMPTY},
 
-    /* integer load w/increment by immediate */
-#define LDINCIMMED(c,h) M, OpX6aHint (5, c, h), {R1, MR3, IMM9b}, POSTINC
+    /* Integer load w/increment by immediate.  */
+#define LDINCIMMED(c,h) M, OpX6aHint (5, c, h), {R1, MR3, IMM9b}, POSTINC, 0, NULL
     {"ld1",            LDINCIMMED (0x00, 0)},
     {"ld1.nt1",                LDINCIMMED (0x00, 1)},
     {"ld1.nta",                LDINCIMMED (0x00, 3)},
@@ -567,8 +571,8 @@ struct ia64_opcode ia64_opcodes_m[] =
     {"ld8.c.clr.acq.nta", LDINCIMMED (0x2b, 3)},
 #undef LDINCIMMED
 
-    /* store w/increment by immediate */
-#define STINCIMMED(c,h) M, OpX6aHint (5, c, h), {MR3, R2, IMM9a}, POSTINC
+    /* Store w/increment by immediate.  */
+#define STINCIMMED(c,h) M, OpX6aHint (5, c, h), {MR3, R2, IMM9a}, POSTINC, 0, NULL
     {"st1",            STINCIMMED (0x30, 0)},
     {"st1.nta",                STINCIMMED (0x30, 3)},
     {"st2",            STINCIMMED (0x31, 0)},
@@ -589,85 +593,85 @@ struct ia64_opcode ia64_opcodes_m[] =
     {"st8.spill.nta",  STINCIMMED (0x3b, 3)},
 #undef STINCIMMED
 
-    /* floating-point load */
-    {"ldfs",           M, OpMXX6aHint (6, 0, 0, 0x02, 0), {F1, MR3}},
-    {"ldfs.nt1",       M, OpMXX6aHint (6, 0, 0, 0x02, 1), {F1, MR3}},
-    {"ldfs.nta",       M, OpMXX6aHint (6, 0, 0, 0x02, 3), {F1, MR3}},
-    {"ldfd",           M, OpMXX6aHint (6, 0, 0, 0x03, 0), {F1, MR3}},
-    {"ldfd.nt1",       M, OpMXX6aHint (6, 0, 0, 0x03, 1), {F1, MR3}},
-    {"ldfd.nta",       M, OpMXX6aHint (6, 0, 0, 0x03, 3), {F1, MR3}},
-    {"ldf8",           M, OpMXX6aHint (6, 0, 0, 0x01, 0), {F1, MR3}},
-    {"ldf8.nt1",       M, OpMXX6aHint (6, 0, 0, 0x01, 1), {F1, MR3}},
-    {"ldf8.nta",       M, OpMXX6aHint (6, 0, 0, 0x01, 3), {F1, MR3}},
-    {"ldfe",           M, OpMXX6aHint (6, 0, 0, 0x00, 0), {F1, MR3}},
-    {"ldfe.nt1",       M, OpMXX6aHint (6, 0, 0, 0x00, 1), {F1, MR3}},
-    {"ldfe.nta",       M, OpMXX6aHint (6, 0, 0, 0x00, 3), {F1, MR3}},
-    {"ldfs.s",         M, OpMXX6aHint (6, 0, 0, 0x06, 0), {F1, MR3}},
-    {"ldfs.s.nt1",     M, OpMXX6aHint (6, 0, 0, 0x06, 1), {F1, MR3}},
-    {"ldfs.s.nta",     M, OpMXX6aHint (6, 0, 0, 0x06, 3), {F1, MR3}},
-    {"ldfd.s",         M, OpMXX6aHint (6, 0, 0, 0x07, 0), {F1, MR3}},
-    {"ldfd.s.nt1",     M, OpMXX6aHint (6, 0, 0, 0x07, 1), {F1, MR3}},
-    {"ldfd.s.nta",     M, OpMXX6aHint (6, 0, 0, 0x07, 3), {F1, MR3}},
-    {"ldf8.s",         M, OpMXX6aHint (6, 0, 0, 0x05, 0), {F1, MR3}},
-    {"ldf8.s.nt1",     M, OpMXX6aHint (6, 0, 0, 0x05, 1), {F1, MR3}},
-    {"ldf8.s.nta",     M, OpMXX6aHint (6, 0, 0, 0x05, 3), {F1, MR3}},
-    {"ldfe.s",         M, OpMXX6aHint (6, 0, 0, 0x04, 0), {F1, MR3}},
-    {"ldfe.s.nt1",     M, OpMXX6aHint (6, 0, 0, 0x04, 1), {F1, MR3}},
-    {"ldfe.s.nta",     M, OpMXX6aHint (6, 0, 0, 0x04, 3), {F1, MR3}},
-    {"ldfs.a",         M, OpMXX6aHint (6, 0, 0, 0x0a, 0), {F1, MR3}},
-    {"ldfs.a.nt1",     M, OpMXX6aHint (6, 0, 0, 0x0a, 1), {F1, MR3}},
-    {"ldfs.a.nta",     M, OpMXX6aHint (6, 0, 0, 0x0a, 3), {F1, MR3}},
-    {"ldfd.a",         M, OpMXX6aHint (6, 0, 0, 0x0b, 0), {F1, MR3}},
-    {"ldfd.a.nt1",     M, OpMXX6aHint (6, 0, 0, 0x0b, 1), {F1, MR3}},
-    {"ldfd.a.nta",     M, OpMXX6aHint (6, 0, 0, 0x0b, 3), {F1, MR3}},
-    {"ldf8.a",         M, OpMXX6aHint (6, 0, 0, 0x09, 0), {F1, MR3}},
-    {"ldf8.a.nt1",     M, OpMXX6aHint (6, 0, 0, 0x09, 1), {F1, MR3}},
-    {"ldf8.a.nta",     M, OpMXX6aHint (6, 0, 0, 0x09, 3), {F1, MR3}},
-    {"ldfe.a",         M, OpMXX6aHint (6, 0, 0, 0x08, 0), {F1, MR3}},
-    {"ldfe.a.nt1",     M, OpMXX6aHint (6, 0, 0, 0x08, 1), {F1, MR3}},
-    {"ldfe.a.nta",     M, OpMXX6aHint (6, 0, 0, 0x08, 3), {F1, MR3}},
-    {"ldfs.sa",                M, OpMXX6aHint (6, 0, 0, 0x0e, 0), {F1, MR3}},
-    {"ldfs.sa.nt1",    M, OpMXX6aHint (6, 0, 0, 0x0e, 1), {F1, MR3}},
-    {"ldfs.sa.nta",    M, OpMXX6aHint (6, 0, 0, 0x0e, 3), {F1, MR3}},
-    {"ldfd.sa",                M, OpMXX6aHint (6, 0, 0, 0x0f, 0), {F1, MR3}},
-    {"ldfd.sa.nt1",    M, OpMXX6aHint (6, 0, 0, 0x0f, 1), {F1, MR3}},
-    {"ldfd.sa.nta",    M, OpMXX6aHint (6, 0, 0, 0x0f, 3), {F1, MR3}},
-    {"ldf8.sa",                M, OpMXX6aHint (6, 0, 0, 0x0d, 0), {F1, MR3}},
-    {"ldf8.sa.nt1",    M, OpMXX6aHint (6, 0, 0, 0x0d, 1), {F1, MR3}},
-    {"ldf8.sa.nta",    M, OpMXX6aHint (6, 0, 0, 0x0d, 3), {F1, MR3}},
-    {"ldfe.sa",                M, OpMXX6aHint (6, 0, 0, 0x0c, 0), {F1, MR3}},
-    {"ldfe.sa.nt1",    M, OpMXX6aHint (6, 0, 0, 0x0c, 1), {F1, MR3}},
-    {"ldfe.sa.nta",    M, OpMXX6aHint (6, 0, 0, 0x0c, 3), {F1, MR3}},
-    {"ldf.fill",       M, OpMXX6aHint (6, 0, 0, 0x1b, 0), {F1, MR3}},
-    {"ldf.fill.nt1",   M, OpMXX6aHint (6, 0, 0, 0x1b, 1), {F1, MR3}},
-    {"ldf.fill.nta",   M, OpMXX6aHint (6, 0, 0, 0x1b, 3), {F1, MR3}},
-    {"ldfs.c.clr",     M, OpMXX6aHint (6, 0, 0, 0x22, 0), {F1, MR3}},
-    {"ldfs.c.clr.nt1", M, OpMXX6aHint (6, 0, 0, 0x22, 1), {F1, MR3}},
-    {"ldfs.c.clr.nta", M, OpMXX6aHint (6, 0, 0, 0x22, 3), {F1, MR3}},
-    {"ldfd.c.clr",     M, OpMXX6aHint (6, 0, 0, 0x23, 0), {F1, MR3}},
-    {"ldfd.c.clr.nt1", M, OpMXX6aHint (6, 0, 0, 0x23, 1), {F1, MR3}},
-    {"ldfd.c.clr.nta", M, OpMXX6aHint (6, 0, 0, 0x23, 3), {F1, MR3}},
-    {"ldf8.c.clr",     M, OpMXX6aHint (6, 0, 0, 0x21, 0), {F1, MR3}},
-    {"ldf8.c.clr.nt1", M, OpMXX6aHint (6, 0, 0, 0x21, 1), {F1, MR3}},
-    {"ldf8.c.clr.nta", M, OpMXX6aHint (6, 0, 0, 0x21, 3), {F1, MR3}},
-    {"ldfe.c.clr",     M, OpMXX6aHint (6, 0, 0, 0x20, 0), {F1, MR3}},
-    {"ldfe.c.clr.nt1", M, OpMXX6aHint (6, 0, 0, 0x20, 1), {F1, MR3}},
-    {"ldfe.c.clr.nta", M, OpMXX6aHint (6, 0, 0, 0x20, 3), {F1, MR3}},
-    {"ldfs.c.nc",      M, OpMXX6aHint (6, 0, 0, 0x26, 0), {F1, MR3}},
-    {"ldfs.c.nc.nt1",  M, OpMXX6aHint (6, 0, 0, 0x26, 1), {F1, MR3}},
-    {"ldfs.c.nc.nta",  M, OpMXX6aHint (6, 0, 0, 0x26, 3), {F1, MR3}},
-    {"ldfd.c.nc",      M, OpMXX6aHint (6, 0, 0, 0x27, 0), {F1, MR3}},
-    {"ldfd.c.nc.nt1",  M, OpMXX6aHint (6, 0, 0, 0x27, 1), {F1, MR3}},
-    {"ldfd.c.nc.nta",  M, OpMXX6aHint (6, 0, 0, 0x27, 3), {F1, MR3}},
-    {"ldf8.c.nc",      M, OpMXX6aHint (6, 0, 0, 0x25, 0), {F1, MR3}},
-    {"ldf8.c.nc.nt1",  M, OpMXX6aHint (6, 0, 0, 0x25, 1), {F1, MR3}},
-    {"ldf8.c.nc.nta",  M, OpMXX6aHint (6, 0, 0, 0x25, 3), {F1, MR3}},
-    {"ldfe.c.nc",      M, OpMXX6aHint (6, 0, 0, 0x24, 0), {F1, MR3}},
-    {"ldfe.c.nc.nt1",  M, OpMXX6aHint (6, 0, 0, 0x24, 1), {F1, MR3}},
-    {"ldfe.c.nc.nta",  M, OpMXX6aHint (6, 0, 0, 0x24, 3), {F1, MR3}},
+    /* Floating-point load.  */
+    {"ldfs",           M, OpMXX6aHint (6, 0, 0, 0x02, 0), {F1, MR3}, EMPTY},
+    {"ldfs.nt1",       M, OpMXX6aHint (6, 0, 0, 0x02, 1), {F1, MR3}, EMPTY},
+    {"ldfs.nta",       M, OpMXX6aHint (6, 0, 0, 0x02, 3), {F1, MR3}, EMPTY},
+    {"ldfd",           M, OpMXX6aHint (6, 0, 0, 0x03, 0), {F1, MR3}, EMPTY},
+    {"ldfd.nt1",       M, OpMXX6aHint (6, 0, 0, 0x03, 1), {F1, MR3}, EMPTY},
+    {"ldfd.nta",       M, OpMXX6aHint (6, 0, 0, 0x03, 3), {F1, MR3}, EMPTY},
+    {"ldf8",           M, OpMXX6aHint (6, 0, 0, 0x01, 0), {F1, MR3}, EMPTY},
+    {"ldf8.nt1",       M, OpMXX6aHint (6, 0, 0, 0x01, 1), {F1, MR3}, EMPTY},
+    {"ldf8.nta",       M, OpMXX6aHint (6, 0, 0, 0x01, 3), {F1, MR3}, EMPTY},
+    {"ldfe",           M, OpMXX6aHint (6, 0, 0, 0x00, 0), {F1, MR3}, EMPTY},
+    {"ldfe.nt1",       M, OpMXX6aHint (6, 0, 0, 0x00, 1), {F1, MR3}, EMPTY},
+    {"ldfe.nta",       M, OpMXX6aHint (6, 0, 0, 0x00, 3), {F1, MR3}, EMPTY},
+    {"ldfs.s",         M, OpMXX6aHint (6, 0, 0, 0x06, 0), {F1, MR3}, EMPTY},
+    {"ldfs.s.nt1",     M, OpMXX6aHint (6, 0, 0, 0x06, 1), {F1, MR3}, EMPTY},
+    {"ldfs.s.nta",     M, OpMXX6aHint (6, 0, 0, 0x06, 3), {F1, MR3}, EMPTY},
+    {"ldfd.s",         M, OpMXX6aHint (6, 0, 0, 0x07, 0), {F1, MR3}, EMPTY},
+    {"ldfd.s.nt1",     M, OpMXX6aHint (6, 0, 0, 0x07, 1), {F1, MR3}, EMPTY},
+    {"ldfd.s.nta",     M, OpMXX6aHint (6, 0, 0, 0x07, 3), {F1, MR3}, EMPTY},
+    {"ldf8.s",         M, OpMXX6aHint (6, 0, 0, 0x05, 0), {F1, MR3}, EMPTY},
+    {"ldf8.s.nt1",     M, OpMXX6aHint (6, 0, 0, 0x05, 1), {F1, MR3}, EMPTY},
+    {"ldf8.s.nta",     M, OpMXX6aHint (6, 0, 0, 0x05, 3), {F1, MR3}, EMPTY},
+    {"ldfe.s",         M, OpMXX6aHint (6, 0, 0, 0x04, 0), {F1, MR3}, EMPTY},
+    {"ldfe.s.nt1",     M, OpMXX6aHint (6, 0, 0, 0x04, 1), {F1, MR3}, EMPTY},
+    {"ldfe.s.nta",     M, OpMXX6aHint (6, 0, 0, 0x04, 3), {F1, MR3}, EMPTY},
+    {"ldfs.a",         M, OpMXX6aHint (6, 0, 0, 0x0a, 0), {F1, MR3}, EMPTY},
+    {"ldfs.a.nt1",     M, OpMXX6aHint (6, 0, 0, 0x0a, 1), {F1, MR3}, EMPTY},
+    {"ldfs.a.nta",     M, OpMXX6aHint (6, 0, 0, 0x0a, 3), {F1, MR3}, EMPTY},
+    {"ldfd.a",         M, OpMXX6aHint (6, 0, 0, 0x0b, 0), {F1, MR3}, EMPTY},
+    {"ldfd.a.nt1",     M, OpMXX6aHint (6, 0, 0, 0x0b, 1), {F1, MR3}, EMPTY},
+    {"ldfd.a.nta",     M, OpMXX6aHint (6, 0, 0, 0x0b, 3), {F1, MR3}, EMPTY},
+    {"ldf8.a",         M, OpMXX6aHint (6, 0, 0, 0x09, 0), {F1, MR3}, EMPTY},
+    {"ldf8.a.nt1",     M, OpMXX6aHint (6, 0, 0, 0x09, 1), {F1, MR3}, EMPTY},
+    {"ldf8.a.nta",     M, OpMXX6aHint (6, 0, 0, 0x09, 3), {F1, MR3}, EMPTY},
+    {"ldfe.a",         M, OpMXX6aHint (6, 0, 0, 0x08, 0), {F1, MR3}, EMPTY},
+    {"ldfe.a.nt1",     M, OpMXX6aHint (6, 0, 0, 0x08, 1), {F1, MR3}, EMPTY},
+    {"ldfe.a.nta",     M, OpMXX6aHint (6, 0, 0, 0x08, 3), {F1, MR3}, EMPTY},
+    {"ldfs.sa",                M, OpMXX6aHint (6, 0, 0, 0x0e, 0), {F1, MR3}, EMPTY},
+    {"ldfs.sa.nt1",    M, OpMXX6aHint (6, 0, 0, 0x0e, 1), {F1, MR3}, EMPTY},
+    {"ldfs.sa.nta",    M, OpMXX6aHint (6, 0, 0, 0x0e, 3), {F1, MR3}, EMPTY},
+    {"ldfd.sa",                M, OpMXX6aHint (6, 0, 0, 0x0f, 0), {F1, MR3}, EMPTY},
+    {"ldfd.sa.nt1",    M, OpMXX6aHint (6, 0, 0, 0x0f, 1), {F1, MR3}, EMPTY},
+    {"ldfd.sa.nta",    M, OpMXX6aHint (6, 0, 0, 0x0f, 3), {F1, MR3}, EMPTY},
+    {"ldf8.sa",                M, OpMXX6aHint (6, 0, 0, 0x0d, 0), {F1, MR3}, EMPTY},
+    {"ldf8.sa.nt1",    M, OpMXX6aHint (6, 0, 0, 0x0d, 1), {F1, MR3}, EMPTY},
+    {"ldf8.sa.nta",    M, OpMXX6aHint (6, 0, 0, 0x0d, 3), {F1, MR3}, EMPTY},
+    {"ldfe.sa",                M, OpMXX6aHint (6, 0, 0, 0x0c, 0), {F1, MR3}, EMPTY},
+    {"ldfe.sa.nt1",    M, OpMXX6aHint (6, 0, 0, 0x0c, 1), {F1, MR3}, EMPTY},
+    {"ldfe.sa.nta",    M, OpMXX6aHint (6, 0, 0, 0x0c, 3), {F1, MR3}, EMPTY},
+    {"ldf.fill",       M, OpMXX6aHint (6, 0, 0, 0x1b, 0), {F1, MR3}, EMPTY},
+    {"ldf.fill.nt1",   M, OpMXX6aHint (6, 0, 0, 0x1b, 1), {F1, MR3}, EMPTY},
+    {"ldf.fill.nta",   M, OpMXX6aHint (6, 0, 0, 0x1b, 3), {F1, MR3}, EMPTY},
+    {"ldfs.c.clr",     M, OpMXX6aHint (6, 0, 0, 0x22, 0), {F1, MR3}, EMPTY},
+    {"ldfs.c.clr.nt1", M, OpMXX6aHint (6, 0, 0, 0x22, 1), {F1, MR3}, EMPTY},
+    {"ldfs.c.clr.nta", M, OpMXX6aHint (6, 0, 0, 0x22, 3), {F1, MR3}, EMPTY},
+    {"ldfd.c.clr",     M, OpMXX6aHint (6, 0, 0, 0x23, 0), {F1, MR3}, EMPTY},
+    {"ldfd.c.clr.nt1", M, OpMXX6aHint (6, 0, 0, 0x23, 1), {F1, MR3}, EMPTY},
+    {"ldfd.c.clr.nta", M, OpMXX6aHint (6, 0, 0, 0x23, 3), {F1, MR3}, EMPTY},
+    {"ldf8.c.clr",     M, OpMXX6aHint (6, 0, 0, 0x21, 0), {F1, MR3}, EMPTY},
+    {"ldf8.c.clr.nt1", M, OpMXX6aHint (6, 0, 0, 0x21, 1), {F1, MR3}, EMPTY},
+    {"ldf8.c.clr.nta", M, OpMXX6aHint (6, 0, 0, 0x21, 3), {F1, MR3}, EMPTY},
+    {"ldfe.c.clr",     M, OpMXX6aHint (6, 0, 0, 0x20, 0), {F1, MR3}, EMPTY},
+    {"ldfe.c.clr.nt1", M, OpMXX6aHint (6, 0, 0, 0x20, 1), {F1, MR3}, EMPTY},
+    {"ldfe.c.clr.nta", M, OpMXX6aHint (6, 0, 0, 0x20, 3), {F1, MR3}, EMPTY},
+    {"ldfs.c.nc",      M, OpMXX6aHint (6, 0, 0, 0x26, 0), {F1, MR3}, EMPTY},
+    {"ldfs.c.nc.nt1",  M, OpMXX6aHint (6, 0, 0, 0x26, 1), {F1, MR3}, EMPTY},
+    {"ldfs.c.nc.nta",  M, OpMXX6aHint (6, 0, 0, 0x26, 3), {F1, MR3}, EMPTY},
+    {"ldfd.c.nc",      M, OpMXX6aHint (6, 0, 0, 0x27, 0), {F1, MR3}, EMPTY},
+    {"ldfd.c.nc.nt1",  M, OpMXX6aHint (6, 0, 0, 0x27, 1), {F1, MR3}, EMPTY},
+    {"ldfd.c.nc.nta",  M, OpMXX6aHint (6, 0, 0, 0x27, 3), {F1, MR3}, EMPTY},
+    {"ldf8.c.nc",      M, OpMXX6aHint (6, 0, 0, 0x25, 0), {F1, MR3}, EMPTY},
+    {"ldf8.c.nc.nt1",  M, OpMXX6aHint (6, 0, 0, 0x25, 1), {F1, MR3}, EMPTY},
+    {"ldf8.c.nc.nta",  M, OpMXX6aHint (6, 0, 0, 0x25, 3), {F1, MR3}, EMPTY},
+    {"ldfe.c.nc",      M, OpMXX6aHint (6, 0, 0, 0x24, 0), {F1, MR3}, EMPTY},
+    {"ldfe.c.nc.nt1",  M, OpMXX6aHint (6, 0, 0, 0x24, 1), {F1, MR3}, EMPTY},
+    {"ldfe.c.nc.nta",  M, OpMXX6aHint (6, 0, 0, 0x24, 3), {F1, MR3}, EMPTY},
 
-    /* floating-point load w/increment by register */
-#define FLDINCREG(c,h) M, OpMXX6aHint (6, 1, 0, c, h), {F1, MR3, R2}, POSTINC
+    /* Floating-point load w/increment by register.  */
+#define FLDINCREG(c,h) M, OpMXX6aHint (6, 1, 0, c, h), {F1, MR3, R2}, POSTINC, 0, NULL
     {"ldfs",           FLDINCREG (0x02, 0)},
     {"ldfs.nt1",       FLDINCREG (0x02, 1)},
     {"ldfs.nta",       FLDINCREG (0x02, 3)},
@@ -745,76 +749,76 @@ struct ia64_opcode ia64_opcodes_m[] =
     {"ldfe.c.nc.nta",  FLDINCREG (0x24, 3)},
 #undef FLDINCREG
 
-    /* floating-point store */
-    {"stfs",           M, OpMXX6aHint (6, 0, 0, 0x32, 0), {MR3, F2}},
-    {"stfs.nta",       M, OpMXX6aHint (6, 0, 0, 0x32, 3), {MR3, F2}},
-    {"stfd",           M, OpMXX6aHint (6, 0, 0, 0x33, 0), {MR3, F2}},
-    {"stfd.nta",       M, OpMXX6aHint (6, 0, 0, 0x33, 3), {MR3, F2}},
-    {"stf8",           M, OpMXX6aHint (6, 0, 0, 0x31, 0), {MR3, F2}},
-    {"stf8.nta",       M, OpMXX6aHint (6, 0, 0, 0x31, 3), {MR3, F2}},
-    {"stfe",           M, OpMXX6aHint (6, 0, 0, 0x30, 0), {MR3, F2}},
-    {"stfe.nta",       M, OpMXX6aHint (6, 0, 0, 0x30, 3), {MR3, F2}},
-    {"stf.spill",      M, OpMXX6aHint (6, 0, 0, 0x3b, 0), {MR3, F2}},
-    {"stf.spill.nta",  M, OpMXX6aHint (6, 0, 0, 0x3b, 3), {MR3, F2}},
+    /* Floating-point store.  */
+    {"stfs",           M, OpMXX6aHint (6, 0, 0, 0x32, 0), {MR3, F2}, EMPTY},
+    {"stfs.nta",       M, OpMXX6aHint (6, 0, 0, 0x32, 3), {MR3, F2}, EMPTY},
+    {"stfd",           M, OpMXX6aHint (6, 0, 0, 0x33, 0), {MR3, F2}, EMPTY},
+    {"stfd.nta",       M, OpMXX6aHint (6, 0, 0, 0x33, 3), {MR3, F2}, EMPTY},
+    {"stf8",           M, OpMXX6aHint (6, 0, 0, 0x31, 0), {MR3, F2}, EMPTY},
+    {"stf8.nta",       M, OpMXX6aHint (6, 0, 0, 0x31, 3), {MR3, F2}, EMPTY},
+    {"stfe",           M, OpMXX6aHint (6, 0, 0, 0x30, 0), {MR3, F2}, EMPTY},
+    {"stfe.nta",       M, OpMXX6aHint (6, 0, 0, 0x30, 3), {MR3, F2}, EMPTY},
+    {"stf.spill",      M, OpMXX6aHint (6, 0, 0, 0x3b, 0), {MR3, F2}, EMPTY},
+    {"stf.spill.nta",  M, OpMXX6aHint (6, 0, 0, 0x3b, 3), {MR3, F2}, EMPTY},
 
-    /* floating-point load pair */
-    {"ldfps",          M2, OpMXX6aHint (6, 0, 1, 0x02, 0), {F1, F2, MR3}},
-    {"ldfps.nt1",      M2, OpMXX6aHint (6, 0, 1, 0x02, 1), {F1, F2, MR3}},
-    {"ldfps.nta",      M2, OpMXX6aHint (6, 0, 1, 0x02, 3), {F1, F2, MR3}},
-    {"ldfpd",          M2, OpMXX6aHint (6, 0, 1, 0x03, 0), {F1, F2, MR3}},
-    {"ldfpd.nt1",      M2, OpMXX6aHint (6, 0, 1, 0x03, 1), {F1, F2, MR3}},
-    {"ldfpd.nta",      M2, OpMXX6aHint (6, 0, 1, 0x03, 3), {F1, F2, MR3}},
-    {"ldfp8",          M2, OpMXX6aHint (6, 0, 1, 0x01, 0), {F1, F2, MR3}},
-    {"ldfp8.nt1",      M2, OpMXX6aHint (6, 0, 1, 0x01, 1), {F1, F2, MR3}},
-    {"ldfp8.nta",      M2, OpMXX6aHint (6, 0, 1, 0x01, 3), {F1, F2, MR3}},
-    {"ldfps.s",                M2, OpMXX6aHint (6, 0, 1, 0x06, 0), {F1, F2, MR3}},
-    {"ldfps.s.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x06, 1), {F1, F2, MR3}},
-    {"ldfps.s.nta",    M2, OpMXX6aHint (6, 0, 1, 0x06, 3), {F1, F2, MR3}},
-    {"ldfpd.s",                M2, OpMXX6aHint (6, 0, 1, 0x07, 0), {F1, F2, MR3}},
-    {"ldfpd.s.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x07, 1), {F1, F2, MR3}},
-    {"ldfpd.s.nta",    M2, OpMXX6aHint (6, 0, 1, 0x07, 3), {F1, F2, MR3}},
-    {"ldfp8.s",                M2, OpMXX6aHint (6, 0, 1, 0x05, 0), {F1, F2, MR3}},
-    {"ldfp8.s.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x05, 1), {F1, F2, MR3}},
-    {"ldfp8.s.nta",    M2, OpMXX6aHint (6, 0, 1, 0x05, 3), {F1, F2, MR3}},
-    {"ldfps.a",                M2, OpMXX6aHint (6, 0, 1, 0x0a, 0), {F1, F2, MR3}},
-    {"ldfps.a.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x0a, 1), {F1, F2, MR3}},
-    {"ldfps.a.nta",    M2, OpMXX6aHint (6, 0, 1, 0x0a, 3), {F1, F2, MR3}},
-    {"ldfpd.a",                M2, OpMXX6aHint (6, 0, 1, 0x0b, 0), {F1, F2, MR3}},
-    {"ldfpd.a.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x0b, 1), {F1, F2, MR3}},
-    {"ldfpd.a.nta",    M2, OpMXX6aHint (6, 0, 1, 0x0b, 3), {F1, F2, MR3}},
-    {"ldfp8.a",                M2, OpMXX6aHint (6, 0, 1, 0x09, 0), {F1, F2, MR3}},
-    {"ldfp8.a.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x09, 1), {F1, F2, MR3}},
-    {"ldfp8.a.nta",    M2, OpMXX6aHint (6, 0, 1, 0x09, 3), {F1, F2, MR3}},
-    {"ldfps.sa",       M2, OpMXX6aHint (6, 0, 1, 0x0e, 0), {F1, F2, MR3}},
-    {"ldfps.sa.nt1",   M2, OpMXX6aHint (6, 0, 1, 0x0e, 1), {F1, F2, MR3}},
-    {"ldfps.sa.nta",   M2, OpMXX6aHint (6, 0, 1, 0x0e, 3), {F1, F2, MR3}},
-    {"ldfpd.sa",       M2, OpMXX6aHint (6, 0, 1, 0x0f, 0), {F1, F2, MR3}},
-    {"ldfpd.sa.nt1",   M2, OpMXX6aHint (6, 0, 1, 0x0f, 1), {F1, F2, MR3}},
-    {"ldfpd.sa.nta",   M2, OpMXX6aHint (6, 0, 1, 0x0f, 3), {F1, F2, MR3}},
-    {"ldfp8.sa",       M2, OpMXX6aHint (6, 0, 1, 0x0d, 0), {F1, F2, MR3}},
-    {"ldfp8.sa.nt1",   M2, OpMXX6aHint (6, 0, 1, 0x0d, 1), {F1, F2, MR3}},
-    {"ldfp8.sa.nta",   M2, OpMXX6aHint (6, 0, 1, 0x0d, 3), {F1, F2, MR3}},
-    {"ldfps.c.clr",    M2, OpMXX6aHint (6, 0, 1, 0x22, 0), {F1, F2, MR3}},
-    {"ldfps.c.clr.nt1",        M2, OpMXX6aHint (6, 0, 1, 0x22, 1), {F1, F2, MR3}},
-    {"ldfps.c.clr.nta",        M2, OpMXX6aHint (6, 0, 1, 0x22, 3), {F1, F2, MR3}},
-    {"ldfpd.c.clr",    M2, OpMXX6aHint (6, 0, 1, 0x23, 0), {F1, F2, MR3}},
-    {"ldfpd.c.clr.nt1",        M2, OpMXX6aHint (6, 0, 1, 0x23, 1), {F1, F2, MR3}},
-    {"ldfpd.c.clr.nta",        M2, OpMXX6aHint (6, 0, 1, 0x23, 3), {F1, F2, MR3}},
-    {"ldfp8.c.clr",    M2, OpMXX6aHint (6, 0, 1, 0x21, 0), {F1, F2, MR3}},
-    {"ldfp8.c.clr.nt1",        M2, OpMXX6aHint (6, 0, 1, 0x21, 1), {F1, F2, MR3}},
-    {"ldfp8.c.clr.nta",        M2, OpMXX6aHint (6, 0, 1, 0x21, 3), {F1, F2, MR3}},
-    {"ldfps.c.nc",     M2, OpMXX6aHint (6, 0, 1, 0x26, 0), {F1, F2, MR3}},
-    {"ldfps.c.nc.nt1", M2, OpMXX6aHint (6, 0, 1, 0x26, 1), {F1, F2, MR3}},
-    {"ldfps.c.nc.nta", M2, OpMXX6aHint (6, 0, 1, 0x26, 3), {F1, F2, MR3}},
-    {"ldfpd.c.nc",     M2, OpMXX6aHint (6, 0, 1, 0x27, 0), {F1, F2, MR3}},
-    {"ldfpd.c.nc.nt1", M2, OpMXX6aHint (6, 0, 1, 0x27, 1), {F1, F2, MR3}},
-    {"ldfpd.c.nc.nta", M2, OpMXX6aHint (6, 0, 1, 0x27, 3), {F1, F2, MR3}},
-    {"ldfp8.c.nc",     M2, OpMXX6aHint (6, 0, 1, 0x25, 0), {F1, F2, MR3}},
-    {"ldfp8.c.nc.nt1", M2, OpMXX6aHint (6, 0, 1, 0x25, 1), {F1, F2, MR3}},
-    {"ldfp8.c.nc.nta", M2, OpMXX6aHint (6, 0, 1, 0x25, 3), {F1, F2, MR3}},
+    /* Floating-point load pair.  */
+    {"ldfps",          M2, OpMXX6aHint (6, 0, 1, 0x02, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfps.nt1",      M2, OpMXX6aHint (6, 0, 1, 0x02, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfps.nta",      M2, OpMXX6aHint (6, 0, 1, 0x02, 3), {F1, F2, MR3}, EMPTY},
+    {"ldfpd",          M2, OpMXX6aHint (6, 0, 1, 0x03, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfpd.nt1",      M2, OpMXX6aHint (6, 0, 1, 0x03, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfpd.nta",      M2, OpMXX6aHint (6, 0, 1, 0x03, 3), {F1, F2, MR3}, EMPTY},
+    {"ldfp8",          M2, OpMXX6aHint (6, 0, 1, 0x01, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfp8.nt1",      M2, OpMXX6aHint (6, 0, 1, 0x01, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfp8.nta",      M2, OpMXX6aHint (6, 0, 1, 0x01, 3), {F1, F2, MR3}, EMPTY},
+    {"ldfps.s",                M2, OpMXX6aHint (6, 0, 1, 0x06, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfps.s.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x06, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfps.s.nta",    M2, OpMXX6aHint (6, 0, 1, 0x06, 3), {F1, F2, MR3}, EMPTY},
+    {"ldfpd.s",                M2, OpMXX6aHint (6, 0, 1, 0x07, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfpd.s.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x07, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfpd.s.nta",    M2, OpMXX6aHint (6, 0, 1, 0x07, 3), {F1, F2, MR3}, EMPTY},
+    {"ldfp8.s",                M2, OpMXX6aHint (6, 0, 1, 0x05, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfp8.s.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x05, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfp8.s.nta",    M2, OpMXX6aHint (6, 0, 1, 0x05, 3), {F1, F2, MR3}, EMPTY},
+    {"ldfps.a",                M2, OpMXX6aHint (6, 0, 1, 0x0a, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfps.a.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x0a, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfps.a.nta",    M2, OpMXX6aHint (6, 0, 1, 0x0a, 3), {F1, F2, MR3}, EMPTY},
+    {"ldfpd.a",                M2, OpMXX6aHint (6, 0, 1, 0x0b, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfpd.a.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x0b, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfpd.a.nta",    M2, OpMXX6aHint (6, 0, 1, 0x0b, 3), {F1, F2, MR3}, EMPTY},
+    {"ldfp8.a",                M2, OpMXX6aHint (6, 0, 1, 0x09, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfp8.a.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x09, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfp8.a.nta",    M2, OpMXX6aHint (6, 0, 1, 0x09, 3), {F1, F2, MR3}, EMPTY},
+    {"ldfps.sa",       M2, OpMXX6aHint (6, 0, 1, 0x0e, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfps.sa.nt1",   M2, OpMXX6aHint (6, 0, 1, 0x0e, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfps.sa.nta",   M2, OpMXX6aHint (6, 0, 1, 0x0e, 3), {F1, F2, MR3}, EMPTY},
+    {"ldfpd.sa",       M2, OpMXX6aHint (6, 0, 1, 0x0f, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfpd.sa.nt1",   M2, OpMXX6aHint (6, 0, 1, 0x0f, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfpd.sa.nta",   M2, OpMXX6aHint (6, 0, 1, 0x0f, 3), {F1, F2, MR3}, EMPTY},
+    {"ldfp8.sa",       M2, OpMXX6aHint (6, 0, 1, 0x0d, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfp8.sa.nt1",   M2, OpMXX6aHint (6, 0, 1, 0x0d, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfp8.sa.nta",   M2, OpMXX6aHint (6, 0, 1, 0x0d, 3), {F1, F2, MR3}, EMPTY},
+    {"ldfps.c.clr",    M2, OpMXX6aHint (6, 0, 1, 0x22, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfps.c.clr.nt1",        M2, OpMXX6aHint (6, 0, 1, 0x22, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfps.c.clr.nta",        M2, OpMXX6aHint (6, 0, 1, 0x22, 3), {F1, F2, MR3}, EMPTY},
+    {"ldfpd.c.clr",    M2, OpMXX6aHint (6, 0, 1, 0x23, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfpd.c.clr.nt1",        M2, OpMXX6aHint (6, 0, 1, 0x23, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfpd.c.clr.nta",        M2, OpMXX6aHint (6, 0, 1, 0x23, 3), {F1, F2, MR3}, EMPTY},
+    {"ldfp8.c.clr",    M2, OpMXX6aHint (6, 0, 1, 0x21, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfp8.c.clr.nt1",        M2, OpMXX6aHint (6, 0, 1, 0x21, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfp8.c.clr.nta",        M2, OpMXX6aHint (6, 0, 1, 0x21, 3), {F1, F2, MR3}, EMPTY},
+    {"ldfps.c.nc",     M2, OpMXX6aHint (6, 0, 1, 0x26, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfps.c.nc.nt1", M2, OpMXX6aHint (6, 0, 1, 0x26, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfps.c.nc.nta", M2, OpMXX6aHint (6, 0, 1, 0x26, 3), {F1, F2, MR3}, EMPTY},
+    {"ldfpd.c.nc",     M2, OpMXX6aHint (6, 0, 1, 0x27, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfpd.c.nc.nt1", M2, OpMXX6aHint (6, 0, 1, 0x27, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfpd.c.nc.nta", M2, OpMXX6aHint (6, 0, 1, 0x27, 3), {F1, F2, MR3}, EMPTY},
+    {"ldfp8.c.nc",     M2, OpMXX6aHint (6, 0, 1, 0x25, 0), {F1, F2, MR3}, EMPTY},
+    {"ldfp8.c.nc.nt1", M2, OpMXX6aHint (6, 0, 1, 0x25, 1), {F1, F2, MR3}, EMPTY},
+    {"ldfp8.c.nc.nta", M2, OpMXX6aHint (6, 0, 1, 0x25, 3), {F1, F2, MR3}, EMPTY},
 
-    /* floating-point load pair w/increment by immediate */
-#define LD(a,b,c) M2, OpMXX6aHint (6, 1, 1, a, b), {F1, F2, MR3, c}, POSTINC
+    /* Floating-point load pair w/increment by immediate.  */
+#define LD(a,b,c) M2, OpMXX6aHint (6, 1, 1, a, b), {F1, F2, MR3, c}, POSTINC, 0, NULL
     {"ldfps",          LD (0x02, 0, C8)},
     {"ldfps.nt1",      LD (0x02, 1, C8)},
     {"ldfps.nta",      LD (0x02, 3, C8)},
@@ -871,26 +875,26 @@ struct ia64_opcode ia64_opcodes_m[] =
     {"ldfp8.c.nc.nta", LD (0x25, 3, C16)},
 #undef LD
 
-    /* line prefetch */
-    {"lfetch",                 M0, OpMXX6aHint (6, 0, 0, 0x2c, 0), {MR3}},
-    {"lfetch.nt1",             M0, OpMXX6aHint (6, 0, 0, 0x2c, 1), {MR3}},
-    {"lfetch.nt2",             M0, OpMXX6aHint (6, 0, 0, 0x2c, 2), {MR3}},
-    {"lfetch.nta",             M0, OpMXX6aHint (6, 0, 0, 0x2c, 3), {MR3}},
-    {"lfetch.excl",            M0, OpMXX6aHint (6, 0, 0, 0x2d, 0), {MR3}},
-    {"lfetch.excl.nt1",                M0, OpMXX6aHint (6, 0, 0, 0x2d, 1), {MR3}},
-    {"lfetch.excl.nt2",                M0, OpMXX6aHint (6, 0, 0, 0x2d, 2), {MR3}},
-    {"lfetch.excl.nta",                M0, OpMXX6aHint (6, 0, 0, 0x2d, 3), {MR3}},
-    {"lfetch.fault",           M0, OpMXX6aHint (6, 0, 0, 0x2e, 0), {MR3}},
-    {"lfetch.fault.nt1",       M0, OpMXX6aHint (6, 0, 0, 0x2e, 1), {MR3}},
-    {"lfetch.fault.nt2",       M0, OpMXX6aHint (6, 0, 0, 0x2e, 2), {MR3}},
-    {"lfetch.fault.nta",       M0, OpMXX6aHint (6, 0, 0, 0x2e, 3), {MR3}},
-    {"lfetch.fault.excl",      M0, OpMXX6aHint (6, 0, 0, 0x2f, 0), {MR3}},
-    {"lfetch.fault.excl.nt1",  M0, OpMXX6aHint (6, 0, 0, 0x2f, 1), {MR3}},
-    {"lfetch.fault.excl.nt2",  M0, OpMXX6aHint (6, 0, 0, 0x2f, 2), {MR3}},
-    {"lfetch.fault.excl.nta",  M0, OpMXX6aHint (6, 0, 0, 0x2f, 3), {MR3}},
+    /* Line prefetch.  */
+    {"lfetch",                 M0, OpMXX6aHint (6, 0, 0, 0x2c, 0), {MR3}, EMPTY},
+    {"lfetch.nt1",             M0, OpMXX6aHint (6, 0, 0, 0x2c, 1), {MR3}, EMPTY},
+    {"lfetch.nt2",             M0, OpMXX6aHint (6, 0, 0, 0x2c, 2), {MR3}, EMPTY},
+    {"lfetch.nta",             M0, OpMXX6aHint (6, 0, 0, 0x2c, 3), {MR3}, EMPTY},
+    {"lfetch.excl",            M0, OpMXX6aHint (6, 0, 0, 0x2d, 0), {MR3}, EMPTY},
+    {"lfetch.excl.nt1",                M0, OpMXX6aHint (6, 0, 0, 0x2d, 1), {MR3}, EMPTY},
+    {"lfetch.excl.nt2",                M0, OpMXX6aHint (6, 0, 0, 0x2d, 2), {MR3}, EMPTY},
+    {"lfetch.excl.nta",                M0, OpMXX6aHint (6, 0, 0, 0x2d, 3), {MR3}, EMPTY},
+    {"lfetch.fault",           M0, OpMXX6aHint (6, 0, 0, 0x2e, 0), {MR3}, EMPTY},
+    {"lfetch.fault.nt1",       M0, OpMXX6aHint (6, 0, 0, 0x2e, 1), {MR3}, EMPTY},
+    {"lfetch.fault.nt2",       M0, OpMXX6aHint (6, 0, 0, 0x2e, 2), {MR3}, EMPTY},
+    {"lfetch.fault.nta",       M0, OpMXX6aHint (6, 0, 0, 0x2e, 3), {MR3}, EMPTY},
+    {"lfetch.fault.excl",      M0, OpMXX6aHint (6, 0, 0, 0x2f, 0), {MR3}, EMPTY},
+    {"lfetch.fault.excl.nt1",  M0, OpMXX6aHint (6, 0, 0, 0x2f, 1), {MR3}, EMPTY},
+    {"lfetch.fault.excl.nt2",  M0, OpMXX6aHint (6, 0, 0, 0x2f, 2), {MR3}, EMPTY},
+    {"lfetch.fault.excl.nta",  M0, OpMXX6aHint (6, 0, 0, 0x2f, 3), {MR3}, EMPTY},
 
-    /* line prefetch w/increment by register */
-#define LFETCHINCREG(c,h) M0, OpMXX6aHint (6, 1, 0, c, h), {MR3, R2}, POSTINC
+    /* Line prefetch w/increment by register.  */
+#define LFETCHINCREG(c,h) M0, OpMXX6aHint (6, 1, 0, c, h), {MR3, R2}, POSTINC, 0, NULL
     {"lfetch",                 LFETCHINCREG (0x2c, 0)},
     {"lfetch.nt1",             LFETCHINCREG (0x2c, 1)},
     {"lfetch.nt2",             LFETCHINCREG (0x2c, 2)},
@@ -909,14 +913,14 @@ struct ia64_opcode ia64_opcodes_m[] =
     {"lfetch.fault.excl.nta",  LFETCHINCREG (0x2f, 3)},
 #undef LFETCHINCREG
 
-    /* semaphore operations */
-    {"setf.sig",       M, OpMXX6a (6, 0, 1, 0x1c), {F1, R2}},
-    {"setf.exp",       M, OpMXX6a (6, 0, 1, 0x1d), {F1, R2}},
-    {"setf.s",         M, OpMXX6a (6, 0, 1, 0x1e), {F1, R2}},
-    {"setf.d",         M, OpMXX6a (6, 0, 1, 0x1f), {F1, R2}},
+    /* Semaphore operations.  */
+    {"setf.sig",       M, OpMXX6a (6, 0, 1, 0x1c), {F1, R2}, EMPTY},
+    {"setf.exp",       M, OpMXX6a (6, 0, 1, 0x1d), {F1, R2}, EMPTY},
+    {"setf.s",         M, OpMXX6a (6, 0, 1, 0x1e), {F1, R2}, EMPTY},
+    {"setf.d",         M, OpMXX6a (6, 0, 1, 0x1f), {F1, R2}, EMPTY},
 
-    /* floating-point load w/increment by immediate */
-#define FLDINCIMMED(c,h) M, OpX6aHint (7, c, h), {F1, MR3, IMM9b}, POSTINC
+    /* Floating-point load w/increment by immediate.  */
+#define FLDINCIMMED(c,h) M, OpX6aHint (7, c, h), {F1, MR3, IMM9b}, POSTINC, 0, NULL
     {"ldfs",           FLDINCIMMED (0x02, 0)},
     {"ldfs.nt1",       FLDINCIMMED (0x02, 1)},
     {"ldfs.nta",       FLDINCIMMED (0x02, 3)},
@@ -994,8 +998,8 @@ struct ia64_opcode ia64_opcodes_m[] =
     {"ldfe.c.nc.nta",  FLDINCIMMED (0x24, 3)},
 #undef FLDINCIMMED
 
-    /* floating-point store w/increment by immediate */
-#define FSTINCIMMED(c,h) M, OpX6aHint (7, c, h), {MR3, F2, IMM9a}, POSTINC
+    /* Floating-point store w/increment by immediate.  */
+#define FSTINCIMMED(c,h) M, OpX6aHint (7, c, h), {MR3, F2, IMM9a}, POSTINC, 0, NULL
     {"stfs",           FSTINCIMMED (0x32, 0)},
     {"stfs.nta",       FSTINCIMMED (0x32, 3)},
     {"stfd",           FSTINCIMMED (0x33, 0)},
@@ -1008,8 +1012,8 @@ struct ia64_opcode ia64_opcodes_m[] =
     {"stf.spill.nta",  FSTINCIMMED (0x3b, 3)},
 #undef FSTINCIMMED
 
-    /* line prefetch w/increment by immediate */
-#define LFETCHINCIMMED(c,h) M0, OpX6aHint (7, c, h), {MR3, IMM9b}, POSTINC
+    /* Line prefetch w/increment by immediate.  */
+#define LFETCHINCIMMED(c,h) M0, OpX6aHint (7, c, h), {MR3, IMM9b}, POSTINC, 0, NULL
     {"lfetch",                 LFETCHINCIMMED (0x2c, 0)},
     {"lfetch.nt1",             LFETCHINCIMMED (0x2c, 1)},
     {"lfetch.nt2",             LFETCHINCIMMED (0x2c, 2)},
@@ -1028,7 +1032,7 @@ struct ia64_opcode ia64_opcodes_m[] =
     {"lfetch.fault.excl.nta",  LFETCHINCIMMED (0x2f, 3)},
 #undef LFETCHINCIMMED
 
-    {0}
+    {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
   };
 
 #undef M0
@@ -1058,3 +1062,4 @@ struct ia64_opcode ia64_opcodes_m[] =
 #undef OpXX6aHint
 #undef OpMXX6a
 #undef OpMXX6aHint
+#undef EMPTY
index 5f382fd6dd555d02f6da2642d061bcadeaac5aab..9d9a6c109cc87344909a975a9317d9deaab5619c 100644 (file)
@@ -1,5 +1,5 @@
 /* ia64-opc-x.c -- IA-64 `X' opcode table.
-   Copyright 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
    Contributed by Timothy Wall <twall@cygnus.com>
 
    This file is part of GDB, GAS, and the GNU binutils.
 
 #include "ia64-opc.h"
 
-/* identify the specific X-unit type */
+/* Identify the specific X-unit type.  */
 #define X0      IA64_TYPE_X, 0
 #define X      IA64_TYPE_X, 1
 
-/* instruction bit fields: */
+/* Instruction bit fields:  */
 #define bBtype(x)      (((ia64_insn) ((x) & 0x7)) << 6)
 #define bD(x)          (((ia64_insn) ((x) & 0x1)) << 35)
 #define bPa(x)         (((ia64_insn) ((x) & 0x1)) << 12)
 
 struct ia64_opcode ia64_opcodes_x[] =
   {
-    {"break.x", X0, OpX3X6 (0, 0, 0x00), {IMMU62}},
-    {"nop.x",   X0, OpX3X6 (0, 0, 0x01), {IMMU62}},
-    {"movl",   X,  OpVc (6, 0), {R1, IMMU64}},
+    {"break.x", X0, OpX3X6 (0, 0, 0x00), {IMMU62}, 0, 0, NULL},
+    {"nop.x",   X0, OpX3X6 (0, 0, 0x01), {IMMU62}, 0, 0, NULL},
+    {"movl",   X,  OpVc (6, 0), {R1, IMMU64}, 0, 0, NULL},
 #define BRL(a,b) \
-      X0, OpBtypePaWhaDPr (0xC, 0, a, 0, b, 0), {TGT64}, 0
-    {"brl.few",         BRL (0, 0) | PSEUDO},
-    {"brl",             BRL (0, 0) | PSEUDO},
-    {"brl.few.clr",    BRL (0, 1) | PSEUDO},
-    {"brl.clr",                BRL (0, 1) | PSEUDO},
-    {"brl.many",       BRL (1, 0) | PSEUDO},
-    {"brl.many.clr",   BRL (1, 1) | PSEUDO},
+      X0, OpBtypePaWhaDPr (0xC, 0, a, 0, b, 0), {TGT64}, PSEUDO, 0, NULL
+    {"brl.few",         BRL (0, 0)},
+    {"brl",             BRL (0, 0)},
+    {"brl.few.clr",    BRL (0, 1)},
+    {"brl.clr",                BRL (0, 1)},
+    {"brl.many",       BRL (1, 0)},
+    {"brl.many.clr",   BRL (1, 1)},
 #undef BRL
 #define BRL(a,b,c) \
-      X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, 0
+      X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, 0, 0, NULL
+#define BRLP(a,b,c) \
+      X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, PSEUDO, 0, NULL
     {"brl.cond.sptk.few",      BRL (0, 0, 0)},
-    {"brl.cond.sptk",          BRL (0, 0, 0) | PSEUDO},
+    {"brl.cond.sptk",          BRLP (0, 0, 0)},
     {"brl.cond.sptk.few.clr",  BRL (0, 0, 1)},
-    {"brl.cond.sptk.clr",      BRL (0, 0, 1) | PSEUDO},
+    {"brl.cond.sptk.clr",      BRLP (0, 0, 1)},
     {"brl.cond.spnt.few",      BRL (0, 1, 0)},
-    {"brl.cond.spnt",          BRL (0, 1, 0) | PSEUDO},
+    {"brl.cond.spnt",          BRLP (0, 1, 0)},
     {"brl.cond.spnt.few.clr",  BRL (0, 1, 1)},
-    {"brl.cond.spnt.clr",      BRL (0, 1, 1) | PSEUDO},
+    {"brl.cond.spnt.clr",      BRLP (0, 1, 1)},
     {"brl.cond.dptk.few",      BRL (0, 2, 0)},
-    {"brl.cond.dptk",          BRL (0, 2, 0) | PSEUDO},
+    {"brl.cond.dptk",          BRLP (0, 2, 0)},
     {"brl.cond.dptk.few.clr",  BRL (0, 2, 1)},
-    {"brl.cond.dptk.clr",      BRL (0, 2, 1) | PSEUDO},
+    {"brl.cond.dptk.clr",      BRLP (0, 2, 1)},
     {"brl.cond.dpnt.few",      BRL (0, 3, 0)},
-    {"brl.cond.dpnt",          BRL (0, 3, 0) | PSEUDO},
+    {"brl.cond.dpnt",          BRLP (0, 3, 0)},
     {"brl.cond.dpnt.few.clr",  BRL (0, 3, 1)},
-    {"brl.cond.dpnt.clr",      BRL (0, 3, 1) | PSEUDO},
+    {"brl.cond.dpnt.clr",      BRLP (0, 3, 1)},
     {"brl.cond.sptk.many",     BRL (1, 0, 0)},
     {"brl.cond.sptk.many.clr", BRL (1, 0, 1)},
     {"brl.cond.spnt.many",     BRL (1, 1, 0)},
@@ -97,21 +99,21 @@ struct ia64_opcode ia64_opcodes_x[] =
     {"brl.cond.dpnt.many",     BRL (1, 3, 0)},
     {"brl.cond.dpnt.many.clr", BRL (1, 3, 1)},
     {"brl.sptk.few",           BRL (0, 0, 0)},
-    {"brl.sptk",               BRL (0, 0, 0) | PSEUDO},
+    {"brl.sptk",               BRLP (0, 0, 0)},
     {"brl.sptk.few.clr",       BRL (0, 0, 1)},
-    {"brl.sptk.clr",           BRL (0, 0, 1) | PSEUDO},
+    {"brl.sptk.clr",           BRLP (0, 0, 1)},
     {"brl.spnt.few",           BRL (0, 1, 0)},
-    {"brl.spnt",               BRL (0, 1, 0) | PSEUDO},
+    {"brl.spnt",               BRLP (0, 1, 0)},
     {"brl.spnt.few.clr",       BRL (0, 1, 1)},
-    {"brl.spnt.clr",           BRL (0, 1, 1) | PSEUDO},
+    {"brl.spnt.clr",           BRLP (0, 1, 1)},
     {"brl.dptk.few",           BRL (0, 2, 0)},
-    {"brl.dptk",               BRL (0, 2, 0) | PSEUDO},
+    {"brl.dptk",               BRLP (0, 2, 0)},
     {"brl.dptk.few.clr",       BRL (0, 2, 1)},
-    {"brl.dptk.clr",           BRL (0, 2, 1) | PSEUDO},
+    {"brl.dptk.clr",           BRLP (0, 2, 1)},
     {"brl.dpnt.few",           BRL (0, 3, 0)},
-    {"brl.dpnt",               BRL (0, 3, 0) | PSEUDO},
+    {"brl.dpnt",               BRLP (0, 3, 0)},
     {"brl.dpnt.few.clr",       BRL (0, 3, 1)},
-    {"brl.dpnt.clr",           BRL (0, 3, 1) | PSEUDO},
+    {"brl.dpnt.clr",           BRLP (0, 3, 1)},
     {"brl.sptk.many",          BRL (1, 0, 0)},
     {"brl.sptk.many.clr",      BRL (1, 0, 1)},
     {"brl.spnt.many",          BRL (1, 1, 0)},
@@ -121,23 +123,25 @@ struct ia64_opcode ia64_opcodes_x[] =
     {"brl.dpnt.many",          BRL (1, 3, 0)},
     {"brl.dpnt.many.clr",      BRL (1, 3, 1)},
 #undef BRL
-#define BRL(a,b,c) X, OpPaWhaD (0xD, a, b, c), {B1, TGT64}, 0
+#undef BRLP
+#define BRL(a,b,c) X, OpPaWhaD (0xD, a, b, c), {B1, TGT64}, 0, 0, NULL
+#define BRLP(a,b,c) X, OpPaWhaD (0xD, a, b, c), {B1, TGT64}, PSEUDO, 0, NULL
     {"brl.call.sptk.few",      BRL (0, 0, 0)},
-    {"brl.call.sptk",          BRL (0, 0, 0) | PSEUDO},
+    {"brl.call.sptk",          BRLP (0, 0, 0)},
     {"brl.call.sptk.few.clr",  BRL (0, 0, 1)},
-    {"brl.call.sptk.clr",      BRL (0, 0, 1) | PSEUDO},
+    {"brl.call.sptk.clr",      BRLP (0, 0, 1)},
     {"brl.call.spnt.few",      BRL (0, 1, 0)},
-    {"brl.call.spnt",          BRL (0, 1, 0) | PSEUDO},
+    {"brl.call.spnt",          BRLP (0, 1, 0)},
     {"brl.call.spnt.few.clr",  BRL (0, 1, 1)},
-    {"brl.call.spnt.clr",      BRL (0, 1, 1) | PSEUDO},
+    {"brl.call.spnt.clr",      BRLP (0, 1, 1)},
     {"brl.call.dptk.few",      BRL (0, 2, 0)},
-    {"brl.call.dptk",          BRL (0, 2, 0) | PSEUDO},
+    {"brl.call.dptk",          BRLP (0, 2, 0)},
     {"brl.call.dptk.few.clr",  BRL (0, 2, 1)},
-    {"brl.call.dptk.clr",      BRL (0, 2, 1) | PSEUDO},
+    {"brl.call.dptk.clr",      BRLP (0, 2, 1)},
     {"brl.call.dpnt.few",      BRL (0, 3, 0)},
-    {"brl.call.dpnt",          BRL (0, 3, 0) | PSEUDO},
+    {"brl.call.dpnt",          BRLP (0, 3, 0)},
     {"brl.call.dpnt.few.clr",  BRL (0, 3, 1)},
-    {"brl.call.dpnt.clr",      BRL (0, 3, 1) | PSEUDO},
+    {"brl.call.dpnt.clr",      BRLP (0, 3, 1)},
     {"brl.call.sptk.many",     BRL (1, 0, 0)},
     {"brl.call.sptk.many.clr", BRL (1, 0, 1)},
     {"brl.call.spnt.many",     BRL (1, 1, 0)},
@@ -147,7 +151,8 @@ struct ia64_opcode ia64_opcodes_x[] =
     {"brl.call.dpnt.many",     BRL (1, 3, 0)},
     {"brl.call.dpnt.many.clr", BRL (1, 3, 1)},
 #undef BRL
-    {0}
+#undef BRLP
+    {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
   };
 
 #undef X0