1// -*- C -*-
2//
3// toshiba specific instructions.
4//
5
6011100,5.RS,5.RT,5.RD,00000000000:MMINORM:::MADD
7"madd r<RS>, r<RT>":RD == 0
8"madd r<RD>, r<RS>, r<RT>"
9*r3900
10{
11  int64_t prod = (U8_4 (VL4_8 (HI), VL4_8 (LO))
12		   + ((int64_t) EXTEND32 (GPR[RT])
13		      * (int64_t) EXTEND32 (GPR[RS])));
14  check_mult_hilo (SD_, HIHISTORY, LOHISTORY);
15  TRACE_ALU_INPUT2 (GPR[RS], GPR[RT]);
16  LO = EXTEND32 (prod);
17  HI = EXTEND32 (VH4_8 (prod));
18  TRACE_ALU_RESULT2 (HI, LO);
19  if (RD != 0)
20    GPR[RD] = LO;
21}
22
23
24011100,5.RS,5.RT,5.RD,00000000001:MMINORM:::MADDU
25"maddu r<RS>, r<RT>":RD == 0
26"maddu r<RD>, r<RS>, r<RT>"
27*r3900
28{
29  uint64_t prod = (U8_4 (VL4_8 (HI), VL4_8 (LO))
30		     + ((uint64_t) VL4_8 (GPR[RS])
31			* (uint64_t) VL4_8 (GPR[RT])));
32  check_mult_hilo (SD_, HIHISTORY, LOHISTORY);
33  TRACE_ALU_INPUT2 (GPR[RS], GPR[RT]);
34  LO = EXTEND32 (prod);
35  HI = EXTEND32 (VH4_8 (prod));
36  TRACE_ALU_RESULT2 (HI, LO);
37  if (RD != 0)
38    GPR[RD] = LO;
39}
40
41000000,CODE.20,001110::CO1:::SDBBP
42"sdbbp"
43*r3900:
44{
45  SignalException (DebugBreakPoint, instruction);
46}
47