cc5.S revision 1.1 1 // ALU test program.
2 // Test instructions reg = (A0+=A1)
3
4 #include "test.h"
5 .include "testutils.inc"
6 start
7
8 R0 = 0;
9 ASTAT = R0;
10
11 loadsym P0, data0;
12
13 R0 = [ P0 ++ ];
14 R1 = [ P0 ++ ];
15 R2 = [ P0 ++ ];
16 R3 = [ P0 ++ ];
17 R4 = [ P0 ++ ];
18
19 // add accums and transfer result
20 A1 = A0 = 0;
21 A1.w = R0;
22 A0.w = R0;
23 R6 = ( A0 += A1 );
24 CHECKREG R6, 0x22222222;
25 R6 = A0.w;
26 CHECKREG R6, 0x22222222;
27 R7 = A0.x;
28 CHECKREG R7, 0;
29 R6 = A1.w;
30 CHECKREG R6, 0x11111111;
31 R7 = A1.x;
32 CHECKREG R7, 0;
33
34 // add accums and transfer result (saturate positive)
35 R7 = 0;
36 ASTAT = R7;
37 A1 = A0 = 0;
38 A1.w = R1;
39 A0.w = R1;
40 R6 = ( A0 += A1 );
41 CHECKREG R6, 0x7fffffff;
42 R6 = A0.w;
43 CHECKREG R6, 0xfffffffe;
44 R7 = A0.x;
45 CHECKREG R7, 0;
46 R6 = A1.w;
47 CHECKREG R6, 0x7fffffff;
48 _DBG ASTAT;
49 R7 = A1.x;
50 _DBG ASTAT;
51 CHECKREG R7, 0;
52 R7 = ASTAT;
53 CHECKREG R7, (_VS|_V|_V_COPY);
54
55 // add accums and transfer result (saturate negative)
56 R7 = 0;
57 ASTAT = R7;
58 A1 = A0 = 0;
59 A1.w = R2;
60 A0.w = R2;
61 A1.x = R3.L;
62 A0.x = R3.L;
63 R6 = ( A0 += A1 );
64 CHECKREG R6, 0x80000000;
65 R6 = A0.w;
66 CHECKREG R6, 0x00000000;
67 R7 = A0.x;
68 CHECKREG R6, 0;
69 R6 = A1.w;
70 CHECKREG R6, 0x80000000;
71 R7 = A1.x;
72 CHECKREG R7, 0xffffffff;
73 R7 = ASTAT;
74 _DBG ASTAT;
75 CHECKREG R7, (_VS|_V|_V_COPY|_AC0|_AC0_COPY|_AN);
76
77 pass
78
79 .data
80 data0:
81 .dw 0x1111
82 .dw 0x1111
83 .dw 0xffff
84 .dw 0x7fff
85 .dw 0x0000
86 .dw 0x8000
87 .dw 0x00ff
88 .dw 0x0000
89 .dw 0x0000
90 .dw 0x0000
91