// -*- C -*-
//
// toshiba specific instructions.
//

011100,5.RS,5.RT,5.RD,00000000000:MMINORM:::MADD
"madd r<RS>, r<RT>":RD == 0
"madd r<RD>, r<RS>, r<RT>"
*r3900
{
  int64_t prod = (U8_4 (VL4_8 (HI), VL4_8 (LO))
		   + ((int64_t) EXTEND32 (GPR[RT])
		      * (int64_t) EXTEND32 (GPR[RS])));
  check_mult_hilo (SD_, HIHISTORY, LOHISTORY);
  TRACE_ALU_INPUT2 (GPR[RS], GPR[RT]);
  LO = EXTEND32 (prod);
  HI = EXTEND32 (VH4_8 (prod));
  TRACE_ALU_RESULT2 (HI, LO);
  if (RD != 0)
    GPR[RD] = LO;
}


011100,5.RS,5.RT,5.RD,00000000001:MMINORM:::MADDU
"maddu r<RS>, r<RT>":RD == 0
"maddu r<RD>, r<RS>, r<RT>"
*r3900
{
  uint64_t prod = (U8_4 (VL4_8 (HI), VL4_8 (LO))
		     + ((uint64_t) VL4_8 (GPR[RS])
			* (uint64_t) VL4_8 (GPR[RT])));
  check_mult_hilo (SD_, HIHISTORY, LOHISTORY);
  TRACE_ALU_INPUT2 (GPR[RS], GPR[RT]);
  LO = EXTEND32 (prod);
  HI = EXTEND32 (VH4_8 (prod));
  TRACE_ALU_RESULT2 (HI, LO);
  if (RD != 0)
    GPR[RD] = LO;
}

000000,CODE.20,001110::CO1:::SDBBP
"sdbbp"
*r3900:
{
  SignalException (DebugBreakPoint, instruction);
}
