Support R_SPARC_WDISP10 and R_SPARC_H34.
[external/binutils.git] / sim / testsuite / sim / bfin / m2.s
1 //  MAC test program.
2 //  Test basic edge values
3 //  SIGNED FRACTIONAL mode
4 //  test ops: "+=" "-=" "=" "NOP"
5 # mach: bfin
6
7 .include "testutils.inc"
8         start
9
10
11 // load r0=0x80007fff
12 // load r1=0x80007fff
13 // load r2=0xf0000000
14 // load r3=0x0000007f
15 // load r4=0x00000080
16         loadsym P0, data0;
17         R0 = [ P0 ++ ];
18         R1 = [ P0 ++ ];
19         R2 = [ P0 ++ ];
20         R3 = [ P0 ++ ];
21         R4 = [ P0 ++ ];
22
23 // 0x7fff * 0x7fff = 0x007ffe0002
24         R7 = 0;
25         ASTAT = R7;
26         A1 = A0 = 0;
27         A1 += R0.L * R1.L, A0 += R0.L * R1.L;
28         R6 = A1.w;
29         _DBG ASTAT;
30         _DBG A0;
31         R7.L = A1.x;
32         _DBG ASTAT;
33         DBGA ( R6.L , 0x0002 );
34         DBGA ( R6.H , 0x7ffe );
35         DBGA ( R7.L , 0x0000 );
36         CC = AZ;        R7 = CC; DBGA ( R7.L , 0x0 );
37         CC = AN;        R7 = CC; DBGA ( R7.L , 0x0 );
38         CC = AC0;       R7 = CC; DBGA ( R7.L , 0x0 );
39         CC = AV0;       R7 = CC; DBGA ( R7.L , 0x0 );
40         CC = AV1;       R7 = CC; DBGA ( R7.L , 0x0 );
41
42 // 0x8000 * 0x7fff = 0xff80010000
43         R7 = 0;
44         ASTAT = R7;
45         A1 = A0 = 0;
46         A1 += R0.H * R1.L, A0 += R0.H * R1.L;
47         R6 = A1.w;
48         R7.L = A1.x;
49         DBGA ( R6.L , 0x0000 );
50         DBGA ( R6.H , 0x8001 );
51         DBGA ( R7.L , 0xffff );
52         _DBG ASTAT;
53         R7 = ASTAT;
54         DBGA (R7.H, 0x0);
55         DBGA (R7.L, 0x0);
56
57 // 0x8000 * 0x8000 = 0x007fffffff
58         R7 = 0;
59         ASTAT = R7;
60         A1 = A0 = 0;
61         A1 += R0.H * R1.H, A0 += R0.H * R1.H;
62         R6 = A1.w;
63         R7.L = A1.x;
64         DBGA ( R6.L , 0x0000 );
65         DBGA ( R6.H , 0x8000 );
66         DBGA ( R7.L , 0x0000 );
67         CC = AZ;        R7 = CC; DBGA ( R7.L , 0x0 );
68         CC = AN;        R7 = CC; DBGA ( R7.L , 0x0 );
69         CC = AC0;       R7 = CC; DBGA ( R7.L , 0x0 );
70         CC = AV0;       R7 = CC; DBGA ( R7.L , 0x0 );
71         CC = AV1;       R7 = CC; DBGA ( R7.L , 0x0 );
72
73 // saturate positive by first loading large value into accums
74 // expected value is 0x7fffffffff
75         R7 = 0;
76         ASTAT = R7;
77         A1 = A0 = 0;
78         A1.w = R2;
79         A1.x = R3.L;
80         A0.w = R2;
81         A0.x = R3.L;
82         A1 += R0.L * R1.L, A0 += R0.L * R1.L;
83         R6 = A1.w;
84         R7.L = A1.x;
85         DBGA ( R6.L , 0xffff );
86         DBGA ( R6.H , 0xffff );
87         DBGA ( R7.L , 0x007f );
88         CC = AZ;        R7 = CC; DBGA ( R7.L , 0x0 );
89         CC = AN;        R7 = CC; DBGA ( R7.L , 0x0 );
90         CC = AC0;       R7 = CC; DBGA ( R7.L , 0x0 );
91         CC = AV0;       R7 = CC; DBGA ( R7.L , 0x1 );
92         CC = AV1;       R7 = CC; DBGA ( R7.L , 0x1 );
93
94 // saturate negative
95 // expected value is 0x8000000000
96         R7 = 0;
97         ASTAT = R7;
98         A1 = A0 = 0;
99         A1.x = R4.L;
100         A0.x = R4.L;
101         A1 += R0.L * R1.H, A0 += R0.L * R1.H;
102         R6 = A1.w;
103         _DBG ASTAT;
104         R7.L = A1.x;
105         _DBG ASTAT;
106         DBGA ( R6.L , 0x0000 );
107         DBGA ( R6.H , 0x0000 );
108         DBGA ( R7.L , 0xff80 );
109         CC = AZ;        R7 = CC; DBGA ( R7.L , 0x0 );
110         CC = AN;        R7 = CC; DBGA ( R7.L , 0x0 );
111         CC = AC0;       R7 = CC; DBGA ( R7.L , 0x0 );
112         CC = AV0;       R7 = CC; DBGA ( R7.L , 0x1 );
113         CC = AV1;       R7 = CC; DBGA ( R7.L , 0x1 );
114
115 // saturate positive with "-="
116 // expected value is 0x7fffffffff
117         R7 = 0;
118         ASTAT = R7;
119         A1 = A0 = 0;
120         A1.w = R2;
121         A1.x = R3.L;
122         A0.w = R2;
123         A0.x = R3.L;
124         A1 -= R0.H * R1.L, A0 -= R0.H * R1.L;
125         R6 = A1.w;
126         R7.L = A1.x;
127         DBGA ( R6.L , 0xffff );
128         DBGA ( R6.H , 0xffff );
129         DBGA ( R7.L , 0x007f );
130         CC = AZ;        R7 = CC; DBGA ( R7.L , 0x0 );
131         CC = AN;        R7 = CC; DBGA ( R7.L , 0x0 );
132         CC = AC0;       R7 = CC; DBGA ( R7.L , 0x0 );
133         CC = AV0;       R7 = CC; DBGA ( R7.L , 0x1 );
134         CC = AV1;       R7 = CC; DBGA ( R7.L , 0x1 );
135
136 // saturate negative with "-="
137 // expected value is 0x8000000000
138         R7 = 0;
139         ASTAT = R7;
140         A1 = A0 = 0;
141         A1.x = R4.L;
142         A0.x = R4.L;
143         A1 -= R0.L * R1.L, A0 -= R0.L * R1.L;
144         R6 = A1.w;
145         _DBG ASTAT;
146         R7.L = A1.x;
147         _DBG ASTAT;
148         DBGA ( R6.L , 0x0000 );
149         DBGA ( R6.H , 0x0000 );
150         DBGA ( R7.L , 0xff80 );
151         CC = AZ;        R7 = CC; DBGA ( R7.L , 0x0 );
152         CC = AN;        R7 = CC; DBGA ( R7.L , 0x0 );
153         CC = AC0;       R7 = CC; DBGA ( R7.L , 0x0 );
154         CC = AV0;       R7 = CC; DBGA ( R7.L , 0x1 );
155         CC = AV1;       R7 = CC; DBGA ( R7.L , 0x1 );
156
157 // 0x8000 * 0x8000 = 0xff80000001 with "-="
158         R7 = 0;
159         ASTAT = R7;
160         A1 = A0 = 0;
161         A1 -= R0.H * R1.H, A0 -= R0.H * R1.H;
162         R6 = A1.w;
163         _DBG ASTAT;
164         R7.L = A1.x;
165         _DBG ASTAT;
166
167         DBGA ( R6.L , 0x0000 );
168         DBGA ( R6.H , 0x8000 );
169         DBGA ( R7.L , 0xffff );
170         CC = AZ;        R7 = CC; DBGA ( R7.L , 0x0 );
171         CC = AN;        R7 = CC; DBGA ( R7.L , 0x0 );
172         CC = AC0;       R7 = CC; DBGA ( R7.L , 0x0 );
173         CC = AV0;       R7 = CC; DBGA ( R7.L , 0x0 );
174         CC = AV1;       R7 = CC; DBGA ( R7.L , 0x0 );
175
176 // 0x7fff * 0x7fff = 0x007ffe0002 with "="
177         R7 = 0;
178         ASTAT = R7;
179         A1 = A0 = 0;
180         A1 += R0.L * R1.L, A0 += R0.L * R1.L;
181         A1 = R0.L * R1.L, A0 = R0.L * R1.L;
182         R6 = A1.w;
183         R7.L = A1.x;
184         DBGA ( R6.L , 0x0002 );
185         DBGA ( R6.H , 0x7ffe );
186         DBGA ( R7.L , 0x0000 );
187         CC = AZ;        R7 = CC; DBGA ( R7.L , 0x0 );
188         CC = AN;        R7 = CC; DBGA ( R7.L , 0x0 );
189         CC = AC0;       R7 = CC; DBGA ( R7.L , 0x0 );
190         CC = AV0;       R7 = CC; DBGA ( R7.L , 0x0 );
191         CC = AV1;       R7 = CC; DBGA ( R7.L , 0x0 );
192
193 // 0x7fff * 0x7fff = 0x007ffe0002 with "NOP"
194         R7 = 0;
195         ASTAT = R7;
196         A1 = A0 = 0;
197         A1 += R0.L * R1.L;
198         R6 = A1.w;
199         R7.L = A1.x;
200         DBGA ( R6.L , 0x0002 );
201         DBGA ( R6.H , 0x7ffe );
202         DBGA ( R7.L , 0x0000 );
203         R6 = A0.w;
204         R7.L = A0.x;
205         DBGA ( R6.L , 0x0000 );
206         DBGA ( R6.H , 0x0000 );
207         DBGA ( R7.L , 0x0000 );
208         CC = AZ;        R7 = CC; DBGA ( R7.L , 0x0 );
209         CC = AN;        R7 = CC; DBGA ( R7.L , 0x0 );
210         CC = AC0;       R7 = CC; DBGA ( R7.L , 0x0 );
211         CC = AV0;       R7 = CC; DBGA ( R7.L , 0x0 );
212         CC = AV1;       R7 = CC; DBGA ( R7.L , 0x0 );
213
214 // 0x8000 * 0x8000 = 0x007fffffff with "NOP"
215         R7 = 0;
216         ASTAT = R7;
217         A1 = A0 = 0;
218         A1 += R0.H * R1.H;
219         _DBG A1;
220         R6 = A1.w;
221         R7.L = A1.x;
222         DBGA ( R6.L , 0x0000 );
223         DBGA ( R6.H , 0x8000 );
224         DBGA ( R7.L , 0x0000 );
225
226         R6 = A0.w;
227         _DBG ASTAT;
228         R7.L = A0.x;
229         _DBG ASTAT;
230         DBGA ( R6.L , 0x0000 );
231         DBGA ( R6.H , 0x0000 );
232         DBGA ( R7.L , 0x0000 );
233         R7 = ASTAT;     _dbg astat;
234 //AV1 AV1S should be 0.
235         DBGA ( R7.H , 0x0000 );
236         DBGA ( R7.L , 0x0000 );
237
238         _DBG ASTAT;
239         A1 = A0 = 0;
240         _DBG A1;
241         _DBG R0;        _DBG R1;
242         A1 += R0.L * R1.L;      // make sure overflow flag is not set to zero
243         _DBG A1;
244         _DBG ASTAT;
245         R7 = ASTAT;
246 //AV1S should be 0.
247         DBGA ( R7.H, 0x0000 );
248         DBGA ( R7.L, 0x0000 );
249
250         pass
251
252         .data
253 data0:
254         .dw 0x7fff
255         .dw 0x8000
256         .dw 0x7fff
257         .dw 0x8000
258         .dw 0x0000
259         .dw 0xf000
260         .dw 0x007f
261         .dw 0x0000
262         .dw 0x0080
263         .dw 0x0000