| // -*- 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); | |
| } |