tx.igen revision 1.1 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 christos signed64 prod = (U8_4 (VL4_8 (HI), VL4_8 (LO))
12 1.1 christos + ((signed64) EXTEND32 (GPR[RT])
13 1.1 christos * (signed64) 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 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 christos unsigned64 prod = (U8_4 (VL4_8 (HI), VL4_8 (LO))
30 1.1 christos + ((unsigned64) VL4_8 (GPR[RS])
31 1.1 christos * (unsigned64) 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 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