OSDN Git Service

sim: bfin: import testsuite
[pf3gnuchains/pf3gnuchains4x.git] / sim / testsuite / sim / bfin / s30.s
1 //  Test signbits40
2 # mach: bfin
3
4 .include "testutils.inc"
5         start
6
7
8 // positive value in accum, smaller than 1.0
9         A1 = A0 = 0;
10         R0.L = 0xffff;
11         R0.H = 0x0000;
12         A0.w = R0;
13         R0.L = 0x0000;
14         A0.x = R0;
15
16         R5.L = SIGNBITS A0;
17         _DBG R5;
18         A0 = ASHIFT A0 BY R5.L;
19         _DBG A0;
20
21         R4 = A0.w;
22         R5 = A0.x;
23         DBGA ( R4.H , 0x7fff ); DBGA ( R4.L , 0x8000 );
24         DBGA ( R5.H , 0x0000 ); DBGA ( R5.L , 0x0000 );
25
26 // neg value in accum, larger than -1.0
27         A1 = A0 = 0;
28         R0.L = 0x0000;
29         R0.H = 0xffff;
30         A0.w = R0;
31         R0.L = 0x00ff;
32         A0.x = R0;
33
34         R5.L = SIGNBITS A0;
35         _DBG R5;
36         A0 = ASHIFT A0 BY R5.L;
37         _DBG A0;
38
39         R4 = A0.w;
40         R5 = A0.x;
41         DBGA ( R4.H , 0x8000 ); DBGA ( R4.L , 0x0000 );
42         DBGA ( R5.H , 0xffff ); DBGA ( R5.L , 0xffff );
43
44 // positive value in accum, larger than 1.0
45         A1 = A0 = 0;
46         R0.L = 0xffff;
47         R0.H = 0xffff;
48         A0.w = R0;
49         R0.L = 0x000f;
50         A0.x = R0;
51
52         R5.L = SIGNBITS A0;
53         _DBG R5;
54         A0 = ASHIFT A0 BY R5.L;
55         _DBG A0;
56
57         R4 = A0.w;
58         R5 = A0.x;
59         DBGA ( R4.H , 0x7fff ); DBGA ( R4.L , 0xffff );
60         DBGA ( R5.H , 0x0000 ); DBGA ( R5.L , 0x0000 );
61
62 // negative value in accum, smaller than -1.0
63         A1 = A0 = 0;
64         R0.L = 0x0000;
65         R0.H = 0x0000;
66         A0.w = R0;
67         R0.L = 0x0080;
68         A0.x = R0;
69
70         R5.L = SIGNBITS A0;
71         _DBG R5;
72         A0 = ASHIFT A0 BY R5.L;
73         _DBG A0;
74
75         R4 = A0.w;
76         R5 = A0.x;
77         DBGA ( R4.H , 0x8000 ); DBGA ( R4.L , 0x0000 );
78         DBGA ( R5.H , 0xffff ); DBGA ( R5.L , 0xffff );
79
80 // no normalization
81         A1 = A0 = 0;
82         R0.L = 0xfffa;
83         R0.H = 0x7fff;
84         A0.w = R0;
85         R0.L = 0x0000;
86         A0.x = R0;
87
88         R5.L = SIGNBITS A0;
89         _DBG R5;
90         A0 = ASHIFT A0 BY R5.L;
91         _DBG A0;
92
93         R4 = A0.w;
94         R5 = A0.x;
95         DBGA ( R4.H , 0x7fff ); DBGA ( R4.L , 0xfffa );
96         DBGA ( R5.H , 0x0000 ); DBGA ( R5.L , 0x0000 );
97
98 // no normalization (-1.0)
99         A1 = A0 = 0;
100         R0.L = 0x0000;
101         R0.H = 0x8000;
102         A0.w = R0;
103         R0.L = 0x00ff;
104         A0.x = R0;
105
106         R5.L = SIGNBITS A0;
107         _DBG R5;
108         A0 = ASHIFT A0 BY R5.L;
109         _DBG A0;
110
111         R4 = A0.w;
112         R5 = A0.x;
113         DBGA ( R4.H , 0x8000 ); DBGA ( R4.L , 0x0000 );
114         DBGA ( R5.H , 0xffff ); DBGA ( R5.L , 0xffff );
115
116 // norm by 1
117         A1 = A0 = 0;
118         R0.L = 0x0000;
119         R0.H = 0x8000;
120         A0.w = R0;
121         R0.L = 0x0000;
122         A0.x = R0;
123
124         R5.L = SIGNBITS A0;
125         _DBG R5;
126         A0 = ASHIFT A0 BY R5.L;
127         _DBG A0;
128
129         R4 = A0.w;
130         R5 = A0.x;
131         DBGA ( R4.H , 0x4000 ); DBGA ( R4.L , 0x0000 );
132         DBGA ( R5.H , 0x0000 ); DBGA ( R5.L , 0x0000 );
133
134 // norm by 1
135         A1 = A0 = 0;
136         R0.L = 0x0000;
137         R0.H = 0x0000;
138         A0.w = R0;
139         R0.L = 0x00ff;
140         A0.x = R0;
141
142         R5.L = SIGNBITS A0;
143         _DBG R5;
144         A0 = ASHIFT A0 BY R5.L;
145         _DBG A0;
146
147         R4 = A0.w;
148         R5 = A0.x;
149         DBGA ( R4.H , 0x8000 ); DBGA ( R4.L , 0x0000 );
150         DBGA ( R5.H , 0xffff ); DBGA ( R5.L , 0xffff );
151
152         pass