for bfd:
authorGavin Romig-Koch <gavin@redhat.com>
Sun, 13 Dec 1998 16:14:24 +0000 (16:14 +0000)
committerGavin Romig-Koch <gavin@redhat.com>
Sun, 13 Dec 1998 16:14:24 +0000 (16:14 +0000)
* archures.c,bfd-in2.h (bfd_mach_mips4121): New.
* cpu-mips.c: Added vr4121.
* elf32-mips.c (elf_mips_mach): Same.
(_bfd_mips_elf_final_write_processing): Same.

for gas:
* config/tc-mips.c (mips_4121): New.
(md_begin,mips_ip,md_longopts,md_parse_option): Add vr4121.

for gcc:
* config/mips/mips.c (override_options): Add vr4121.
* config/mips/t-vr4xxx (MULTILIB_MATCHES): Same.

for include/elf:
* mips.h (E_MIPS_MACH_4121): New.

for include/opcode:
* mips.h (INSN_4121): New.

for opcodes:
* mips-dis.c (set_mips_isa_type): Add bfd_mach_mips4121.
(_print_insn_mips): Same.
* mips-opc.c: Add vr4121.

for sim/mips:
* configure.in,mips.igen,vr.igen: Add vr4121.
* configure: Rebuilt.

21 files changed:
bfd/.Sanitize
bfd/ChangeLog
bfd/archures.c
bfd/bfd-in2.h
bfd/cpu-mips.c
bfd/elf32-mips.c
gas/ChangeLog
gas/config/tc-mips.c
include/elf/.Sanitize
include/elf/ChangeLog
include/elf/mips.h
include/opcode/.Sanitize
opcodes/.Sanitize
opcodes/ChangeLog
opcodes/mips-dis.c
sim/mips/.Sanitize
sim/mips/ChangeLog
sim/mips/configure
sim/mips/configure.in
sim/mips/mips.igen
sim/mips/vr.igen

index 814730eb7900013174433bb8c2bd701413cb1394..cd40980edbc8cd826979c30cb34c459339d46625 100644 (file)
@@ -523,6 +523,34 @@ else
        done
 fi
 
+vr4xxx_files="ChangeLog archures.c bfd-in2.h cpu-mips.c elf32-mips.c"
+if ( echo $* | grep keep\-vr4xxx > /dev/null ) ; then
+       for i in $vr4xxx_files ; do
+               if test ! -d $i && (grep sanitize-vr4xxx $i > /dev/null) ; then
+                       if [ -n "${verbose}" ] ; then
+                               echo Keeping vr4xxx stuff in $i
+                       fi
+               fi
+       done
+else
+       for i in $vr4xxx_files ; do
+               if test ! -d $i && (grep sanitize-vr4xxx $i > /dev/null) ; then
+                       if [ -n "${verbose}" ] ; then
+                               echo Removing traces of \"vr4xxx\" from $i...
+                       fi
+                       cp $i new
+                       sed '/start\-sanitize\-vr4xxx/,/end-\sanitize\-vr4xxx/d' < $i > new
+                       if [ -n "${safe}" -a ! -f .Recover/$i ] ; then
+                               if [ -n "${verbose}" ] ; then
+                                       echo Caching $i in .Recover...
+                               fi
+                               mv $i .Recover
+                       fi
+                       mv new $i
+               fi
+       done
+fi
+
 m32rx_files="ChangeLog ChangeLog-9697 archures.c bfd-in2.h elf32-m32r.c cpu-m32r.c"
 if ( echo $* | grep keep\-m32rx > /dev/null ) ; then
        for i in $m32rx_files ; do
index 2bb391a4001bb74eb467d9bc340dcf31a6421760..4b4fabd484625163d36bd35ca002c5a2278b7fee 100644 (file)
@@ -1,3 +1,12 @@
+start-sanitize-vr4xxx
+1998-12-13  Gavin Romig-Koch  <gavin@cygnus.com>
+
+       * archures.c,bfd-in2.h (bfd_mach_mips4121): New.
+       * cpu-mips.c: Added vr4121.
+       * elf32-mips.c (elf_mips_mach): Same.
+       (_bfd_mips_elf_final_write_processing): Same.
+       
+start-sanitize-vr4xxx
 1998-12-12  Gavin Romig-Koch  <gavin@cygnus.com>
 
        * elf32-mips.c (_bfd_mips_elf_final_write_processing): 
index c3ac2436411984414296d292dd03c3509bf09fb3..179f8d8e2ef985d9a6ab81c6613780c263052c7d 100644 (file)
@@ -120,6 +120,9 @@ DESCRIPTION
 .#define bfd_mach_mips4000             4000
 .#define bfd_mach_mips4010             4010
 .#define bfd_mach_mips4100             4100
+. {* start-sanitize-vr4xxx *}
+.#define bfd_mach_mips4121             4121
+. {* end-sanitize-vr4xxx *}
 .#define bfd_mach_mips4300             4300
 .#define bfd_mach_mips4400             4400
 .#define bfd_mach_mips4600             4600
@@ -131,7 +134,7 @@ DESCRIPTION
 .#define bfd_mach_mips4900             4900
 . {* end-sanitize-tx49 *}
 .#define bfd_mach_mips5000             5000
-. {* start-sanitize-cygnus *} {* CYGNUS LOCAL vr5400/raeburn *}
+. {* start-sanitize-cygnus *}
 .#define bfd_mach_mips5400             5400
 . {* end-sanitize-cygnus *}
 . {* start-sanitize-r5900 *}
@@ -179,6 +182,9 @@ DESCRIPTION
 .#define bfd_mach_sh3e       0x3e
 .#define bfd_mach_sh4        0x40
 .  bfd_arch_alpha,     {* Dec Alpha *}
+.#define bfd_mach_alpha_ev4  0x10
+.#define bfd_mach_alpha_ev5  0x20
+.#define bfd_mach_alpha_ev6  0x30
 .  bfd_arch_arm,       {* Advanced Risc Machines ARM *}
 .#define bfd_mach_arm_2                1
 .#define bfd_mach_arm_2a               2
@@ -211,6 +217,8 @@ DESCRIPTION
 . {* start-sanitize-am33 *}
 .#define bfd_mach_am33         330
 . {* end-sanitize-am33 *}
+.  bfd_arch_fr30,
+.#define bfd_mach_fr30         0x46523330
 .  bfd_arch_last
 .  };
 
@@ -281,6 +289,7 @@ extern const bfd_arch_info_type bfd_z8k_arch;
 extern const bfd_arch_info_type bfd_ns32k_arch;
 extern const bfd_arch_info_type bfd_w65_arch;
 extern const bfd_arch_info_type bfd_v850_arch;
+extern const bfd_arch_info_type bfd_fr30_arch;
 
 static const bfd_arch_info_type * const bfd_archures_list[] =
 {
@@ -319,6 +328,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] =
   &bfd_ns32k_arch,
   &bfd_w65_arch,
   &bfd_v850_arch,
+  & bfd_fr30_arch,
 #endif
   0
 };
index 3fa4b78d842cf3b2b930fdafc7f8bea6b1751796..99f2d7e2022746f911f57f6f6b71019dbcb2a307 100644 (file)
@@ -1257,6 +1257,9 @@ enum bfd_architecture
 #define bfd_mach_mips4000              4000
 #define bfd_mach_mips4010              4010
 #define bfd_mach_mips4100              4100
+  /* start-sanitize-vr4xxx */
+#define bfd_mach_mips4121              4121
+  /* end-sanitize-vr4xxx */
 #define bfd_mach_mips4300              4300
 #define bfd_mach_mips4400              4400
 #define bfd_mach_mips4600              4600
index db9c9489510f02bb815cb2d61d62723bae8976fd..d5b1a5000c5dc884b995d8f111b1584b3a1d0eb7 100644 (file)
@@ -44,6 +44,9 @@ I_mips3900,
 I_mips4000, 
 I_mips4010, 
 I_mips4100, 
+  /* start-sanitize-vr4xxx */
+I_mips4121,
+  /* end-sanitize-vr4xxx */
 I_mips4300, 
 I_mips4400, 
 I_mips4600, 
@@ -62,7 +65,6 @@ I_mips4320,
 I_mips4900,
   /* end-sanitize-tx49 */
   /* start-sanitize-cygnus */
-  /* CYGNUS LOCAL vr5400/raeburn */
 I_mips5400,
   /* end-sanitize-cygnus */
   /* start-sanitize-r5900 */
@@ -87,6 +89,9 @@ static const bfd_arch_info_type arch_info_struct[] =
   N (64, 64, bfd_mach_mips4000, "mips:4000", false, NN(I_mips4000)),
   N (64, 64, bfd_mach_mips4010, "mips:4010", false, NN(I_mips4010)),
   N (64, 64, bfd_mach_mips4100, "mips:4100", false, NN(I_mips4100)),
+  /* start-sanitize-vr4xxx */
+  N (64, 64, bfd_mach_mips4121, "mips:4121", false, NN(I_mips4121)),
+  /* end-sanitize-vr4xxx */
   N (64, 64, bfd_mach_mips4300, "mips:4300", false, NN(I_mips4300)),
   N (64, 64, bfd_mach_mips4400, "mips:4400", false, NN(I_mips4400)),
   N (64, 64, bfd_mach_mips4600, "mips:4600", false, NN(I_mips4600)),
@@ -106,7 +111,6 @@ static const bfd_arch_info_type arch_info_struct[] =
   N (64, 64, bfd_mach_mips4900, "mips:4900", false, NN(I_mips4900)),
   /* end-sanitize-tx49 */
   /* start-sanitize-cygnus */
-  /* CYGNUS LOCAL vr5400/raeburn */
   N (64, 64, bfd_mach_mips5400, "mips:5400", false, NN(I_mips5400)),
   /* end-sanitize-cygnus */
   /* start-sanitize-r5900 */
index 08f71abe73c8c1ae4af61e7c43b1459a2dee0bb1..70d12a910006b478dcb371b802af027f7922d519 100644 (file)
@@ -1662,6 +1662,11 @@ elf_mips_mach (flags)
 
     case E_MIPS_MACH_4100:
       return bfd_mach_mips4100;
+      /* start-sanitize-vr4xxx */
+
+    case E_MIPS_MACH_4121:
+      return bfd_mach_mips4121;
+      /* end-sanitize-vr4xxx */
       /* start-sanitize-vr4320 */
 
     case E_MIPS_MACH_4320:
@@ -2104,6 +2109,12 @@ _bfd_mips_elf_final_write_processing (abfd, linker)
     case bfd_mach_mips4100:
       val = E_MIPS_ARCH_3 | E_MIPS_MACH_4100;
       break;
+      /* start-sanitize-vr4xxx */
+
+    case bfd_mach_mips4121:
+      val = E_MIPS_ARCH_3 | E_MIPS_MACH_4121;
+      break;
+      /* end-sanitize-vr4xxx */
       /* start-sanitize-vr4320 */
 
     case bfd_mach_mips4320:
index c998a145db142f36927fb44b10cdbd30f6cf56f1..25a6250dabf155f84050493ebfd05100f25802ee 100644 (file)
@@ -1,4 +1,11 @@
-1998-12-11  Ken Raeburn  <raeburn@cygnus.com>
+start-sanitize-vr4xxx
+1998-12-13  Gavin Romig-Koch  <gavin@cygnus.com>
+
+       * config/tc-mips.c (mips_4121): New.
+       (md_begin,mips_ip,md_longopts,md_parse_option): Add vr4121.
+
+end-sanitize-vr4xxx
+98-12-11  Ken Raeburn  <raeburn@cygnus.com>
 
        * config/tc-h8300.c (build_bytes): Change message given if the
        instruction requires H8/300H mode and we're not in Hmode, to
index ea96c845c00772f948e2ecf897c61ca207d3d530..1b455df6c63151078e7bae04a8335a1955f0cd2a 100644 (file)
@@ -207,6 +207,11 @@ static int mips_4010 = -1;
 /* Whether the 4100 MADD16 and DMADD16 are permitted. */
 static int mips_4100 = -1;
 
+/* start-sanitize-vr4xxx */
+/* Whether NEC 4121 instructions are permitted. */
+static int mips_4121 = -1;
+
+/* end-sanitize-vr4xxx */
 /* start-sanitize-vr4320 */
 /* Whether NEC vr4320 instructions are permitted. */
 static int mips_4320 = -1;
@@ -947,6 +952,12 @@ md_begin ()
       else if (strcmp (cpu, "mips64vr4100") == 0)
         mips_cpu = 4100;
 
+      /* start-sanitize-vr4xxx */
+      else if (strcmp (cpu, "vr4121") == 0
+              || strcmp (cpu, "mips64vr4121") == 0)
+       mips_cpu = 4121;
+
+      /* end-sanitize-vr4xxx */
       else if (strcmp (cpu, "r4010") == 0)
         mips_cpu = 4010;
 
@@ -997,6 +1008,9 @@ md_begin ()
 
       else if (mips_cpu == 4000
                || mips_cpu == 4100
+              /* start-sanitize-vr4xxx */
+               || mips_cpu == 4121
+              /* end-sanitize-vr4xxx */
                || mips_cpu == 4400
                || mips_cpu == 4300
                /* start-sanitize-vr4320 */
@@ -1041,6 +1055,11 @@ md_begin ()
   if (mips_4100 < 0)
     mips_4100 = (mips_cpu == 4100);
 
+  /* start-sanitize-vr4xxx */
+  if (mips_4121 < 0)
+    mips_4121 = (mips_cpu == 4121);
+
+  /* end-sanitize-vr4xxx */
   /* start-sanitize-vr4320 */
   if (mips_4320 < 0)
     mips_4320 = (mips_cpu == 4320);
@@ -2595,6 +2614,10 @@ macro_build (place, counter, ep, name, fmt, va_alist)
                  && (insn.insn_mo->membership & INSN_4010) != 0)
              || (mips_4100
                  && (insn.insn_mo->membership & INSN_4100) != 0)
+             /* start-sanitize-vr4xxx */
+             || (mips_4121
+                 && (insn.insn_mo->membership & INSN_4121) != 0)
+             /* end-sanitize-vr4xxx */
              /* start-sanitize-vr4320 */
              || (mips_4320
                  && (insn.insn_mo->membership & INSN_4320) != 0)
@@ -7264,6 +7287,9 @@ mips_ip (str, ip)
       else if ((mips_4650 && (insn->membership & INSN_4650) != 0)
               || (mips_4010 && (insn->membership & INSN_4010) != 0)
               || (mips_4100 && (insn->membership & INSN_4100) != 0)
+              /* start-sanitize-vr4xxx */
+              || (mips_4121 && (insn->membership & INSN_4121) != 0)
+              /* end-sanitize-vr4xxx */
               /* start-sanitize-vr4320 */
               || (mips_4320 && (insn->membership & INSN_4320) != 0)
               /* end-sanitize-vr4320 */
@@ -9424,6 +9450,14 @@ struct option md_longopts[] = {
 #define OPTION_NO_FIX_4011_BRANCH_BUG (OPTION_MD_BASE + 35)
   {"no-fix-4011-branch-bug", no_argument, NULL, OPTION_NO_FIX_4011_BRANCH_BUG},
   /* end-sanitize-branchbug4011 */
+
+  /* start-sanitize-vr4xxx */
+#define OPTION_M4121 (OPTION_MD_BASE + 36)
+  {"m4121", no_argument, NULL, OPTION_M4121},
+#define OPTION_NO_M4121 (OPTION_MD_BASE + 37)
+  {"no-m4121", no_argument, NULL, OPTION_NO_M4121},
+
+  /* end-sanitize-vr4xxx */
 #define OPTION_CALL_SHARED (OPTION_MD_BASE + 7)
 #define OPTION_NON_SHARED (OPTION_MD_BASE + 8)
 #define OPTION_XGOT (OPTION_MD_BASE + 19)
@@ -9561,6 +9595,10 @@ md_parse_option (c, arg)
                  mips_cpu = 4000;
                else if (strcmp (p, "4100") == 0)
                     mips_cpu = 4100;
+               /* start-sanitize-vr4xxx */
+               else if (strcmp (p, "4121") == 0)
+                    mips_cpu = 4121;
+               /* end-sanitize-vr4xxx */
                else if (strcmp (p, "4300") == 0)
                  mips_cpu = 4300;
                /* start-sanitize-vr4320 */
@@ -9619,6 +9657,9 @@ md_parse_option (c, arg)
            if (sv
                && (mips_cpu != 4300
                    && mips_cpu != 4100
+                   /* start-sanitize-vr4xxx */
+                   && mips_cpu != 4121
+                   /* end-sanitize-vr4xxx */
                    /* start-sanitize-vr4320 */
                    && mips_cpu != 4320
                    /* end-sanitize-vr4320 */
@@ -9664,6 +9705,16 @@ md_parse_option (c, arg)
       mips_4100 = 0;
       break;
 
+      /* start-sanitize-vr4xxx */
+    case OPTION_M4121:
+      mips_4121 = 1;
+      break;
+
+    case OPTION_NO_M4121:
+      mips_4121 = 0;
+      break;
+
+      /* end-sanitize-vr4xxx */
       /* start-sanitize-r5900 */
     case OPTION_M5900:
       mips_5900 = 1;
@@ -9846,6 +9897,12 @@ MIPS options:\n\
 -no-m4010              do not permit R4010 instructions\n\
 -m4100                  permit VR4100 instructions\n\
 -no-m4100              do not permit VR4100 instructions\n"));
+  /* start-sanitize-vr4xxx */
+  fprintf(stream, _("\
+-mcpu=vr4121           generate code for vr4121\n\
+-m4121                  permit VR4121 instructions\n\
+-no-m4121              do not permit VR4121 instructions\n"));
+  /* end-sanitize-vr4xxx */
   fprintf(stream, _("\
 -mips16                        generate mips16 instructions\n\
 -no-mips16             do not generate mips16 instructions\n"));
index b14ebd7ef1fec286b8675feeea295ba303abc244..f2a44e71f3e33aaf9cc2dc0496e4a0cf6d50c029 100644 (file)
@@ -192,6 +192,34 @@ else
        done
 fi
 
+vr4xxx_files="ChangeLog mips.h"
+if ( echo $* | grep keep\-vr4xxx > /dev/null ) ; then
+       for i in $vr4xxx_files ; do
+               if test ! -d $i && (grep sanitize-vr4xxx $i > /dev/null) ; then
+                       if [ -n "${verbose}" ] ; then
+                               echo Keeping vr4xxx stuff in $i
+                       fi
+               fi
+       done
+else
+       for i in $vr4xxx_files ; do
+               if test ! -d $i && (grep sanitize-vr4xxx $i > /dev/null) ; then
+                       if [ -n "${verbose}" ] ; then
+                               echo Removing traces of \"vr4xxx\" from $i...
+                       fi
+                       cp $i new
+                       sed '/start\-sanitize\-vr4xxx/,/end-\sanitize\-vr4xxx/d' < $i > new
+                       if [ -n "${safe}" -a ! -f .Recover/$i ] ; then
+                               if [ -n "${verbose}" ] ; then
+                                       echo Caching $i in .Recover...
+                               fi
+                               mv $i .Recover
+                       fi
+                       mv new $i
+               fi
+       done
+fi
+
 tx49_files="mips.h"
 if ( echo $* | grep keep\-tx49 > /dev/null ) ; then
        for i in $tx49_files ; do
index d588b15186e88832b8c56f2985110ff803a01885..d00a8eeed0adc7736364ea55a9e2e7b33347489c 100644 (file)
@@ -1,3 +1,13 @@
+start-sanitize-vr4xxx
+1998-12-13  Gavin Romig-Koch  <gavin@cygnus.com>
+
+       * mips.h (E_MIPS_MACH_4121): New.
+
+end-sanitize-vr4xxx
+1998-12-03  Nick Clifton  <nickc@cygnus.com>
+
+       * fr30.h: Add R_FR30_48 reloc.
+
 1998-12-02  Ulrich Drepper  <drepper@cygnus.com>
 
        * mips.h: Add external data type for conflict section.
index 58f7ae83ae9fef3004f92401974b3d9c3996fe6e..a895d597f33dc826b5e88600e38af19164e07f00 100644 (file)
@@ -142,6 +142,9 @@ END_RELOC_NUMBERS
 /* start-sanitize-tx49 */
 #define E_MIPS_MACH_4900       0x00860000
 /* end-sanitize-tx49 */
+/* start-sanitize-vr4xxx */
+#define E_MIPS_MACH_4121       0x00870000
+/* end-sanitize-vr4xxx */
 
 /* start-sanitize-cygnus */
 #define E_MIPS_MACH_5400       0x00910000
@@ -360,6 +363,10 @@ typedef struct
 /* A section of type SHT_MIPS_CONFLICT is an array of indices into the
    .dynsym section.  Each element has the following type.  */
 typedef unsigned long Elf32_Conflict;
+typedef unsigned char Elf32_External_Conflict[4];
+
+typedef unsigned long Elf64_Conflict;
+typedef unsigned char Elf64_External_Conflict[8];
 
 /* A section of type SHT_MIPS_GPTAB contains information about how
    much GP space would be required for different -G arguments.  This
index 76c1904c0f0c018746df01b528e8507bb1bd49cb..4f049d14226167cb28f0cd29b7a6a0afd566b95c 100644 (file)
@@ -329,6 +329,35 @@ else
 fi
 
 
+vr4xxx_files="ChangeLog mips.h"
+if ( echo $* | grep keep\-vr4xxx > /dev/null ) ; then
+       for i in $vr4xxx_files ; do
+               if test ! -d $i && (grep sanitize-vr4xxx $i > /dev/null) ; then
+                       if [ -n "${verbose}" ] ; then
+                               echo Keeping vr4xxx stuff in $i
+                       fi
+               fi
+       done
+else
+       for i in $vr4xxx_files ; do
+               if test ! -d $i && (grep sanitize-vr4xxx $i > /dev/null) ; then
+                       if [ -n "${verbose}" ] ; then
+                               echo Removing traces of \"vr4xxx\" from $i...
+                       fi
+                       cp $i new
+                       sed '/start\-sanitize\-vr4xxx/,/end-\sanitize\-vr4xxx/d' < $i > new
+                       if [ -n "${safe}" -a ! -f .Recover/$i ] ; then
+                               if [ -n "${verbose}" ] ; then
+                                       echo Caching $i in .Recover...
+                               fi
+                               mv $i .Recover
+                       fi
+                       mv new $i
+               fi
+       done
+fi
+
+
 for i in * ; do
        if test ! -d $i && (grep sanitize $i > /dev/null) ; then
                echo '***' Some mentions of Sanitize are still left in $i! 1>&2
index 49b8a025f3afe17f310df6b7c76322cd0230a729..71cd19a510fea2d8b191d628e96067e0753ab4d8 100644 (file)
@@ -276,6 +276,34 @@ else
        done
 fi
 
+vr4xxx_files="ChangeLog mips-opc.c mips-dis.c"
+if ( echo $* | grep keep\-vr4xxx > /dev/null ) ; then
+       for i in $vr4xxx_files ; do
+               if test ! -d $i && (grep sanitize-vr4xxx $i > /dev/null) ; then
+                       if [ -n "${verbose}" ] ; then
+                               echo Keeping vr4xxx stuff in $i
+                       fi
+               fi
+       done
+else
+       for i in $vr4xxx_files ; do
+               if test ! -d $i && (grep sanitize-vr4xxx $i > /dev/null) ; then
+                       if [ -n "${verbose}" ] ; then
+                               echo Removing traces of \"vr4xxx\" from $i...
+                       fi
+                       cp $i new
+                       sed '/start\-sanitize\-vr4xxx/,/end-\sanitize\-vr4xxx/d' < $i > new
+                       if [ -n "${safe}" -a ! -f .Recover/$i ] ; then
+                               if [ -n "${verbose}" ] ; then
+                                       echo Caching $i in .Recover...
+                               fi
+                               mv $i .Recover
+                       fi
+                       mv new $i
+               fi
+       done
+fi
+
 cygnus_files="ChangeLog mips-opc.c mips-dis.c"
 if ( echo $* | grep keep\-cygnus > /dev/null ) ; then
        for i in $cygnus_files ; do
index c6c55b95802b7ce79587bac625180031b65e718e..b238a08df229203d532bfa3d03b60e12c99b8609 100644 (file)
@@ -1,3 +1,10 @@
+start-sanitize-vr4xxx
+1998-12-13  Gavin Romig-Koch  <gavin@cygnus.com>
+
+       * mips-dis.c (set_mips_isa_type): Add bfd_mach_mips4121.
+       (_print_insn_mips): Same.
+       * mips-opc.c: Add vr4121.
+
 start-sanitize-fr30
 Thu Dec 10 18:39:46 1998  Dave Brolley  <brolley@cygnus.com>
 
index 4efd91c6a6f2705dea3a44fdaaca054f75b16e9b..62eb63bd3e07881dae4f5c86655d88e896c6cb38 100644 (file)
@@ -87,10 +87,10 @@ print_insn_arg (d, l, pc, info)
     case ',':
     case '(':
     case ')':
-      /* start-sanitize-vr5400 */
+      /* start-sanitize-cygnus */
     case '[':
     case ']':
-      /* end-sanitize-vr5400 */
+      /* end-sanitize-cygnus */
       /* start-sanitize-r5900 */
     case '+':
     case '-':
@@ -355,7 +355,7 @@ print_insn_arg (d, l, pc, info)
                             (l >> OP_SH_PERFREG) & OP_MASK_PERFREG);
       break;
 
-      /* start-sanitize-vr5400 */
+      /* start-sanitize-cygnus */
     case 'e':
       (*info->fprintf_func) (info->stream, "%d",
                             (l >> OP_SH_VECBYTE) & OP_MASK_VECBYTE);
@@ -365,7 +365,7 @@ print_insn_arg (d, l, pc, info)
       (*info->fprintf_func) (info->stream, "%d",
                             (l >> OP_SH_VECALIGN) & OP_MASK_VECALIGN);
       break;
-      /* end-sanitize-vr5400 */
+      /* end-sanitize-cygnus */
 
     default:
       /* xgettext:c-format */
@@ -418,6 +418,12 @@ set_mips_isa_type (mach, isa, cputype)
        target_processor = 4100;
        mips_isa = 3;
        break;
+       /* start-sanitize-vr4xxx */
+      case bfd_mach_mips4121:
+       target_processor = 4121;
+       mips_isa = 3;
+       break;
+       /* end-sanitize-vr4xxx */
       case bfd_mach_mips4300:
        target_processor = 4300;
        mips_isa = 3;
@@ -450,12 +456,12 @@ set_mips_isa_type (mach, isa, cputype)
        target_processor = 5000;
        mips_isa = 4;
        break;
-      /* start-sanitize-vr5400 */
+      /* start-sanitize-cygnus */
       case bfd_mach_mips5400:
        target_processor = 5400;
        mips_isa = 3;
        break;
-      /* end-sanitize-vr5400 */
+      /* end-sanitize-cygnus */
       /* start-sanitize-r5900 */
       case bfd_mach_mips5900:
        target_processor = 5900;
@@ -535,7 +541,7 @@ _print_insn_mips (memaddr, word, info)
   target_processor = mips_target_info.processor;
   mips_isa = mips_target_info.isa;
 #else  
-  set_mips_isa_type (info->mach, &target_processor, &mips_isa);
+  set_mips_isa_type (info->mach, &mips_isa, &target_processor);
 #endif  
 
   info->bytes_per_chunk = 4;
@@ -569,14 +575,18 @@ _print_insn_mips (memaddr, word, info)
                      && op->membership & INSN_4010) == 0
                  && (target_processor == 4100
                      && op->membership & INSN_4100) == 0
+                 /* start-sanitize-vr4xxx */
+                 && (target_processor == 4121
+                     && op->membership & INSN_4121) == 0
+                 /* end-sanitize-vr4xxx */
                  /* start-sanitize-vr4320 */
                  && (target_processor == 4320
                      && op->membership & INSN_4320) == 0
                  /* end-sanitize-vr4320 */
-                 /* start-sanitize-vr5400 */
+                 /* start-sanitize-cygnus */
                  && (target_processor == 5400
                      && op->membership & INSN_5400) == 0
-                 /* end-sanitize-vr5400 */
+                 /* end-sanitize-cygnus */
                  /* start-sanitize-r5900 */
                  && (target_processor == 5900
                      && op->membership & INSN_5900) == 0
index ce9cf3bddfdf0bedf394f4f2d80fb825ccde92d8..9ddebeeec6b54a04ee221d245814b05f88b362f4 100644 (file)
@@ -262,6 +262,36 @@ else
 fi
 
 
+vr4xxx_files="ChangeLog Makefile.in configure configure.in mips.igen vr.igen"
+
+if ( echo $* | grep keep\-vr4xxx > /dev/null ) ; then
+       for i in $vr4xxx_files ; do
+               if test ! -d $i && (grep sanitize-vr4xxx $i > /dev/null) ; then
+                       if [ -n "${verbose}" ] ; then
+                               echo Keeping vr4xxx stuff in $i
+                       fi
+               fi
+       done
+else
+       for i in * ; do
+               if test ! -d $i && (grep sanitize-vr4xxx $i > /dev/null) ; then
+                       if [ -n "${verbose}" ] ; then
+                               echo Removing traces of \"vr4xxx\" from $i...
+                       fi
+                       cp $i new
+                       sed '/start\-sanitize\-vr4xxx/,/end-\sanitize\-vr4xxx/d' < $i > new
+                       if [ -n "${safe}" -a ! -f .Recover/$i ] ; then
+                               if [ -n "${verbose}" ] ; then
+                                       echo Caching $i in .Recover...
+                               fi
+                               mv $i .Recover
+                       fi
+                       mv new $i
+               fi
+       done
+fi
+
+
 tx3904_files="ChangeLog configure configure.in interp.c"
 
 if ( echo $* | grep keep\-tx3904 > /dev/null ) ; then
index a29f16442c86a632c25a30e82282714526a2895a..7aeae1b1d5910f81595e6deb5324546e1e1fa6f8 100644 (file)
@@ -1,3 +1,10 @@
+start-sanitize-vr4xxx
+1998-12-13  Gavin Romig-Koch  <gavin@cygnus.com>
+
+       * configure.in,mips.igen,vr.igen: Add vr4121.
+       * configure: Rebuilt.
+
+end-sanitize-vr4xxx
 1998-12-12  Gavin Romig-Koch  <gavin@cygnus.com>
 
 start-sanitize-vr4xxx
index b4f9044fc74c9ad04282f85aafbf6a1a62c1c17d..687d7224d565b8aba61a216e251c2cd6547df418 100755 (executable)
@@ -3968,7 +3968,7 @@ case "${target}" in
 # end-sanitize-cygnus
 # start-sanitize-vr4xxx
   mips64vr4xxx-*-*)    sim_gen=IGEN
-                       sim_igen_machine="-M mipsIV,vr4100 -G gen-multi-sim=mipsIV"
+                       sim_igen_machine="-M mipsIV,vr4100,vr4121 -G gen-multi-sim=mipsIV"
                         ;;
 # end-sanitize-vr4xxx
   mips64vr41*)         sim_gen=M16
index 2cb577f7c440ecc2d56f554c34da771e0fe8785d..86e14f81f83e814b7bf413f48f59c3778cee9945 100644 (file)
@@ -169,7 +169,7 @@ case "${target}" in
 # end-sanitize-cygnus
 # start-sanitize-vr4xxx
   mips64vr4xxx-*-*)    sim_gen=IGEN
-                       sim_igen_machine="-M mipsIV,vr4100 -G gen-multi-sim=mipsIV"
+                       sim_igen_machine="-M mipsIV,vr4100,vr4121 -G gen-multi-sim=mipsIV"
                         ;;
 # end-sanitize-vr4xxx
   mips64vr41*)         sim_gen=M16
index 8c07108d082e63d43421b34709dfad465dad28b3..ba02a9b77a6b3376516af574a9360865e8998a43 100644 (file)
@@ -48,6 +48,9 @@
 :model:::tx19:tx19:
 // end-sanitize-tx19
 :model:::vr4100:mips4100:
+// start-sanitize-vr4xxx
+:model:::vr4121:mips4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 :model:::vr4320:mips4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 "dmult r<RS>, r<RT>"
 *mipsIII,mipsIV:
 *vr4100:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-tx19
 *tx19:
 // end-sanitize-tx19
 "dmultu r<RS>, r<RT>"
 *mipsIII,mipsIV:
 *vr4100:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-tx19
 *tx19:
 // end-sanitize-tx19
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 "movn r<RD>, r<RS>, r<RT>"
 *mipsIV:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 "mult r<RS>, r<RT>"
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 "multu r<RS>, r<RT>"
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 "sw r<RT>, <OFFSET>(r<BASE>)"
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-tx19
 *tx19:
 // end-sanitize-tx19
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 "bc1%s<TF>%s<ND> <OFFSET>"
 *mipsI,mipsII,mipsIII:
 *vr4100:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
+// start-sanitize-vr4320
+*vr4320:
+// end-sanitize-vr4320
 // start-sanitize-r5900
 *r5900:
 // end-sanitize-r5900
 "bc1%s<TF>%s<ND> <CC>, <OFFSET>"
 *mipsIV:
 *vr5000:
-// start-sanitize-vr4320
-*vr4320:
-// end-sanitize-vr4320
 // start-sanitize-cygnus
 *vr5400:
 // end-sanitize-cygnus
     }
 }
 
-010001,10,3.FMT,5.FT,5.FS,3.0,00,11,4.COND:COP1:32::C.cond.fmt
-*mipsI,mipsII,mipsIII:
+010001,10,3.FMT,5.FT,5.FS,3.0,00,11,4.COND:COP1:32::C.cond.fmta
 "c.%s<COND>.%s<FMT> f<FS>, f<FT>"
+*mipsI,mipsII,mipsIII:
 {
   do_c_cond_fmt (SD_, FMT, FT, FS, 0, COND, instruction_0);
 }
 
-010001,10,3.FMT,5.FT,5.FS,3.CC,00,11,4.COND:COP1:32::C.cond.fmt
+010001,10,3.FMT,5.FT,5.FS,3.CC,00,11,4.COND:COP1:32::C.cond.fmtb
 "c.%s<COND>.%s<FMT> f<FS>, f<FT>":CC == 0
 "c.%s<COND>.%s<FMT> <CC>, f<FS>, f<FT>"
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *tx19:
 // end-sanitize-tx19
 {
+  int fs = FS;
   if (X)
     /*MTC1*/
     StoreFPR (FS, fmt_uninterpreted_32, VL4_8 (GPR[RT]));
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 "bc0t <OFFSET>"
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 
 
 010000,01000,00011,16.OFFSET:COP0:32::BC0TL
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *r3900:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 // end-sanitize-tx19
 *r3900:
 *vr4100:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 // end-sanitize-tx19
 *r3900:
 *vr4100:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 "cop<ZZ> <COP_FUN0><COP_FUN1><COP_FUN2>"
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-r5900
 *r5900:
 // end-sanitize-r5900
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 *mipsI,mipsII,mipsIII,mipsIV:
 *vr4100:
 *vr5000:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
index 6775f91bc6c4235a1e354c9c8498334de902772d..f04d4e79993db6f856e943341283ec713cee62bc 100644 (file)
@@ -14,6 +14,9 @@
 
 :function:::unsigned64:MulAcc:
 *vr4100:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
@@ -27,6 +30,9 @@
 
 :function:::void:SET_MulAcc:unsigned64 value
 *vr4100:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
@@ -41,6 +47,9 @@
 
 :function:::signed64:SignedMultiply:signed32 l, signed32 r
 *vr4100:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
@@ -54,6 +63,9 @@
 
 :function:::unsigned64:UnsignedMultiply:unsigned32 l, unsigned32 r
 *vr4100:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
   return result;
 }
 
+// start-sanitize-vr4xxx
+:function:::signed64:SaturatedAdd:signed32 l, signed32 r
+*vr4121:
+{
+  signed64 result = (signed64) l + (signed64) r;
+  if (result < 0)
+    result = 0xFFFFFFFF8000000LL;
+  else if (result > 0x000000007FFFFFFFLL)
+    result = 0x000000007FFFFFFFLL;
+  return result;
+}
+
+:function:::unsigned64:SaturatedUnsignedAdd:unsigned32 l, unsigned32 r
+*vr4121:
+{
+  unsigned64 result = (unsigned64) l + (unsigned64) r;
+  if (result > 0x000000007FFFFFFFLL)
+    result = 0xFFFFFFFFFFFFFFFFLL;
+  return result;
+}
+
+
+// end-sanitize-vr4xxx
 :function:::unsigned64:Low32Bits:unsigned64 value
 *vr4100:
-// start-sanitize-vr4320
-*vr4320:
-// end-sanitize-vr4320
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-cygnus
 *vr5400:
 // end-sanitize-cygnus
 
 :function:::unsigned64:High32Bits:unsigned64 value
 *vr4100:
+// start-sanitize-vr4xxx
+*vr4121:
+// end-sanitize-vr4xxx
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 
 
 // Multiply, Accumulate
-000000,5.RS,5.RT,00000,00000,101000::::MAC
+000000,5.RS,5.RT,00000,00000,101000::64::MAC
 "mac r<RS>, r<RT>"
 *vr4100:
 // start-sanitize-vr4320
 
 
 // D-Multiply, Accumulate
-000000,5.RS,5.RT,00000,00000,101001::::DMAC
+000000,5.RS,5.RT,00000,00000,101001::64::DMAC
 "dmac r<RS>, r<RT>"
 *vr4100:
 // start-sanitize-vr4320
 
 // start-sanitize-vr4320
 // Count Leading Zeros
-000000,5.RS,00000,5.RD,00000,110101::::CLZ
+000000,5.RS,00000,5.RD,00000,110101::64::CLZ
 "clz r<RD>, r<RS>"
 // end-sanitize-vr4320
 // start-sanitize-vr4320
 // end-sanitize-vr4320
 // start-sanitize-vr4320
 // D-Count Leading Zeros
-000000,5.RS,00000,5.RD,00000,111101::::DCLZ
+000000,5.RS,00000,5.RD,00000,111101::64::DCLZ
 "dclz r<RD>, r<RS>"
 // end-sanitize-vr4320
 // start-sanitize-vr4320
 
 
 // end-sanitize-vr4320
-// start-sanitize-vrXXXX
+// start-sanitize-cygnus
 // Multiply and Move LO.
-000000,5.RS,5.RT,5.RD,00100,101000::::MUL
+000000,5.RS,5.RT,5.RD,00100,101000::64::MUL
 "mul r<RD>, r<RS>, r<RT>"
-// end-sanitize-vrXXXX
+// end-sanitize-cygnus
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 // start-sanitize-cygnus
 *vr5400:
 // end-sanitize-cygnus
-// start-sanitize-vrXXXX
+// start-sanitize-cygnus
 {
   SET_MulAcc (SD_, 0 + SignedMultiply (SD_, GPR[RS], GPR[RT]));
   GPR[RD] = Low32Bits (SD_, MulAcc (SD_));
 }
 
 
-// end-sanitize-vrXXXX
-// start-sanitize-vrXXXX
+// end-sanitize-cygnus
+// start-sanitize-cygnus
 // Unsigned Multiply and Move LO.
-000000,5.RS,5.RT,5.RD,00101,101000::::MULU
+000000,5.RS,5.RT,5.RD,00101,101000::64::MULU
 "mulu r<RD>, r<RS>, r<RT>"
-// end-sanitize-vrXXXX
+// end-sanitize-cygnus
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 // start-sanitize-cygnus
 *vr5400:
 // end-sanitize-cygnus
-// start-sanitize-vrXXXX
+// start-sanitize-cygnus
 {
   SET_MulAcc (SD_, 0 + UnsignedMultiply (SD_, GPR[RS], GPR[RT]));
   GPR[RD] = Low32Bits  (SD_, MulAcc (SD_));
 }
 
 
-// end-sanitize-vrXXXX
-// start-sanitize-vrXXXX
+// end-sanitize-cygnus
+// start-sanitize-cygnus
 // Multiply and Move HI.
-000000,5.RS,5.RT,5.RD,01100,101000::::MULHI
+000000,5.RS,5.RT,5.RD,01100,101000::64::MULHI
 "mulhi r<RD>, r<RS>, r<RT>"
-// end-sanitize-vrXXXX
+// end-sanitize-cygnus
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 // start-sanitize-cygnus
 *vr5400:
 // end-sanitize-cygnus
-// start-sanitize-vrXXXX
+// start-sanitize-cygnus
 {
   SET_MulAcc (SD_, 0 + SignedMultiply (SD_, GPR[RS], GPR[RT]));
   GPR[RD] = High32Bits (SD_, MulAcc (SD_));
 }
 
 
-// end-sanitize-vrXXXX
-// start-sanitize-vrXXXX
+// end-sanitize-cygnus
+// start-sanitize-cygnus
 // Unsigned Multiply and Move HI.
-000000,5.RS,5.RT,5.RD,01101,101000::::MULHIU
+000000,5.RS,5.RT,5.RD,01101,101000::64::MULHIU
 "mulhiu r<RD>, r<RS>, r<RT>"
-// end-sanitize-vrXXXX
+// end-sanitize-cygnus
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 // start-sanitize-cygnus
 *vr5400:
 // end-sanitize-cygnus
-// start-sanitize-vrXXXX
+// start-sanitize-cygnus
 {
   SET_MulAcc (SD_, 0 + UnsignedMultiply (SD_, GPR[RS], GPR[RT]));
   GPR[RD] = High32Bits (SD_, MulAcc (SD_));
 }
 
 
-// end-sanitize-vrXXXX
+// end-sanitize-cygnus
 // start-sanitize-cygnus
 // Multiply, Negate and Move LO.
-000000,5.RS,5.RT,5.RD,00011,011000::::MULS
+000000,5.RS,5.RT,5.RD,00011,011000::64::MULS
 "muls r<RD>, r<RS>, r<RT>"
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // Unsigned Multiply, Negate and Move LO.
-000000,5.RS,5.RT,5.RD,00011,011001::::MULSU
+000000,5.RS,5.RT,5.RD,00011,011001::64::MULSU
 "mulsu r<RD>, r<RS>, r<RT>"
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // Multiply, Negate and Move HI.
-000000,5.RS,5.RT,5.RD,01011,011000::::MULSHI
+000000,5.RS,5.RT,5.RD,01011,011000::64::MULSHI
 "mulshi r<RD>, r<RS>, r<RT>"
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // Unsigned Multiply, Negate and Move HI.
-000000,5.RS,5.RT,5.RD,01011,011001::::MULSHIU
+000000,5.RS,5.RT,5.RD,01011,011001::64::MULSHIU
 "mulshiu r<RD>, r<RS>, r<RT>"
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 }
 
 
-
-
-
 // end-sanitize-cygnus
+// start-sanitize-cygnus
+//
 // Multiply, Accumulate and Move LO.
-000000,5.RS,5.RT,5.RD,00010,101000::::MACC
+//
+000000,5.RS,5.RT,5.RD,00010,101000::64::MACC
 "macc r<RD>, r<RS>, r<RT>"
+// end-sanitize-cygnus
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 // start-sanitize-cygnus
 *vr5400:
 // end-sanitize-cygnus
+// start-sanitize-cygnus
 {
   SET_MulAcc (SD_, MulAcc (SD_) + SignedMultiply (SD_, GPR[RS], GPR[RT]));
   GPR[RD] = Low32Bits  (SD_, MulAcc (SD_));
 }
+// end-sanitize-cygnus
+
+// start-sanitize-vr4xxx
+000000,5.RS,5.RT,5.RD,00000,101000::::MACC
+"macc r<RD>, r<RS>, r<RT>"
+*vr4121:
+{
+  SET_MulAcc (SD_, MulAcc (SD_) + SignedMultiply (SD_, GPR[RS], GPR[RT]));
+  GPR[RD] = Low32Bits  (SD_, MulAcc (SD_));
+}
+
+000000,5.RS,5.RT,5.RD,00000,101001::::DMACC
+"dmacc r<RD>, r<RS>, r<RT>"
+*vr4121:
+{
+  LO =  LO + SignedMultiply (SD_, GPR[RS], GPR[RT]);
+  GPR[RD] = LO;
+}
+
+000000,5.RS,5.RT,5.RD,10000,101000::::MACCS
+"maccs r<RD>, r<RS>, r<RT>"
+*vr4121:
+{
+  SET_MulAcc (SD_, SaturatedAdd (SD_, MulAcc (SD_), 
+                                SignedMultiply (SD_, GPR[RS], GPR[RT])));
+  GPR[RD] = Low32Bits  (SD_, MulAcc (SD_));
+}
+
+000000,5.RS,5.RT,5.RD,10000,101001::::DMACCS
+"dmaccs r<RD>, r<RS>, r<RT>"
+*vr4121:
+{
+  LO = SaturatedAdd (SD_, LO, SignedMultiply (SD_, GPR[RS], GPR[RT]));
+  GPR[RD] = LO;
+}
 
 
-// start-sanitize-vrXXXX
+
+
+
+// end-sanitize-vr4xxx
+// start-sanitize-cygnus
+//
 // Unsigned Multiply, Accumulate and Move LO.
-000000,5.RS,5.RT,5.RD,00011,101000::::MACCU
+//
+000000,5.RS,5.RT,5.RD,00011,101000::64::MACCU
 "maccu r<RD>, r<RS>, r<RT>"
-// end-sanitize-vrXXXX
+// end-sanitize-cygnus
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 // start-sanitize-cygnus
 *vr5400:
 // end-sanitize-cygnus
-// start-sanitize-vrXXXX
+// start-sanitize-cygnus
+{
+  SET_MulAcc (SD_, MulAcc (SD_) + UnsignedMultiply (SD_, GPR[RS], GPR[RT]));
+  GPR[RD] = Low32Bits  (SD_, MulAcc (SD_));
+}
+
+// end-sanitize-cygnus
+// start-sanitize-vr4xxx
+000000,5.RS,5.RT,5.RD,00001,101000::64::MACCU
+"maccu r<RD>, r<RS>, r<RT>"
+*vr4121:
 {
   SET_MulAcc (SD_, MulAcc (SD_) + UnsignedMultiply (SD_, GPR[RS], GPR[RT]));
   GPR[RD] = Low32Bits  (SD_, MulAcc (SD_));
 }
 
+000000,5.RS,5.RT,5.RD,00001,101001::64::DMACCU
+"dmaccu r<RD>, r<RS>, r<RT>"
+*vr4121:
+{
+  LO = LO + UnsignedMultiply (SD_, GPR[RS], GPR[RT]);
+  GPR[RD] = LO;
+}
+
+000000,5.RS,5.RT,5.RD,10001,101000::64::MACCUS
+"maccus r<RD>, r<RS>, r<RT>"
+*vr4121:
+{
+  SET_MulAcc (SD_, 
+             SaturatedUnsignedAdd (SD_, MulAcc (SD_),
+                                   UnsignedMultiply (SD_, GPR[RS], GPR[RT])));
+  GPR[RD] = Low32Bits  (SD_, MulAcc (SD_));
+}
+
+000000,5.RS,5.RT,5.RD,10001,101001::64::DMACCUS
+"dmaccus r<RD>, r<RS>, r<RT>"
+*vr4121:
+{
+  LO = SaturatedUnsignedAdd (SD_, LO, 
+                            UnsignedMultiply (SD_, GPR[RS], GPR[RT]));
+  GPR[RD] = LO;
+}
+
+
 
-// end-sanitize-vrXXXX
-// start-sanitize-vrXXXX
+// end-sanitize-vr4xxx
+// start-sanitize-cygnus
+//
 // Multiply, Accumulate and Move HI.
-000000,5.RS,5.RT,5.RD,01010,101000::::MACCHI
+//
+000000,5.RS,5.RT,5.RD,01010,101000::64::MACCHI
 "macchi r<RD>, r<RS>, r<RT>"
-// end-sanitize-vrXXXX
+// end-sanitize-cygnus
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 // start-sanitize-cygnus
 *vr5400:
 // end-sanitize-cygnus
-// start-sanitize-vrXXXX
+// start-sanitize-cygnus
 {
   SET_MulAcc (SD_, MulAcc (SD_) + SignedMultiply (SD_, GPR[RS], GPR[RT]));
   GPR[RD] = High32Bits (SD_, MulAcc (SD_));
 }
 
+// end-sanitize-cygnus
+// start-sanitize-vr4xxx
+000000,5.RS,5.RT,5.RD,01000,101000::64::MACCHI
+"macchi r<RD>, r<RS>, r<RT>"
+*vr4121:
+{
+  SET_MulAcc (SD_, MulAcc (SD_) + SignedMultiply (SD_, GPR[RS], GPR[RT]));
+  GPR[RD] = High32Bits (SD_, MulAcc (SD_));
+}
 
-// end-sanitize-vrXXXX
-// start-sanitize-vrXXXX
+000000,5.RS,5.RT,5.RD,11000,101000::64::MACCHIS
+"macchis r<RD>, r<RS>, r<RT>"
+*vr4121:
+{
+  SET_MulAcc (SD_, SaturatedAdd (SD_, MulAcc (SD_),
+                                SignedMultiply (SD_, GPR[RS], GPR[RT])));
+  GPR[RD] = High32Bits (SD_, MulAcc (SD_));
+}
+
+
+
+// end-sanitize-vr4xxx
+// start-sanitize-cygnus
+//
 // Unsigned Multiply, Accumulate and Move HI.
-000000,5.RS,5.RT,5.RD,01011,101000::::MACCHIU
+//
+000000,5.RS,5.RT,5.RD,01011,101000::64::MACCHIU
 "macchiu r<RD>, r<RS>, r<RT>"
-// end-sanitize-vrXXXX
+// end-sanitize-cygnus
 // start-sanitize-vr4320
 *vr4320:
 // end-sanitize-vr4320
 // start-sanitize-cygnus
 *vr5400:
 // end-sanitize-cygnus
-// start-sanitize-vrXXXX
+// start-sanitize-cygnus
 {
   SET_MulAcc (SD_, MulAcc (SD_) + UnsignedMultiply (SD_, GPR[RS], GPR[RT]));
   GPR[RD] = High32Bits (SD_, MulAcc (SD_));
 
 }
 
+// end-sanitize-cygnus
+// start-sanitize-vr4xxx
+000000,5.RS,5.RT,5.RD,01001,101000::64::MACCHIU
+"macchiu r<RD>, r<RS>, r<RT>"
+*vr4121:
+{
+  SET_MulAcc (SD_, MulAcc (SD_) + UnsignedMultiply (SD_, GPR[RS], GPR[RT]));
+  GPR[RD] = High32Bits (SD_, MulAcc (SD_));
 
+}
 
-// end-sanitize-vrXXXX
-// start-sanitize-cygnus
-// Multiply, Negate, Accumulate and Move LO.
-000000,5.RS,5.RT,5.RD,00111,011000::::MSAC
-"msac r<RD>, r<RS>, r<RT>"
-// end-sanitize-cygnus
-// start-sanitize-cygnus
-*vr5400:
-// end-sanitize-cygnus
-// start-sanitize-cygnus
+000000,5.RS,5.RT,5.RD,11001,101000::64::MACCHIUS
+"macchius r<RD>, r<RS>, r<RT>"
+*vr4121:
 {
-  SET_MulAcc (SD_, MulAcc (SD_) - SignedMultiply (SD_, GPR[RS], GPR[RT]));
-  GPR[RD] = Low32Bits  (SD_, MulAcc (SD_));
+  SET_MulAcc (SD_, 
+             SaturatedUnsignedAdd (SD_, MulAcc (SD_),
+                                   UnsignedMultiply (SD_, GPR[RS], GPR[RT])));
+  GPR[RD] = High32Bits (SD_, MulAcc (SD_));
+
 }
 
 
-// end-sanitize-cygnus
+
+// end-sanitize-vr4xxx
 // start-sanitize-cygnus
 // Unsigned Multiply, Negate, Accumulate and Move LO.
-000000,5.RS,5.RT,5.RD,00111,011001::::MSACU
+000000,5.RS,5.RT,5.RD,00111,011001::64::MSACU
 "msacu r<RD>, r<RS>, r<RT>"
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // Unsigned Multiply, Negate, Accumulate and Move HI.
-000000,5.RS,5.RT,5.RD,01111,011001::::MSACHIU
+000000,5.RS,5.RT,5.RD,01111,011001::64::MSACHIU
 "msachiu r<RD>, r<RS>, r<RT>"
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // Rotate Right.
-000000,00001,5.RT,5.RD,5.SHIFT,000010::::ROR
+000000,00001,5.RT,5.RD,5.SHIFT,000010::64::ROR
 "ror r<RD>, r<RT>, <SHIFT>"
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // Rotate Right Variable.
-000000,5.RS,5.RT,5.RD,00001,000110::::RORV
+000000,5.RS,5.RT,5.RD,00001,000110::64::RORV
 "rorv r<RD>, r<RT>, <RS>"
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // Double Rotate Right.
-000000,00001,5.RT,5.RD,5.SHIFT,111010::::DROR
+000000,00001,5.RT,5.RD,5.SHIFT,111010::64::DROR
 "dror r<RD>, r<RT>, <SHIFT>"
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // Double Rotate Right Plus 32.
-000000,00001,5.RT,5.RD,5.SHIFT,111110::::DROR32
+000000,00001,5.RT,5.RD,5.SHIFT,111110::64::DROR32
 "dror32 r<RD>, r<RT>, <SHIFT>"
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // end-sanitize-cygnus
 // start-sanitize-cygnus
 // Double Rotate Right Variable.
-000000,5.RS,5.RT,5.RD,00001,010110::::DRORV
+000000,5.RS,5.RT,5.RD,00001,010110::64::DRORV
 "drorv r<RD>, r<RT>, <RS>"
 // end-sanitize-cygnus
 // start-sanitize-cygnus