x86: Don't disable SSE4a when disabling SSE4
[deliverable/binutils-gdb.git] / opcodes / ia64-gen.c
index f6deca189e525631873efe7ac9cdb9d8a12e2017..6f70d07c9d66617705e378595f5f18d775c4a564 100644 (file)
@@ -1,6 +1,5 @@
 /* ia64-gen.c -- Generate a shrunk set of opcode tables
-   Copyright 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2012
-   Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
    Written by Bob Manson, Cygnus Solutions, <manson@cygnus.com>
 
    This file is part of the GNU opcodes library.
 
 /* While the ia64-opc-* set of opcode tables are easy to maintain,
    they waste a tremendous amount of space.  ia64-gen rearranges the
-   instructions into a directed acyclic graph (DAG) of instruction opcodes and 
-   their possible completers, as well as compacting the set of strings used.  
+   instructions into a directed acyclic graph (DAG) of instruction opcodes and
+   their possible completers, as well as compacting the set of strings used.
 
    The disassembler table consists of a state machine that does
    branching based on the bits of the opcode being disassembled.  The
    state encodings have been chosen to minimize the amount of space
-   required.  
+   required.
 
-   The resource table is constructed based on some text dependency tables, 
+   The resource table is constructed based on some text dependency tables,
    which are also easier to maintain than the final representation.  */
 
 #include "sysdep.h"
@@ -69,6 +68,7 @@ int debug = 0;
 #define NELEMS(a) (sizeof (a) / sizeof ((a)[0]))
 #define tmalloc(X) (X *) xmalloc (sizeof (X))
 
+typedef unsigned long long  ci_t;
 /* 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).  */
@@ -146,7 +146,7 @@ struct disent
   int priority;
 
   /* The completer_index value for this entry.  */
-  int completer_index;
+  ci_t completer_index;
 
   /* How many other entries share this decode.  */
   int nextcnt;
@@ -172,7 +172,7 @@ struct bittree
    alphabetical order.  */
 
 /* One entry in the string table.  */
-struct string_entry 
+struct string_entry
 {
   /* The index in the ia64_strings[] array for this entry.  */
   int num;
@@ -188,11 +188,11 @@ int strtabtotlen = 0;
 struct rdep
 {
   char *name;                       /* Resource name.  */
-  unsigned 
+  unsigned
     mode:2,                         /* RAW, WAW, or WAR.  */
     semantics:3;                    /* Dependency semantics.  */
   char *extra;                      /* Additional semantics info.  */
-  int nchks;                   
+  int nchks;
   int total_chks;                   /* Total #of terminal insns.  */
   int *chks;                        /* Insn classes which read (RAW), write
                                        (WAW), or write (WAR) this rsrc.  */
@@ -211,12 +211,12 @@ static int rdepstotlen = 0;
 
 /* Array of all instruction classes.  */
 struct iclass
-{ 
+{
   char *name;                       /* Instruction class name.  */
   int is_class;                     /* Is a class, not a terminal.  */
-  int nsubs;                        
+  int nsubs;
   int *subs;                        /* Other classes within this class.  */
-  int nxsubs;                       
+  int nxsubs;
   int xsubs[4];                     /* Exclusions.  */
   char *comment;                    /* Optional comment.  */
   int note;                         /* Optional note.  */
@@ -290,18 +290,18 @@ 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 insert_bit_table_ent (struct bittree *, int, ia64_insn, ia64_insn, int, int, ci_t);
+static void add_dis_entry (struct bittree *, ia64_insn, ia64_insn, int, struct completer_entry *, ci_t);
 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);
+static struct disent * add_dis_table_ent (struct disent *, int, int, ci_t);
 
 \f
 static void
 fail (const char *message, ...)
 {
   va_list args;
-  
+
   va_start (args, message);
   fprintf (stderr, _("%s: Error: "), program_name);
   vfprintf (stderr, message, args);
@@ -336,7 +336,7 @@ insert_resource (const char *name, enum ia64_dependency_mode type)
   rdeps[rdepslen]->name = xstrdup (name);
   rdeps[rdepslen]->mode = type;
   rdeps[rdepslen]->waw_special = 0;
-  
+
   return rdeps[rdepslen++];
 }
 
@@ -405,7 +405,7 @@ insert_deplist (int count, unsigned short *deps)
 
 /* Add the given pair of dependency lists to the opcode dependency list.  */
 static short
-insert_dependencies (int nchks, unsigned short *chks, 
+insert_dependencies (int nchks, unsigned short *chks,
                      int nregs, unsigned short *regs)
 {
   struct opdep *pair;
@@ -419,14 +419,14 @@ insert_dependencies (int nchks, unsigned short *chks,
     chkind = insert_deplist (nchks, chks);
 
   for (i = 0; i < opdeplen; i++)
-    if (opdeps[i]->chk == chkind 
+    if (opdeps[i]->chk == chkind
        && opdeps[i]->reg == regind)
       return i;
 
   pair = tmalloc (struct opdep);
   pair->chk = chkind;
   pair->reg = regind;
-  
+
   if (opdeplen == opdeptotlen)
     {
       opdeptotlen += 20;
@@ -438,7 +438,7 @@ insert_dependencies (int nchks, unsigned short *chks,
   return opdeplen++;
 }
 
-static void 
+static void
 mark_used (struct iclass *ic, int clear_terminals)
 {
   int i;
@@ -521,7 +521,7 @@ fetch_insn_class (const char *full_name, int create)
     if (strcmp (name, ics[i]->name) == 0
         && ((comment == NULL && ics[i]->comment == NULL)
             || (comment != NULL && ics[i]->comment != NULL
-                && strncmp (ics[i]->comment, comment, 
+                && strncmp (ics[i]->comment, comment,
                             strlen (ics[i]->comment)) == 0))
         && note == ics[i]->note)
       return i;
@@ -569,7 +569,7 @@ fetch_insn_class (const char *full_name, int create)
 
       ics[ind]->nsubs = 1;
       ics[ind]->subs = tmalloc(int);
-      ics[ind]->subs[0] = fetch_insn_class (subname, 1);;
+      ics[ind]->subs[0] = fetch_insn_class (subname, 1);
     }
 
   while (xsect)
@@ -623,10 +623,10 @@ load_insn_classes (void)
       int iclass;
       char *name;
       char *tmp;
-      
+
       if (fgets (buf, sizeof (buf), fp) == NULL)
         break;
-      
+
       while (ISSPACE (buf[strlen (buf) - 1]))
         buf[strlen (buf) - 1] = '\0';
 
@@ -670,9 +670,9 @@ load_insn_classes (void)
             }
           if (*tmp == ',')
             *tmp++ = '\0';
-          
+
           ics[iclass]->subs = (int *)
-            xrealloc ((void *)ics[iclass]->subs, 
+            xrealloc ((void *)ics[iclass]->subs,
                      (ics[iclass]->nsubs + 1) * sizeof (int));
 
           sub = fetch_insn_class (subname, 1);
@@ -682,7 +682,7 @@ load_insn_classes (void)
         }
 
       /* Make sure classes come before terminals.  */
-      qsort ((void *)ics[iclass]->subs, 
+      qsort ((void *)ics[iclass]->subs,
              ics[iclass]->nsubs, sizeof(int), sub_compare);
     }
   fclose (fp);
@@ -712,7 +712,7 @@ parse_resource_users (const char *ref, int **usersp, int *nusersp,
       int iclass;
       int create = 0;
       char *name;
-      
+
       while (ISSPACE (*tmp))
         ++tmp;
       name = tmp;
@@ -720,7 +720,7 @@ parse_resource_users (const char *ref, int **usersp, int *nusersp,
         ++tmp;
       c = *tmp;
       *tmp++ = '\0';
-      
+
       xsect = strchr (name, '\\');
       if ((notestr = strstr (name, "+")) != NULL)
         {
@@ -738,7 +738,7 @@ parse_resource_users (const char *ref, int **usersp, int *nusersp,
           if (!xsect)
             *notestr = '\0';
         }
-      else 
+      else
         note = 0;
 
       /* All classes are created when the insn class table is parsed;
@@ -748,7 +748,7 @@ parse_resource_users (const char *ref, int **usersp, int *nusersp,
          table).  */
       if (! CONST_STRNEQ (name, "IC:") || xsect != NULL)
         create = 1;
-      
+
       iclass = fetch_insn_class (name, create);
       if (iclass != -1)
         {
@@ -788,7 +788,7 @@ parse_semantics (char *sem)
     return IA64_DVS_SPECIFIC;
   else if (strcmp (sem, "stop") == 0)
     return IA64_DVS_STOP;
-  else 
+  else
     return IA64_DVS_OTHER;
 }
 
@@ -835,7 +835,7 @@ load_depfile (const char *filename, enum ia64_dependency_mode mode)
       while (*tmp != ';')
         ++tmp;
       *tmp++ = '\0';
-      
+
       while (ISSPACE (*tmp))
         ++tmp;
       regp = tmp;
@@ -883,7 +883,7 @@ load_dependencies (void)
 }
 
 /* Is the given operand an indirect register file operand?  */
-static int 
+static int
 irf_operand (int op, const char *field)
 {
   if (!field)
@@ -902,14 +902,15 @@ irf_operand (int op, const char *field)
               || (op == IA64_OPND_PMC_R3 && strstr (field, "pmc"))
               || (op == IA64_OPND_PMD_R3 && strstr (field, "pmd"))
               || (op == IA64_OPND_MSR_R3 && strstr (field, "msr"))
-              || (op == IA64_OPND_CPUID_R3 && strstr (field, "cpuid")));
+              || (op == IA64_OPND_CPUID_R3 && strstr (field, "cpuid"))
+              || (op == IA64_OPND_DAHR_R3  && strstr (field, "dahr")));
     }
 }
 
-/* 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, move_dahr, 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, 
+in_iclass_mov_x (struct ia64_opcode *idesc, struct iclass *ic,
                  const char *format, const char *field)
 {
   int plain_mov = strcmp (idesc->name, "mov") == 0;
@@ -965,6 +966,13 @@ in_iclass_mov_x (struct ia64_opcode *idesc, struct iclass *ic,
           return strstr (format, "M33") != NULL;
       }
       break;
+    case 'd':
+      {
+        int m50 = plain_mov && idesc->operands[0] == IA64_OPND_DAHR3;
+        if (m50)
+          return strstr (format, "M50") != NULL;
+      }
+      break;
     case 'i':
       if (ic->name[5] == 'n')
         {
@@ -1023,7 +1031,7 @@ in_iclass_mov_x (struct ia64_opcode *idesc, struct iclass *ic,
 
 /* Is the given opcode in the given insn class?  */
 static int
-in_iclass (struct ia64_opcode *idesc, struct iclass *ic, 
+in_iclass (struct ia64_opcode *idesc, struct iclass *ic,
           const char *format, const char *field, int *notep)
 {
   int i;
@@ -1041,7 +1049,7 @@ in_iclass (struct ia64_opcode *idesc, struct iclass *ic,
                 {
                   warn (_("most recent format '%s'\nappears more restrictive than '%s'\n"),
                        ic->comment, format);
-                  format = ic->comment; 
+                  format = ic->comment;
                 }
             }
           else
@@ -1066,7 +1074,7 @@ in_iclass (struct ia64_opcode *idesc, struct iclass *ic,
       int len = strlen(ic->name);
 
       resolved = ((strncmp (ic->name, idesc->name, len) == 0)
-                  && (idesc->name[len] == '\0' 
+                  && (idesc->name[len] == '\0'
                       || idesc->name[len] == '.'));
 
       /* All break, nop, and hint variations must match exactly.  */
@@ -1154,7 +1162,7 @@ in_iclass (struct ia64_opcode *idesc, struct iclass *ic,
             resolved = 0;
         }
 
-      /* Misc brl variations ('.cond' is optional); 
+      /* Misc brl variations ('.cond' is optional);
          plain brl matches brl.cond.  */
       if (!resolved
           && (strcmp (idesc->name, "brl") == 0
@@ -1165,7 +1173,7 @@ in_iclass (struct ia64_opcode *idesc, struct iclass *ic,
         }
 
       /* Misc br variations ('.cond' is optional).  */
-      if (!resolved 
+      if (!resolved
           && (strcmp (idesc->name, "br") == 0
               || CONST_STRNEQ (idesc->name, "br."))
           && strcmp (ic->name, "br.cond") == 0)
@@ -1182,8 +1190,8 @@ in_iclass (struct ia64_opcode *idesc, struct iclass *ic,
       /* probe variations.  */
       if (!resolved && CONST_STRNEQ (idesc->name, "probe"))
         {
-          resolved = strcmp (ic->name, "probe") == 0 
-            && !((strstr (idesc->name, "fault") != NULL) 
+          resolved = strcmp (ic->name, "probe") == 0
+            && !((strstr (idesc->name, "fault") != NULL)
                  ^ (format && strstr (format, "M40") != NULL));
         }
 
@@ -1218,7 +1226,7 @@ in_iclass (struct ia64_opcode *idesc, struct iclass *ic,
            resolved = in_iclass_mov_x (idesc, ic, format, field);
         }
 
-      /* Keep track of this so we can flag any insn classes which aren't 
+      /* 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;
@@ -1240,7 +1248,7 @@ in_iclass (struct ia64_opcode *idesc, struct iclass *ic,
           break;
         }
     }
-  
+
   /* If it's in this IC, add the IC note (if any) to the insn.  */
   if (resolved)
     {
@@ -1441,6 +1449,8 @@ lookup_specifier (const char *name)
         return IA64_RS_CR_LRR;
       if (strstr (name, "CR%") != NULL)
         return IA64_RS_CR;
+      if (strstr (name, "DAHR%, % in 0") != NULL)
+        return IA64_RS_DAHR;
       if (strstr (name, "FR%, % in 0") != NULL)
         return IA64_RS_FR;
       if (strstr (name, "FR%, % in 2") != NULL)
@@ -1473,7 +1483,7 @@ lookup_specifier (const char *name)
         return IA64_RS_PMD;
       if (strstr (name, "RR#") != NULL)
         return IA64_RS_RR;
-      
+
       warn (_("Don't know how to specify # dependency %s\n"),
            name);
     }
@@ -1504,7 +1514,7 @@ print_dependency_table (void)
 {
   int i, j;
 
-  if (debug) 
+  if (debug)
     {
       for (i=0;i < iclen;i++)
         {
@@ -1520,7 +1530,7 @@ print_dependency_table (void)
                          ics[i]->name);
                 }
             }
-          else 
+          else
             {
               if (!ics[i]->terminal_resolved && !ics[i]->orphan)
                 {
@@ -1546,16 +1556,16 @@ print_dependency_table (void)
 
       if (debug > 1)
        for (i = 0; i < rdepslen; i++)
-         {  
+         {
            static const char *mode_str[] = { "RAW", "WAW", "WAR" };
 
            if (rdeps[i]->total_chks == 0)
              {
                if (rdeps[i]->total_regs)
-                 warn (_("Warning: rsrc %s (%s) has no chks\n"), 
+                 warn (_("Warning: rsrc %s (%s) has no chks\n"),
                        rdeps[i]->name, mode_str[rdeps[i]->mode]);
                else
-                 warn (_("Warning: rsrc %s (%s) has no chks or regs\n"), 
+                 warn (_("Warning: rsrc %s (%s) has no chks or regs\n"),
                        rdeps[i]->name, mode_str[rdeps[i]->mode]);
              }
            else if (rdeps[i]->total_regs == 0)
@@ -1569,7 +1579,7 @@ print_dependency_table (void)
   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);
 
@@ -1600,16 +1610,16 @@ print_dependency_table (void)
   /* And dependency lists.  */
   for (i=0;i < dlistlen;i++)
     {
-      int len = 2;
-      printf ("static const unsigned short dep%d[] = {\n  ", i);
+      unsigned int len = (unsigned) -1;
+      printf ("static const unsigned short dep%d[] = {", i);
       for (j=0;j < dlists[i]->len; j++)
         {
-          len += printf ("%d, ", dlists[i]->deps[j]);
-          if (len > 75)
+          if (len > 74)
             {
-              printf("\n  ");
-              len = 2;
+              printf("\n ");
+              len = 1;
             }
+          len += printf (" %d,", dlists[i]->deps[j]);
         }
       printf ("\n};\n\n");
     }
@@ -1623,11 +1633,11 @@ print_dependency_table (void)
       printf ("  { ");
       if (opdeps[i]->chk == -1)
         printf ("0, NULL, ");
-      else 
+      else
         printf ("NELS(dep%d), dep%d, ", opdeps[i]->chk, opdeps[i]->chk);
       if (opdeps[i]->reg == -1)
         printf ("0, NULL, ");
-      else 
+      else
         printf ("NELS(dep%d), dep%d, ", opdeps[i]->reg, opdeps[i]->reg);
       printf ("},\n");
     }
@@ -1646,7 +1656,7 @@ insert_string (char *str)
     {
       strtabtotlen += 20;
       string_table = (struct string_entry **)
-       xrealloc (string_table, 
+       xrealloc (string_table,
                  sizeof (struct string_entry **) * strtabtotlen);
     }
 
@@ -1719,11 +1729,11 @@ make_bittree_entry (void)
   res->bits_to_skip = 0;
   return res;
 }
+
 \f
 static struct disent *
 add_dis_table_ent (struct disent *which, int insn, int order,
-                   int completer_index)
+                   ci_t completer_index)
 {
   int ci = 0;
   struct disent *ent;
@@ -1776,7 +1786,7 @@ finish_distable (void)
 static void
 insert_bit_table_ent (struct bittree *curr_ent, int bit, ia64_insn opcode,
                       ia64_insn mask, int opcodenum, int order,
-                      int completer_index)
+                      ci_t completer_index)
 {
   ia64_insn m;
   int b;
@@ -1784,7 +1794,7 @@ insert_bit_table_ent (struct bittree *curr_ent, int bit, ia64_insn opcode,
 
   if (bit == -1)
     {
-      struct disent *nent = add_dis_table_ent (curr_ent->disent, 
+      struct disent *nent = add_dis_table_ent (curr_ent->disent,
                                                opcodenum, order,
                                               completer_index);
       curr_ent->disent = nent;
@@ -1810,9 +1820,9 @@ insert_bit_table_ent (struct bittree *curr_ent, int bit, ia64_insn opcode,
 \f
 static void
 add_dis_entry (struct bittree *first, ia64_insn opcode, ia64_insn mask,
-               int opcodenum, struct completer_entry *ent, int completer_index)
+               int opcodenum, struct completer_entry *ent, ci_t completer_index)
 {
-  if (completer_index & (1 << 20))
+  if (completer_index & ((ci_t)1 << 32) )
     abort ();
 
   while (ent != NULL)
@@ -1823,8 +1833,8 @@ add_dis_entry (struct bittree *first, ia64_insn opcode, ia64_insn mask,
 
       if (ent->is_terminal)
        {
-         insert_bit_table_ent (bittree, 40, newopcode, mask, 
-                                opcodenum, opcode_count - ent->order - 1, 
+         insert_bit_table_ent (bittree, 40, newopcode, mask,
+                                opcodenum, opcode_count - ent->order - 1,
                                (completer_index << 1) | 1);
        }
       completer_index <<= 1;
@@ -2003,7 +2013,7 @@ gen_dis_table (struct bittree *ent)
          else
            idest = ent->disent->ournum;
 
-         /* If the destination offset for the if (bit is 1) test is less 
+         /* 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;
             the instruction has bit 5 set for the 16-bit address, and bit
             4 for the 8-bit address.  Since we've already allocated 16
@@ -2098,7 +2108,7 @@ gen_dis_table (struct bittree *ent)
     {
       if (ent->skip_flag)
        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);
@@ -2114,13 +2124,13 @@ print_dis_table (void)
   int x;
   struct disent *cent = disinsntable;
 
-  printf ("static const char dis_table[] = {\n");
+  printf ("static const char dis_table[] = {");
   for (x = 0; x < insn_list_len; x++)
     {
-      if ((x > 0) && ((x % 12) == 0))
-       printf ("\n");
+      if (x % 12 == 0)
+       printf ("\n ");
 
-      printf ("0x%02x, ", insn_list[x]);
+      printf (" 0x%02x,", insn_list[x]);
     }
   printf ("\n};\n\n");
 
@@ -2131,7 +2141,7 @@ print_dis_table (void)
 
       while (ent != NULL)
        {
-         printf ("{ 0x%x, %d, %d, %d },\n", ent->completer_index,
+         printf ("{ 0x%lx, %d, %d, %d },\n", ( long ) ent->completer_index,
                  ent->insn, (ent->nexte != NULL ? 1 : 0),
                   ent->priority);
          ent = ent->nexte;
@@ -2154,7 +2164,7 @@ generate_disassembler (void)
 
       if (ptr->opcode->type != IA64_TYPE_DYN)
        add_dis_entry (bittree,
-                      ptr->opcode->opcode, ptr->opcode->mask, 
+                      ptr->opcode->opcode, ptr->opcode->mask,
                       ptr->main_index,
                       ptr->completers, 1);
     }
@@ -2179,7 +2189,7 @@ print_string_table (void)
   for (x = 0; x < strtablen; x++)
     {
       int len;
-      
+
       if (strlen (string_table[x]->s) > 75)
        abort ();
 
@@ -2281,7 +2291,7 @@ insert_gclist (struct completer_entry *ent)
                end = i - 1;
              else if (c == 0)
                {
-                 while (i > 0 
+                 while (i > 0
                         && ent->name->num == glist[i - 1]->name->num)
                    i--;
 
@@ -2358,7 +2368,7 @@ compute_completer_bits (struct main_entry *ment, struct completer_entry *ent)
 
          while (p != NULL && ! p->is_terminal)
            p = p->parent;
-      
+
          if (p != NULL)
            p_bits = p->bits;
          else
@@ -2411,7 +2421,7 @@ collapse_redundant_completers (void)
 
 /* Attach two lists of dependencies to each opcode.
    1) all resources which, when already marked in use, conflict with this
-   opcode (chks) 
+   opcode (chks)
    2) all resources which must be marked in use when this opcode is used
    (regs).  */
 static int
@@ -2422,7 +2432,7 @@ insert_opcode_dependencies (struct ia64_opcode *opc,
      (79) and cmpxchng has the most regs (54) so 100 here should be enough.  */
   int i;
   int nregs = 0;
-  unsigned short regs[256];                  
+  unsigned short regs[256];
   int nchks = 0;
   unsigned short chks[256];
   /* Flag insns for which no class matched; there should be none.  */
@@ -2494,7 +2504,7 @@ insert_opcode_dependencies (struct ia64_opcode *opc,
 
   if (no_class_found)
     warn (_("opcode %s has no class (ops %d %d %d)\n"),
-         opc->name, 
+         opc->name,
          opc->operands[0], opc->operands[1], opc->operands[2]);
 
   return insert_dependencies (nchks, chks, nregs, regs);
@@ -2590,7 +2600,7 @@ print_completer_entry (struct completer_entry *ent)
       if (bits & 0xffffffff00000000LL)
        abort ();
     }
-  
+
   printf ("  { 0x%x, 0x%x, %d, %d, %d, %d, %d, %d },\n",
          (int)bits,
          (int)mask,
@@ -2619,7 +2629,7 @@ opcodes_eq (struct ia64_opcode *opc1, struct ia64_opcode *opc2)
   int x;
   int plen1, plen2;
 
-  if ((opc1->mask != opc2->mask) || (opc1->type != opc2->type) 
+  if ((opc1->mask != opc2->mask) || (opc1->type != opc2->type)
       || (opc1->num_outputs != opc2->num_outputs)
       || (opc1->flags != opc2->flags))
     return 0;
@@ -2654,7 +2664,7 @@ add_opcode_entry (struct ia64_opcode *opc)
   name = insert_string (prefix);
 
   /* Walk the list of opcode table entries.  If it's a new
-     instruction, allocate and fill in a new entry.  Note 
+     instruction, allocate and fill in a new entry.  Note
      the main table is alphabetical by opcode name.  */
 
   while (*place != NULL)
@@ -2756,7 +2766,7 @@ shrink (struct ia64_opcode *table)
 /* Program options.  */
 #define OPTION_SRCDIR  200
 
-struct option long_options[] = 
+struct option long_options[] =
 {
   {"srcdir",  required_argument, NULL, OPTION_SRCDIR},
   {"debug",   no_argument,       NULL, 'd'},
@@ -2786,7 +2796,7 @@ main (int argc, char **argv)
   extern int chdir (char *);
   char *srcdir = NULL;
   int c;
-  
+
   program_name = *argv;
   xmalloc_set_program_name (program_name);
 
@@ -2814,7 +2824,7 @@ main (int argc, char **argv)
   if (optind != argc)
     usage (stdout, 1);
 
-  if (srcdir != NULL) 
+  if (srcdir != NULL)
     if (chdir (srcdir) != 0)
       fail (_("unable to change directory to \"%s\", errno = %s\n"),
            srcdir, strerror (errno));
@@ -2833,7 +2843,7 @@ main (int argc, char **argv)
   collapse_redundant_completers ();
 
   printf ("/* This file is automatically generated by ia64-gen.  Do not edit!  */\n");
-  printf ("/* Copyright 2007  Free Software Foundation, Inc.\n\
+  printf ("/* Copyright (C) 2007-2020 Free Software Foundation, Inc.\n\
 \n\
    This file is part of the GNU opcodes library.\n\
 \n\
This page took 0.034868 seconds and 4 git commands to generate.