daily update
[external/binutils.git] / sim / testsuite / sim / frv / cmqmulhu.cgs
1 # frv testcase for cmqmulhu $GRi,$GRj,$GRk,$CCi,$cond
2 # mach: all
3
4         .include "testutils.inc"
5
6         start
7
8         .global cmqmulhu
9 cmqmulhu:
10         set_spr_immed   0x1b1b,cccr
11
12         set_fr_iimmed   3,2,fr8         ; multiply small numbers
13         set_fr_iimmed   2,3,fr10
14         set_fr_iimmed   1,2,fr9         ; multiply by 1
15         set_fr_iimmed   2,1,fr11
16         cmqmulhu        fr8,fr10,acc0,cc0,1
17         test_accg_immed         0,accg0
18         test_acc_immed  6,acc0
19         test_accg_immed         0,accg1
20         test_acc_immed  6,acc1
21         test_accg_immed         0,accg2
22         test_acc_immed  2,acc2
23         test_accg_immed         0,accg3
24         test_acc_immed  2,acc3
25
26         set_fr_iimmed   0,2,fr8         ; multiply by 0
27         set_fr_iimmed   2,0,fr10
28         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
29         set_fr_iimmed   2,0x3fff,fr11
30         cmqmulhu        fr8,fr10,acc0,cc0,1
31         test_accg_immed         0,accg0
32         test_acc_immed  0,acc0
33         test_accg_immed         0,accg1
34         test_acc_immed  0,acc1
35         test_accg_immed         0,accg2
36         test_acc_limmed 0x0000,0x7ffe,acc2
37         test_accg_immed         0,accg3
38         test_acc_limmed 0x0000,0x7ffe,acc3
39
40         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
41         set_fr_iimmed   2,0x4000,fr10
42         set_fr_iimmed   0x8000,2,fr9    ; 17 bit result
43         set_fr_iimmed   2,0x8000,fr11
44         cmqmulhu        fr8,fr10,acc0,cc4,1
45         test_accg_immed         0,accg0
46         test_acc_limmed 0x0000,0x8000,acc0
47         test_accg_immed         0,accg1
48         test_acc_limmed 0x0000,0x8000,acc1
49         test_accg_immed         0,accg2
50         test_acc_immed  0x00010000,acc2
51         test_accg_immed         0,accg3
52         test_acc_immed  0x00010000,acc3
53
54         set_fr_iimmed   0x7fff,0x7fff,fr8       ; max positive result
55         set_fr_iimmed   0x7fff,0x7fff,fr10
56         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
57         set_fr_iimmed   0x8000,0x8000,fr11
58         cmqmulhu        fr8,fr10,acc0,cc4,1
59         test_accg_immed         0,accg0
60         test_acc_immed  0x3fff0001,acc0
61         test_accg_immed         0,accg1
62         test_acc_immed  0x3fff0001,acc1
63         test_accg_immed         0,accg2
64         test_acc_limmed 0x4000,0x0000,acc2
65         test_accg_immed         0,accg3
66         test_acc_limmed 0x4000,0x0000,acc3
67
68         set_fr_iimmed   0xffff,0xffff,fr8       ; max positive result
69         set_fr_iimmed   0xffff,0xffff,fr10
70         set_fr_iimmed   0xffff,0xffff,fr9       ; max positive result
71         set_fr_iimmed   0xffff,0xffff,fr11
72         cmqmulhu        fr8,fr10,acc0,cc4,1
73         test_accg_immed         0,accg0
74         test_acc_limmed 0xfffe,0x0001,acc0
75         test_accg_immed         0,accg1
76         test_acc_limmed 0xfffe,0x0001,acc1
77         test_accg_immed         0,accg2
78         test_acc_limmed 0xfffe,0x0001,acc2
79         test_accg_immed         0,accg3
80         test_acc_limmed 0xfffe,0x0001,acc3
81
82         set_fr_iimmed   3,2,fr8         ; multiply small numbers
83         set_fr_iimmed   2,3,fr10
84         set_fr_iimmed   1,2,fr9         ; multiply by 1
85         set_fr_iimmed   2,1,fr11
86         cmqmulhu        fr8,fr10,acc0,cc1,0
87         test_accg_immed         0,accg0
88         test_acc_immed  6,acc0
89         test_accg_immed         0,accg1
90         test_acc_immed  6,acc1
91         test_accg_immed         0,accg2
92         test_acc_immed  2,acc2
93         test_accg_immed         0,accg3
94         test_acc_immed  2,acc3
95
96         set_fr_iimmed   0,2,fr8         ; multiply by 0
97         set_fr_iimmed   2,0,fr10
98         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
99         set_fr_iimmed   2,0x3fff,fr11
100         cmqmulhu        fr8,fr10,acc0,cc1,0
101         test_accg_immed         0,accg0
102         test_acc_immed  0,acc0
103         test_accg_immed         0,accg1
104         test_acc_immed  0,acc1
105         test_accg_immed         0,accg2
106         test_acc_limmed 0x0000,0x7ffe,acc2
107         test_accg_immed         0,accg3
108         test_acc_limmed 0x0000,0x7ffe,acc3
109
110         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
111         set_fr_iimmed   2,0x4000,fr10
112         set_fr_iimmed   0x8000,2,fr9    ; 17 bit result
113         set_fr_iimmed   2,0x8000,fr11
114         cmqmulhu        fr8,fr10,acc0,cc5,0
115         test_accg_immed         0,accg0
116         test_acc_limmed 0x0000,0x8000,acc0
117         test_accg_immed         0,accg1
118         test_acc_limmed 0x0000,0x8000,acc1
119         test_accg_immed         0,accg2
120         test_acc_immed  0x00010000,acc2
121         test_accg_immed         0,accg3
122         test_acc_immed  0x00010000,acc3
123
124         set_fr_iimmed   0x7fff,0x7fff,fr8       ; max positive result
125         set_fr_iimmed   0x7fff,0x7fff,fr10
126         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
127         set_fr_iimmed   0x8000,0x8000,fr11
128         cmqmulhu        fr8,fr10,acc0,cc5,0
129         test_accg_immed         0,accg0
130         test_acc_immed  0x3fff0001,acc0
131         test_accg_immed         0,accg1
132         test_acc_immed  0x3fff0001,acc1
133         test_accg_immed         0,accg2
134         test_acc_limmed 0x4000,0x0000,acc2
135         test_accg_immed         0,accg3
136         test_acc_limmed 0x4000,0x0000,acc3
137
138         set_fr_iimmed   0xffff,0xffff,fr8       ; max positive result
139         set_fr_iimmed   0xffff,0xffff,fr10
140         set_fr_iimmed   0xffff,0xffff,fr9       ; max positive result
141         set_fr_iimmed   0xffff,0xffff,fr11
142         cmqmulhu        fr8,fr10,acc0,cc5,0
143         test_accg_immed         0,accg0
144         test_acc_limmed 0xfffe,0x0001,acc0
145         test_accg_immed         0,accg1
146         test_acc_limmed 0xfffe,0x0001,acc1
147         test_accg_immed         0,accg2
148         test_acc_limmed 0xfffe,0x0001,acc2
149         test_accg_immed         0,accg3
150         test_acc_limmed 0xfffe,0x0001,acc3
151
152         set_accg_immed  0x00000011,accg0
153         set_acc_immed   0x11111111,acc0
154         set_accg_immed  0x00000022,accg1
155         set_acc_immed   0x22222222,acc1
156         set_accg_immed  0x00000033,accg2
157         set_acc_immed   0x33333333,acc2
158         set_accg_immed  0x00000044,accg3
159         set_acc_immed   0x44444444,acc3
160         set_fr_iimmed   3,2,fr8         ; multiply small numbers
161         set_fr_iimmed   2,3,fr10
162         set_fr_iimmed   1,2,fr9         ; multiply by 1
163         set_fr_iimmed   2,1,fr11
164         cmqmulhu        fr8,fr10,acc0,cc0,0
165         test_accg_immed         0x00000011,accg0
166         test_acc_immed  0x11111111,acc0
167         test_accg_immed         0x00000022,accg1
168         test_acc_immed  0x22222222,acc1
169         test_accg_immed         0x00000033,accg2
170         test_acc_immed  0x33333333,acc2
171         test_accg_immed         0x00000044,accg3
172         test_acc_immed  0x44444444,acc3
173
174         set_fr_iimmed   0,2,fr8         ; multiply by 0
175         set_fr_iimmed   2,0,fr10
176         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
177         set_fr_iimmed   2,0x3fff,fr11
178         cmqmulhu        fr8,fr10,acc0,cc0,0
179         test_accg_immed         0x00000011,accg0
180         test_acc_immed  0x11111111,acc0
181         test_accg_immed         0x00000022,accg1
182         test_acc_immed  0x22222222,acc1
183         test_accg_immed         0x00000033,accg2
184         test_acc_immed  0x33333333,acc2
185         test_accg_immed         0x00000044,accg3
186         test_acc_immed  0x44444444,acc3
187
188         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
189         set_fr_iimmed   2,0x4000,fr10
190         set_fr_iimmed   0x8000,2,fr9    ; 17 bit result
191         set_fr_iimmed   2,0x8000,fr11
192         cmqmulhu        fr8,fr10,acc0,cc4,0
193         test_accg_immed         0x00000011,accg0
194         test_acc_immed  0x11111111,acc0
195         test_accg_immed         0x00000022,accg1
196         test_acc_immed  0x22222222,acc1
197         test_accg_immed         0x00000033,accg2
198         test_acc_immed  0x33333333,acc2
199         test_accg_immed         0x00000044,accg3
200         test_acc_immed  0x44444444,acc3
201
202         set_fr_iimmed   0x7fff,0x7fff,fr8       ; max positive result
203         set_fr_iimmed   0x7fff,0x7fff,fr10
204         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
205         set_fr_iimmed   0x8000,0x8000,fr11
206         cmqmulhu        fr8,fr10,acc0,cc4,0
207         test_accg_immed         0x00000011,accg0
208         test_acc_immed  0x11111111,acc0
209         test_accg_immed         0x00000022,accg1
210         test_acc_immed  0x22222222,acc1
211         test_accg_immed         0x00000033,accg2
212         test_acc_immed  0x33333333,acc2
213         test_accg_immed         0x00000044,accg3
214         test_acc_immed  0x44444444,acc3
215
216         set_fr_iimmed   0xffff,0xffff,fr8       ; max positive result
217         set_fr_iimmed   0xffff,0xffff,fr10
218         set_fr_iimmed   0xffff,0xffff,fr9       ; max positive result
219         set_fr_iimmed   0xffff,0xffff,fr11
220         cmqmulhu        fr8,fr10,acc0,cc4,0
221         test_accg_immed         0x00000011,accg0
222         test_acc_immed  0x11111111,acc0
223         test_accg_immed         0x00000022,accg1
224         test_acc_immed  0x22222222,acc1
225         test_accg_immed         0x00000033,accg2
226         test_acc_immed  0x33333333,acc2
227         test_accg_immed         0x00000044,accg3
228         test_acc_immed  0x44444444,acc3
229
230         set_accg_immed  0x00000011,accg0
231         set_acc_immed   0x11111111,acc0
232         set_accg_immed  0x00000022,accg1
233         set_acc_immed   0x22222222,acc1
234         set_accg_immed  0x00000033,accg2
235         set_acc_immed   0x33333333,acc2
236         set_accg_immed  0x00000044,accg3
237         set_acc_immed   0x44444444,acc3
238         set_fr_iimmed   3,2,fr8         ; multiply small numbers
239         set_fr_iimmed   2,3,fr10
240         set_fr_iimmed   1,2,fr9         ; multiply by 1
241         set_fr_iimmed   2,1,fr11
242         cmqmulhu        fr8,fr10,acc0,cc1,1
243         test_accg_immed         0x00000011,accg0
244         test_acc_immed  0x11111111,acc0
245         test_accg_immed         0x00000022,accg1
246         test_acc_immed  0x22222222,acc1
247         test_accg_immed         0x00000033,accg2
248         test_acc_immed  0x33333333,acc2
249         test_accg_immed         0x00000044,accg3
250         test_acc_immed  0x44444444,acc3
251
252         set_fr_iimmed   0,2,fr8         ; multiply by 0
253         set_fr_iimmed   2,0,fr10
254         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
255         set_fr_iimmed   2,0x3fff,fr11
256         cmqmulhu        fr8,fr10,acc0,cc1,1
257         test_accg_immed         0x00000011,accg0
258         test_acc_immed  0x11111111,acc0
259         test_accg_immed         0x00000022,accg1
260         test_acc_immed  0x22222222,acc1
261         test_accg_immed         0x00000033,accg2
262         test_acc_immed  0x33333333,acc2
263         test_accg_immed         0x00000044,accg3
264         test_acc_immed  0x44444444,acc3
265
266         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
267         set_fr_iimmed   2,0x4000,fr10
268         set_fr_iimmed   0x8000,2,fr9    ; 17 bit result
269         set_fr_iimmed   2,0x8000,fr11
270         cmqmulhu        fr8,fr10,acc0,cc5,1
271         test_accg_immed         0x00000011,accg0
272         test_acc_immed  0x11111111,acc0
273         test_accg_immed         0x00000022,accg1
274         test_acc_immed  0x22222222,acc1
275         test_accg_immed         0x00000033,accg2
276         test_acc_immed  0x33333333,acc2
277         test_accg_immed         0x00000044,accg3
278         test_acc_immed  0x44444444,acc3
279
280         set_fr_iimmed   0x7fff,0x7fff,fr8       ; max positive result
281         set_fr_iimmed   0x7fff,0x7fff,fr10
282         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
283         set_fr_iimmed   0x8000,0x8000,fr11
284         cmqmulhu        fr8,fr10,acc0,cc5,1
285         test_accg_immed         0x00000011,accg0
286         test_acc_immed  0x11111111,acc0
287         test_accg_immed         0x00000022,accg1
288         test_acc_immed  0x22222222,acc1
289         test_accg_immed         0x00000033,accg2
290         test_acc_immed  0x33333333,acc2
291         test_accg_immed         0x00000044,accg3
292         test_acc_immed  0x44444444,acc3
293
294         set_fr_iimmed   0xffff,0xffff,fr8       ; max positive result
295         set_fr_iimmed   0xffff,0xffff,fr10
296         set_fr_iimmed   0xffff,0xffff,fr9       ; max positive result
297         set_fr_iimmed   0xffff,0xffff,fr11
298         cmqmulhu        fr8,fr10,acc0,cc5,1
299         test_accg_immed         0x00000011,accg0
300         test_acc_immed  0x11111111,acc0
301         test_accg_immed         0x00000022,accg1
302         test_acc_immed  0x22222222,acc1
303         test_accg_immed         0x00000033,accg2
304         test_acc_immed  0x33333333,acc2
305         test_accg_immed         0x00000044,accg3
306         test_acc_immed  0x44444444,acc3
307
308         set_accg_immed  0x00000011,accg0
309         set_acc_immed   0x11111111,acc0
310         set_accg_immed  0x00000022,accg1
311         set_acc_immed   0x22222222,acc1
312         set_accg_immed  0x00000033,accg2
313         set_acc_immed   0x33333333,acc2
314         set_accg_immed  0x00000044,accg3
315         set_acc_immed   0x44444444,acc3
316         set_fr_iimmed   3,2,fr8         ; multiply small numbers
317         set_fr_iimmed   2,3,fr10
318         set_fr_iimmed   1,2,fr9         ; multiply by 1
319         set_fr_iimmed   2,1,fr11
320         cmqmulhu        fr8,fr10,acc0,cc2,1
321         test_accg_immed         0x00000011,accg0
322         test_acc_immed  0x11111111,acc0
323         test_accg_immed         0x00000022,accg1
324         test_acc_immed  0x22222222,acc1
325         test_accg_immed         0x00000033,accg2
326         test_acc_immed  0x33333333,acc2
327         test_accg_immed         0x00000044,accg3
328         test_acc_immed  0x44444444,acc3
329
330         set_fr_iimmed   0,2,fr8         ; multiply by 0
331         set_fr_iimmed   2,0,fr10
332         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
333         set_fr_iimmed   2,0x3fff,fr11
334         cmqmulhu        fr8,fr10,acc0,cc2,0
335         test_accg_immed         0x00000011,accg0
336         test_acc_immed  0x11111111,acc0
337         test_accg_immed         0x00000022,accg1
338         test_acc_immed  0x22222222,acc1
339         test_accg_immed         0x00000033,accg2
340         test_acc_immed  0x33333333,acc2
341         test_accg_immed         0x00000044,accg3
342         test_acc_immed  0x44444444,acc3
343
344         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
345         set_fr_iimmed   2,0x4000,fr10
346         set_fr_iimmed   0x8000,2,fr9    ; 17 bit result
347         set_fr_iimmed   2,0x8000,fr11
348         cmqmulhu        fr8,fr10,acc0,cc6,1
349         test_accg_immed         0x00000011,accg0
350         test_acc_immed  0x11111111,acc0
351         test_accg_immed         0x00000022,accg1
352         test_acc_immed  0x22222222,acc1
353         test_accg_immed         0x00000033,accg2
354         test_acc_immed  0x33333333,acc2
355         test_accg_immed         0x00000044,accg3
356         test_acc_immed  0x44444444,acc3
357
358         set_fr_iimmed   0x7fff,0x7fff,fr8       ; max positive result
359         set_fr_iimmed   0x7fff,0x7fff,fr10
360         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
361         set_fr_iimmed   0x8000,0x8000,fr11
362         cmqmulhu        fr8,fr10,acc0,cc6,0
363         test_accg_immed         0x00000011,accg0
364         test_acc_immed  0x11111111,acc0
365         test_accg_immed         0x00000022,accg1
366         test_acc_immed  0x22222222,acc1
367         test_accg_immed         0x00000033,accg2
368         test_acc_immed  0x33333333,acc2
369         test_accg_immed         0x00000044,accg3
370         test_acc_immed  0x44444444,acc3
371
372         set_fr_iimmed   0xffff,0xffff,fr8       ; max positive result
373         set_fr_iimmed   0xffff,0xffff,fr10
374         set_fr_iimmed   0xffff,0xffff,fr9       ; max positive result
375         set_fr_iimmed   0xffff,0xffff,fr11
376         cmqmulhu        fr8,fr10,acc0,cc6,1
377         test_accg_immed         0x00000011,accg0
378         test_acc_immed  0x11111111,acc0
379         test_accg_immed         0x00000022,accg1
380         test_acc_immed  0x22222222,acc1
381         test_accg_immed         0x00000033,accg2
382         test_acc_immed  0x33333333,acc2
383         test_accg_immed         0x00000044,accg3
384         test_acc_immed  0x44444444,acc3
385 ;
386         set_accg_immed  0x00000011,accg0
387         set_acc_immed   0x11111111,acc0
388         set_accg_immed  0x00000022,accg1
389         set_acc_immed   0x22222222,acc1
390         set_accg_immed  0x00000033,accg2
391         set_acc_immed   0x33333333,acc2
392         set_accg_immed  0x00000044,accg3
393         set_acc_immed   0x44444444,acc3
394         set_fr_iimmed   3,2,fr8         ; multiply small numbers
395         set_fr_iimmed   2,3,fr10
396         set_fr_iimmed   1,2,fr9         ; multiply by 1
397         set_fr_iimmed   2,1,fr11
398         cmqmulhu        fr8,fr10,acc0,cc3,1
399         test_accg_immed         0x00000011,accg0
400         test_acc_immed  0x11111111,acc0
401         test_accg_immed         0x00000022,accg1
402         test_acc_immed  0x22222222,acc1
403         test_accg_immed         0x00000033,accg2
404         test_acc_immed  0x33333333,acc2
405         test_accg_immed         0x00000044,accg3
406         test_acc_immed  0x44444444,acc3
407
408         set_fr_iimmed   0,2,fr8         ; multiply by 0
409         set_fr_iimmed   2,0,fr10
410         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
411         set_fr_iimmed   2,0x3fff,fr11
412         cmqmulhu        fr8,fr10,acc0,cc3,0
413         test_accg_immed         0x00000011,accg0
414         test_acc_immed  0x11111111,acc0
415         test_accg_immed         0x00000022,accg1
416         test_acc_immed  0x22222222,acc1
417         test_accg_immed         0x00000033,accg2
418         test_acc_immed  0x33333333,acc2
419         test_accg_immed         0x00000044,accg3
420         test_acc_immed  0x44444444,acc3
421
422         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
423         set_fr_iimmed   2,0x4000,fr10
424         set_fr_iimmed   0x8000,2,fr9    ; 17 bit result
425         set_fr_iimmed   2,0x8000,fr11
426         cmqmulhu        fr8,fr10,acc0,cc7,1
427         test_accg_immed         0x00000011,accg0
428         test_acc_immed  0x11111111,acc0
429         test_accg_immed         0x00000022,accg1
430         test_acc_immed  0x22222222,acc1
431         test_accg_immed         0x00000033,accg2
432         test_acc_immed  0x33333333,acc2
433         test_accg_immed         0x00000044,accg3
434         test_acc_immed  0x44444444,acc3
435
436         set_fr_iimmed   0x7fff,0x7fff,fr8       ; max positive result
437         set_fr_iimmed   0x7fff,0x7fff,fr10
438         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
439         set_fr_iimmed   0x8000,0x8000,fr11
440         cmqmulhu        fr8,fr10,acc0,cc7,0
441         test_accg_immed         0x00000011,accg0
442         test_acc_immed  0x11111111,acc0
443         test_accg_immed         0x00000022,accg1
444         test_acc_immed  0x22222222,acc1
445         test_accg_immed         0x00000033,accg2
446         test_acc_immed  0x33333333,acc2
447         test_accg_immed         0x00000044,accg3
448         test_acc_immed  0x44444444,acc3
449
450         set_fr_iimmed   0xffff,0xffff,fr8       ; max positive result
451         set_fr_iimmed   0xffff,0xffff,fr10
452         set_fr_iimmed   0xffff,0xffff,fr9       ; max positive result
453         set_fr_iimmed   0xffff,0xffff,fr11
454         cmqmulhu        fr8,fr10,acc0,cc7,1
455         test_accg_immed         0x00000011,accg0
456         test_acc_immed  0x11111111,acc0
457         test_accg_immed         0x00000022,accg1
458         test_acc_immed  0x22222222,acc1
459         test_accg_immed         0x00000033,accg2
460         test_acc_immed  0x33333333,acc2
461         test_accg_immed         0x00000044,accg3
462         test_acc_immed  0x44444444,acc3
463
464         pass