]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Checkpoint IGEN version of MIPS simulator.
authorAndrew Cagney <cagney@redhat.com>
Thu, 16 Oct 1997 03:41:57 +0000 (03:41 +0000)
committerAndrew Cagney <cagney@redhat.com>
Thu, 16 Oct 1997 03:41:57 +0000 (03:41 +0000)
sim/mips/mips.igen

index 90c6df1ffaae58c62a9436fd81e12540cfdf511a..347c37ff73b45eb3c0a480b128c5dd48a368f65b 100644 (file)
 // end-sanitize-tx19
 {
   address_word offset = EXTEND16 (OFFSET) << 2;
-  /* NOTE: The branch occurs AFTER the next instruction has been
-     executed */
   if (GPR[RS] <= 0)
-    {
-      DSPC = (PC + offset);
-      DELAYSLOT ();
-    }
+    DSPC = (PC + offset);
   else
-    NULLIFY ();
+    NULLIFY_NIA ();
 }
 
 
 *tx19:
 // end-sanitize-tx19
 {
-  /* NOTE: The branch occurs AFTER the next instruction has been
-     executed */
+  address_word offset = EXTEND16 (OFFSET) << 2;
   if (GPR[RS] != GPR[RT])
-    {
-      DSPC = (PC + offset);
-      DELAYSLOT ();
-    }
+    DSPC = (PC + offset);
   else
-    NULLIFY ();
+    NULLIFY_NIA ();
 }
 
 
 *tx19:
 // end-sanitize-tx19
 {
-  decode_coproc (SD, instruction_0);
+  DecodeCoproc (instruction_0);
 }
 
 
 *tx19:
 // end-sanitize-tx19
 {
-  GPR[RT] = GPR[RS] + EXTEND16 (immediate);
+  GPR[RT] = GPR[RS] + EXTEND16 (IMMEDIATE);
 }
 
 
          {
            unsigned64 memval = 0;
            unsigned64 memval1 = 0;
-           unsigned64 mask = 0x7;
-           unsigned int shift = 4;
-           unsigned int reverse = (ReverseEndian ? (mask >> shift) : 0);
-           unsigned int bigend = (BigEndianCPU ? (mask >> shift) : 0);
-           unsigned int byte;
            LoadMemory(&memval,&memval1,uncached,AccessLength_DOUBLEWORD,paddr,vaddr,isDATA,isREAL);
            GPR[destreg] = memval;
          }
          {
            unsigned64 memval = 0;
            unsigned64 memval1 = 0;
-           unsigned64 mask = 0x7;
-           unsigned int shift = 4;
-           unsigned int reverse = (ReverseEndian ? (mask >> shift) : 0);
-           unsigned int bigend = (BigEndianCPU ? (mask >> shift) : 0);
-           unsigned int byte;
            LoadMemory(&memval,&memval1,uncached,AccessLength_DOUBLEWORD,paddr,vaddr,isDATA,isREAL);
            COP_LD(((instruction >> 26) & 0x3),destreg,memval);;
          }
          {
            unsigned64 memval = 0;
            unsigned64 memval1 = 0;
-           unsigned64 mask = 0x7;
-           unsigned int shift = 4;
-           unsigned int reverse = (ReverseEndian ? (mask >> shift) : 0);
-           unsigned int bigend = (BigEndianCPU ? (mask >> shift) : 0);
-           unsigned int byte;
            LoadMemory(&memval,&memval1,uncached,AccessLength_DOUBLEWORD,paddr,vaddr,isDATA,isREAL);
            GPR[destreg] = memval;
            LLBIT = 1;
 }
 
 
-1110,ZZ!0!1!3,5.RS,5.RT,16.OFFSET:NORMAL:32::SWCz
+1110,ZZ!0!1!3,5.BASE,5.RT,16.OFFSET:NORMAL:32::SWCz
 "swc<ZZ> r<RT>, <OFFSET>(r<BASE>)"
 *mipsI:
 *mipsII:
 *tx19:
 // end-sanitize-tx19
 {
-  SyncOperation (sd, STYPE);
+  SyncOperation (STYPE);
 }
 
 
          {
            unsigned64 memval = 0;
            unsigned64 memval1 = 0;
-           unsigned64 mask = 0x7;
-           unsigned int shift = 4;
-           unsigned int reverse = (ReverseEndian ? (mask >> shift) : 0);
-           unsigned int bigend = (BigEndianCPU ? (mask >> shift) : 0);
-           unsigned int byte;
            LoadMemory(&memval,&memval1,uncached,AccessLength_DOUBLEWORD,paddr,vaddr,isDATA,isREAL);
            COP_LD(1,destreg,memval);;
          }
   if ((format != fmt_single) && (format != fmt_double))
    SignalException(ReservedInstruction,instruction);
   else
-   StoreFPR(destreg,format,Recip(SquareRoot(ValueFPR(fs,format),format)));
+   StoreFPR(destreg,format,Recip(SquareRoot(ValueFPR(fs,format),format),format));
   }
 }
 
 // SWC1
 
 
-010011,5.BASE,5.FT,5.FS,00000,001000:COP1X:32::SWXC1
-"swxc1 f<FT>, r<OFFSET>(r<BASE>)"
+010011,5.BASE,5.INDEX,5.FS,00000,001000:COP1X:32::SWXC1
+"swxc1 f<FS>, r<INDEX>(r<BASE>)"
 *mipsIV:
 // start-sanitize-r5900
 *r5900:
     op1 = VL4_8(op1);
     /* NOTE: The jump occurs AFTER the next instruction has been executed */
     DSPC = op1;
-    JALDELAYSLOT();
+    /* JALDELAYSLOT(); FIXME */
   }
 }
 
   signed_word op1 = GPR[((instruction >> 21) & 0x0000001F)];
   {
     if (HI1ACCESS != 0)
-      sim_warning("MT (move-to) over-writing HI register value");
+      sim_io_error(sd,"MT (move-to) over-writing HI register value\n");
     HI1 = op1;
     HI1ACCESS = 3; /* 3rd instruction will be safe */
   }
   signed_word op1 = GPR[((instruction >> 21) & 0x0000001F)];
   {
     if (LO1ACCESS != 0)
-      sim_warning("MT (move-to) over-writing LO register value");
+      sim_io_error(sd,"MT (move-to) over-writing LO register value");
     LO1 = op1;
     LO1ACCESS = 3; /* 3rd instruction will be safe */
   }
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<HALFWORDS_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<WORDS_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < BYTES_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < HALFWORDS_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < WORDS_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < BYTES_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < HALFWORDS_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < WORDS_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < BYTES_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < HALFWORDS_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < WORDS_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<HALFWORDS_IN_MMI_REGS/2;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<WORDS_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<BYTES_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<HALFWORDS_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<WORDS_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<BYTES_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<HALFWORDS_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<WORDS_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UH(destreg,7) = GPR_UH(destreg,6) = GPR_UH(destreg,5) = GPR_UH(destreg,4) = RT_UH(4);
     GPR_UH(destreg,3) = GPR_UH(destreg,2) = GPR_UH(destreg,1) = GPR_UH(destreg,0) = RT_UH(0);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UD(destreg,0) = RT_UD(0);
     GPR_UD(destreg,1) = RS_UD(0);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UD(destreg,0) = RS_UD(1);
     GPR_UD(destreg,1) = RT_UD(1);
 011100,5.RS,5.RT,0000011101001001:MMI2:32::PDIVBW
 *r5900:
 {
-  unsigned32 instruction = instruction_0;
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     signed32 devisor = RT_SH(0);
     if (devisor == -1)
 011100,5.RS,5.RT,0000001101101001:MMI3:32::PDIVUW
 *r5900:
 {
-  unsigned32 instruction = instruction_0;
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     if (RT_UW(0) != 0)
       {
 011100,5.RS,5.RT,0000001101001001:MMI2:32::PDIVW
 *r5900:
 {
-  unsigned32 instruction = instruction_0;
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
-  signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
-  signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rs_reg = GPR[RS];
+  signed_word rs_reg1 = GPR1[RS];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     if (RT_SW(0) == -1)
       {
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UH(destreg,0) = RT_UH(0);
     GPR_UH(destreg,1) = RT_UH(2);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UW(destreg,0) = RT_UW(0);
     GPR_UW(destreg,1) = RT_UW(2);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UH(destreg,0) = RT_UH(2);
     GPR_UH(destreg,1) = RT_UH(1);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UW(destreg,0) = RT_UW(2);
     GPR_UW(destreg,1) = RT_UW(1);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<WORDS_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UB(destreg,0)  = RT_UB(0);
     GPR_UB(destreg,1)  = RS_UB(0);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UH(destreg,0)  = RT_UH(0);
     GPR_UH(destreg,1)  = RS_UH(0);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UW(destreg,0)  = RT_UW(0);
     GPR_UW(destreg,1)  = RS_UW(0);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UB(destreg,0)  = RT_UB(8);
     GPR_UB(destreg,1)  = RS_UB(8);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UH(destreg,0)  = RT_UH(4);
     GPR_UH(destreg,1)  = RS_UH(4);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UW(destreg,0)  = RT_UW(2);
     GPR_UW(destreg,1)  = RS_UW(2);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_SW(destreg,0) = LO_SW(0) = (RS_SH(1) * RT_SH(1)) + (RS_SH(0) * RT_SH(0));
     GPR_SW(destreg,1) = HI_SW(0) = (RS_SH(3) * RT_SH(3)) + (RS_SH(2) * RT_SH(2));
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_SW(destreg,0) = LO_SW(0) = (RS_SH(1) * RT_SH(1)) - (RS_SH(0) * RT_SH(0));
     GPR_SW(destreg,1) = HI_SW(0) = (RS_SH(3) * RT_SH(3)) - (RS_SH(2) * RT_SH(2));
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UH(destreg,0)  = RT_UH(0);
     GPR_UH(destreg,1)  = RS_UH(4);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UH(destreg,0) = RT_UH(0);
     GPR_UH(destreg,1) = RS_UH(0);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_SW(destreg,0) = LO_SW(0) += (RS_SH(0) * RT_SH(0));
     LO_SW(1) += (RS_SH(1) * RT_SH(1));
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     unsigned64 sum0 = U8_4 (HI_SW(0), LO_SW(0));
-    unsigned64 sum1 = u8_4 (HI_SW(2), LO_SW(2));
+    unsigned64 sum1 = U8_4 (HI_SW(2), LO_SW(2));
     unsigned64 prod0 = (unsigned64)RS_UW(0) * (unsigned64)RT_UW(0);
     unsigned64 prod1 = (unsigned64)RS_UW(2) * (unsigned64)RT_UW(2);
     sum0 += prod0;
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     signed64 sum0 = WORD64( HI_SW(0), LO_SW(0) );
     signed64 sum1 = WORD64( HI_SW(2), LO_SW(2) );
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<HALFWORDS_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<WORDS_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<HALFWORDS_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<WORDS_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_SW(destreg,0) = LO_SW(0) -= (RS_SH(0) * RT_SH(0));
     LO_SW(1) -= (RS_SH(1) * RT_SH(1));
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     signed64 sum0 = WORD64( HI_SW(0), LO_SW(0) );
     signed64 sum1 = WORD64( HI_SW(2), LO_SW(2) );
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_SW(destreg,0) = LO_SW(0) = (RS_SH(0) * RT_SH(0));
     LO_SW(1) = (RS_SH(1) * RT_SH(1));
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     unsigned64 sum0 = 0;
     unsigned64 sum1 = 0;
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     signed64 sum0 = 0;
     signed64 sum1 = 0;
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<WORDS_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<WORDS_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<WORDS_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UB(destreg,0)  = RT_UB(0);
     GPR_UB(destreg,1)  = RT_UB(2);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UH(destreg,0)  = RT_UH(0);
     GPR_UH(destreg,1)  = RT_UH(2);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UW(destreg,0)  = RT_UW(0);
     GPR_UW(destreg,1)  = RT_UW(2);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UH(destreg,0)  = RT_UH(3);
     GPR_UH(destreg,1)  = RT_UH(2);
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UW(destreg,0)  = RT_UW(0);
     GPR_UW(destreg,1)  = RT_UW(3);
   unsigned32 instruction = instruction_0;
   int op1 = ((instruction >> 6) & 0x0000001F);
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int shift_by = op1 & (16-1);
     int i;
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int s0 = (RS_UB(0) & 0x1F);
     int s1 = (RS_UB(8) & 0x1F);
   unsigned32 instruction = instruction_0;
   int op1 = ((instruction >> 6) & 0x0000001F);
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int shift_by = op1 & (32-1);
     int i;
   unsigned32 instruction = instruction_0;
   int op1 = ((instruction >> 6) & 0x0000001F);
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int shift_by = op1 & (16-1);
     int i;
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_SD(destreg,0) = SIGNEXTEND( (RT_SW (0) >> (RS_UB(0) & 0x1F)), 32-(RS_UB(0) & 0x1F) );
     GPR_SD(destreg,1) = SIGNEXTEND( (RT_SW (2) >> (RS_UB(8) & 0x1F)), 32-(RS_UB(8) & 0x1F) );
   unsigned32 instruction = instruction_0;
   int op1 = ((instruction >> 6) & 0x0000001F);
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int shift_by = op1 & (32-1);
     int i;
   unsigned32 instruction = instruction_0;
   int op1 = ((instruction >> 6) & 0x0000001F);
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int shift_by = op1 & (16-1);
     int i;
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     GPR_UD(destreg,0) = SIGNEXTEND ( RT_UW(0) >> (RS_UB(0) & 0x1F), 31);
     GPR_UD(destreg,1) = SIGNEXTEND ( RT_UW(2) >> (RS_UB(8) & 0x1F), 31);
   unsigned32 instruction = instruction_0;
   int op1 = ((instruction >> 6) & 0x0000001F);
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int shift_by = op1 & (32-1);
     int i;
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < BYTES_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < HALFWORDS_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < BYTES_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < HALFWORDS_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < WORDS_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < BYTES_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < HALFWORDS_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < WORDS_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for (i=0; i < WORDS_IN_MMI_REGS; i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int i;
     for(i=0;i<WORDS_IN_MMI_REGS;i++)
 {
   unsigned32 instruction = instruction_0;
   int destreg = ((instruction >> 11) & 0x0000001F);
-  signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
-  signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word rs_reg = GPR[((instruction >> 21) & 0x0000001F)];
   signed_word rs_reg1 = GPR1[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     int bytes = (SA / 8) % 16;
     if (SA % 8)
   signed_word rsigned_word = GPR[((instruction >> 16) & 0x0000001F)];
   signed_word rsigned_word1 = GPR1[((instruction >> 16) & 0x0000001F)];
   signed_word op1 = GPR[((instruction >> 21) & 0x0000001F)];
+  signed_word rt_reg = GPR[RT];
+  signed_word rt_reg1 = GPR1[RT];
   {
     unsigned64 vaddr = ((unsigned64)op1 + offset);
     unsigned64 paddr;