tizen 2.4 release
[external/binutils.git] / sim / testsuite / sim / bfin / cc5.S
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