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