Commit | Line | Data |
---|---|---|
1d7b4a70 MF |
1 | // MAC test program. |
2 | // Test for positive and negative saturation using | |
3 | // SIGNED FRACTIONAL mode. | |
4 | # mach: bfin | |
5 | ||
6 | #include "test.h" | |
7 | .include "testutils.inc" | |
8 | start | |
9 | ||
10 | init_r_regs 0; | |
11 | ASTAT = R0; | |
12 | ||
13 | // load r0=0x00007fff | |
14 | // load r1=0x00007fff | |
15 | loadsym p0, data0 | |
16 | R0 = [ P0 ++ ]; | |
17 | R1 = [ P0 ++ ]; | |
18 | ||
19 | R5 = 0; | |
20 | R4 = 0; | |
21 | BITSET( R4 , 9 ); | |
22 | A1 = A0 = 0; | |
23 | ||
24 | LOOP1: | |
25 | A1 -= R0.L * R1.L, A0 += R0.L * R1.L; | |
26 | //_DBG a1; | |
27 | //_DBG a0; | |
28 | R4 += -1; | |
29 | CC = R4 == R5; | |
30 | IF !CC JUMP LOOP1; | |
31 | R3 = ASTAT; | |
32 | CHECKREG R3, (_AV1S|_AV1|_AV0S|_AV0|_AC0|_AC0_COPY|_CC|_AZ); | |
33 | ||
34 | _DBG A1; | |
35 | _DBG A0; | |
36 | ||
37 | R6 = A1.w; | |
38 | _DBG ASTAT; | |
39 | R7.L = A1.x; | |
40 | R3 = ASTAT; | |
41 | _DBG r3; | |
42 | CHECKREG R3, (_AV1S|_AV1|_AV0S|_AV0|_AC0|_AC0_COPY|_CC|_AZ); | |
43 | ||
44 | CHECKREG R6, 0; | |
45 | CHECKREG R7, 0x0000FF80; | |
46 | R6 = A0.w; | |
47 | R7.L = A0.x; | |
48 | CHECKREG R6, 0xffffffff; | |
49 | CHECKREG R7, 0x7f; | |
50 | ||
51 | pass | |
52 | ||
53 | .data 0x1000; | |
54 | data0: | |
55 | .dw 0x7fff | |
56 | .dw 0x0000 | |
57 | .dw 0x7fff | |
58 | .dw 0x0000 |