Automatic date update in version.in
[binutils-gdb.git] / sim / testsuite / frv / cmqmulhs.cgs
blobb3157373bfc1a1223539b1457a959aee442e4876
1 # frv testcase for cmqmulhs $GRi,$GRj,$ACCk,$CCi,$cond
2 # mach: all
4         .include "testutils.inc"
6         start
8         .global cmqmulhs
9 cmqmulhs:
10         set_spr_immed   0x1b1b,cccr
12         ; Positive operands
13         set_fr_iimmed   2,3,fr8         ; multiply small numbers
14         set_fr_iimmed   3,2,fr10
15         set_fr_iimmed   0,1,fr9         ; multiply by 0
16         set_fr_iimmed   2,0,fr11
17         cmqmulhs        fr8,fr10,acc0,cc0,1
18         test_accg_immed         0,accg0
19         test_acc_immed  6,acc0
20         test_accg_immed         0,accg1
21         test_acc_immed  6,acc1
22         test_accg_immed         0,accg2
23         test_acc_immed  0,acc2
24         test_accg_immed         0,accg3
25         test_acc_immed  0,acc3
27         set_fr_iimmed   2,1,fr8         ; multiply by 1
28         set_fr_iimmed   1,2,fr10
29         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
30         set_fr_iimmed   2,0x3fff,fr11
31         cmqmulhs        fr8,fr10,acc0,cc0,1
32         test_accg_immed         0,accg0
33         test_acc_immed  2,acc0
34         test_accg_immed         0,accg1
35         test_acc_immed  2,acc1
36         test_accg_immed         0,accg2
37         test_acc_limmed 0,0x7ffe,acc2
38         test_accg_immed         0,accg3
39         test_acc_limmed 0,0x7ffe,acc3
41         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
42         set_fr_iimmed   2,0x4000,fr10
43         set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
44         set_fr_iimmed   0x7fff,0x7fff,fr11
45         cmqmulhs        fr8,fr10,acc0,cc0,1
46         test_accg_immed         0,accg0
47         test_acc_limmed 0x0000,0x8000,acc0
48         test_accg_immed         0,accg1
49         test_acc_limmed 0x0000,0x8000,acc1
50         test_accg_immed         0,accg2
51         test_acc_limmed 0x3fff,0x0001,acc2
52         test_accg_immed         0,accg3
53         test_acc_limmed 0x3fff,0x0001,acc3
55         ; Mixed operands
56         set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
57         set_fr_iimmed   0xfffd,2,fr10
58         set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
59         set_fr_iimmed   1,0xfffe,fr11
60         cmqmulhs        fr8,fr10,acc0,cc0,1
61         test_accg_immed         0xff,accg0
62         test_acc_immed  -6,acc0
63         test_accg_immed         0xff,accg1
64         test_acc_immed  -6,acc1
65         test_accg_immed         0xff,accg2
66         test_acc_immed  -2,acc2
67         test_accg_immed         0xff,accg3
68         test_acc_immed  -2,acc3
70         set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
71         set_fr_iimmed   0,0xfffe,fr10
72         set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
73         set_fr_iimmed   0xfffe,0x2001,fr11
74         cmqmulhs        fr8,fr10,acc0,cc4,1
75         test_accg_immed         0,accg0
76         test_acc_immed  0,acc0
77         test_accg_immed         0,accg1
78         test_acc_immed  0,acc1
79         test_accg_immed         0xff,accg2
80         test_acc_limmed 0xffff,0xbffe,acc2
81         test_accg_immed         0xff,accg3
82         test_acc_limmed 0xffff,0xbffe,acc3
84         set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
85         set_fr_iimmed   0xfffe,0x4000,fr10
86         set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
87         set_fr_iimmed   0x8000,0x7fff,fr11
88         cmqmulhs        fr8,fr10,acc0,cc4,1
89         test_accg_immed         0xff,accg0
90         test_acc_limmed 0xffff,0x8000,acc0
91         test_accg_immed         0xff,accg1
92         test_acc_limmed 0xffff,0x8000,acc1
93         test_accg_immed         0xff,accg2
94         test_acc_limmed 0xc000,0x8000,acc2
95         test_accg_immed         0xff,accg3
96         test_acc_limmed 0xc000,0x8000,acc3
98         ; Negative operands
99         set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
100         set_fr_iimmed   0xfffd,0xfffe,fr10
101         set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
102         set_fr_iimmed   0xfffe,0xffff,fr11
103         cmqmulhs        fr8,fr10,acc0,cc4,1
104         test_accg_immed         0,accg0
105         test_acc_immed  6,acc0
106         test_accg_immed         0,accg1
107         test_acc_immed  6,acc1
108         test_accg_immed         0,accg2
109         test_acc_immed  2,acc2
110         test_accg_immed         0,accg3
111         test_acc_immed  2,acc3
113         set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
114         set_fr_iimmed   0x8001,0x8001,fr10
115         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
116         set_fr_iimmed   0x8000,0x8000,fr11
117         cmqmulhs        fr8,fr10,acc0,cc4,1
118         test_accg_immed         0,accg0
119         test_acc_immed  0x3fff0001,acc0
120         test_accg_immed         0,accg1
121         test_acc_immed  0x3fff0001,acc1
122         test_accg_immed         0,accg2
123         test_acc_immed  0x40000000,acc2
124         test_accg_immed         0,accg3
125         test_acc_immed  0x40000000,acc3
127         ; Positive operands
128         set_fr_iimmed   2,3,fr8         ; multiply small numbers
129         set_fr_iimmed   3,2,fr10
130         set_fr_iimmed   0,1,fr9         ; multiply by 0
131         set_fr_iimmed   2,0,fr11
132         cmqmulhs        fr8,fr10,acc0,cc1,0
133         test_accg_immed         0,accg0
134         test_acc_immed  6,acc0
135         test_accg_immed         0,accg1
136         test_acc_immed  6,acc1
137         test_accg_immed         0,accg2
138         test_acc_immed  0,acc2
139         test_accg_immed         0,accg3
140         test_acc_immed  0,acc3
142         set_fr_iimmed   2,1,fr8         ; multiply by 1
143         set_fr_iimmed   1,2,fr10
144         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
145         set_fr_iimmed   2,0x3fff,fr11
146         cmqmulhs        fr8,fr10,acc0,cc1,0
147         test_accg_immed         0,accg0
148         test_acc_immed  2,acc0
149         test_accg_immed         0,accg1
150         test_acc_immed  2,acc1
151         test_accg_immed         0,accg2
152         test_acc_limmed 0,0x7ffe,acc2
153         test_accg_immed         0,accg3
154         test_acc_limmed 0,0x7ffe,acc3
156         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
157         set_fr_iimmed   2,0x4000,fr10
158         set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
159         set_fr_iimmed   0x7fff,0x7fff,fr11
160         cmqmulhs        fr8,fr10,acc0,cc1,0
161         test_accg_immed         0,accg0
162         test_acc_limmed 0x0000,0x8000,acc0
163         test_accg_immed         0,accg1
164         test_acc_limmed 0x0000,0x8000,acc1
165         test_accg_immed         0,accg2
166         test_acc_limmed 0x3fff,0x0001,acc2
167         test_accg_immed         0,accg3
168         test_acc_limmed 0x3fff,0x0001,acc3
170         ; Mixed operands
171         set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
172         set_fr_iimmed   0xfffd,2,fr10
173         set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
174         set_fr_iimmed   1,0xfffe,fr11
175         cmqmulhs        fr8,fr10,acc0,cc1,0
176         test_accg_immed         0xff,accg0
177         test_acc_immed  -6,acc0
178         test_accg_immed         0xff,accg1
179         test_acc_immed  -6,acc1
180         test_accg_immed         0xff,accg2
181         test_acc_immed  -2,acc2
182         test_accg_immed         0xff,accg3
183         test_acc_immed  -2,acc3
185         set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
186         set_fr_iimmed   0,0xfffe,fr10
187         set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
188         set_fr_iimmed   0xfffe,0x2001,fr11
189         cmqmulhs        fr8,fr10,acc0,cc5,0
190         test_accg_immed         0,accg0
191         test_acc_immed  0,acc0
192         test_accg_immed         0,accg1
193         test_acc_immed  0,acc1
194         test_accg_immed         0xff,accg2
195         test_acc_limmed 0xffff,0xbffe,acc2
196         test_accg_immed         0xff,accg3
197         test_acc_limmed 0xffff,0xbffe,acc3
199         set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
200         set_fr_iimmed   0xfffe,0x4000,fr10
201         set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
202         set_fr_iimmed   0x8000,0x7fff,fr11
203         cmqmulhs        fr8,fr10,acc0,cc5,0
204         test_accg_immed         0xff,accg0
205         test_acc_limmed 0xffff,0x8000,acc0
206         test_accg_immed         0xff,accg1
207         test_acc_limmed 0xffff,0x8000,acc1
208         test_accg_immed         0xff,accg2
209         test_acc_limmed 0xc000,0x8000,acc2
210         test_accg_immed         0xff,accg3
211         test_acc_limmed 0xc000,0x8000,acc3
213         ; Negative operands
214         set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
215         set_fr_iimmed   0xfffd,0xfffe,fr10
216         set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
217         set_fr_iimmed   0xfffe,0xffff,fr11
218         cmqmulhs        fr8,fr10,acc0,cc5,0
219         test_accg_immed         0,accg0
220         test_acc_immed  6,acc0
221         test_accg_immed         0,accg1
222         test_acc_immed  6,acc1
223         test_accg_immed         0,accg2
224         test_acc_immed  2,acc2
225         test_accg_immed         0,accg3
226         test_acc_immed  2,acc3
228         set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
229         set_fr_iimmed   0x8001,0x8001,fr10
230         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
231         set_fr_iimmed   0x8000,0x8000,fr11
232         cmqmulhs        fr8,fr10,acc0,cc5,0
233         test_accg_immed         0,accg0
234         test_acc_immed  0x3fff0001,acc0
235         test_accg_immed         0,accg1
236         test_acc_immed  0x3fff0001,acc1
237         test_accg_immed         0,accg2
238         test_acc_immed  0x40000000,acc2
239         test_accg_immed         0,accg3
240         test_acc_immed  0x40000000,acc3
242         ; Positive operands
243         set_accg_immed  0x00000011,accg0
244         set_acc_immed   0x11111111,acc0
245         set_accg_immed  0x00000022,accg1
246         set_acc_immed   0x22222222,acc1
247         set_accg_immed  0x00000033,accg2
248         set_acc_immed   0x33333333,acc2
249         set_accg_immed  0x00000044,accg3
250         set_acc_immed   0x44444444,acc3
251         set_fr_iimmed   2,3,fr8         ; multiply small numbers
252         set_fr_iimmed   3,2,fr10
253         set_fr_iimmed   0,1,fr9         ; multiply by 0
254         set_fr_iimmed   2,0,fr11
255         cmqmulhs        fr8,fr10,acc0,cc0,0
256         test_accg_immed         0x00000011,accg0
257         test_acc_immed  0x11111111,acc0
258         test_accg_immed         0x00000022,accg1
259         test_acc_immed  0x22222222,acc1
260         test_accg_immed         0x00000033,accg2
261         test_acc_immed  0x33333333,acc2
262         test_accg_immed         0x00000044,accg3
263         test_acc_immed  0x44444444,acc3
265         set_fr_iimmed   2,1,fr8         ; multiply by 1
266         set_fr_iimmed   1,2,fr10
267         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
268         set_fr_iimmed   2,0x3fff,fr11
269         cmqmulhs        fr8,fr10,acc0,cc0,0
270         test_accg_immed         0x00000011,accg0
271         test_acc_immed  0x11111111,acc0
272         test_accg_immed         0x00000022,accg1
273         test_acc_immed  0x22222222,acc1
274         test_accg_immed         0x00000033,accg2
275         test_acc_immed  0x33333333,acc2
276         test_accg_immed         0x00000044,accg3
277         test_acc_immed  0x44444444,acc3
279         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
280         set_fr_iimmed   2,0x4000,fr10
281         set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
282         set_fr_iimmed   0x7fff,0x7fff,fr11
283         cmqmulhs        fr8,fr10,acc0,cc0,0
284         test_accg_immed         0x00000011,accg0
285         test_acc_immed  0x11111111,acc0
286         test_accg_immed         0x00000022,accg1
287         test_acc_immed  0x22222222,acc1
288         test_accg_immed         0x00000033,accg2
289         test_acc_immed  0x33333333,acc2
290         test_accg_immed         0x00000044,accg3
291         test_acc_immed  0x44444444,acc3
293         ; Mixed operands
294         set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
295         set_fr_iimmed   0xfffd,2,fr10
296         set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
297         set_fr_iimmed   1,0xfffe,fr11
298         cmqmulhs        fr8,fr10,acc0,cc0,0
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
308         set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
309         set_fr_iimmed   0,0xfffe,fr10
310         set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
311         set_fr_iimmed   0xfffe,0x2001,fr11
312         cmqmulhs        fr8,fr10,acc0,cc4,0
313         test_accg_immed         0x00000011,accg0
314         test_acc_immed  0x11111111,acc0
315         test_accg_immed         0x00000022,accg1
316         test_acc_immed  0x22222222,acc1
317         test_accg_immed         0x00000033,accg2
318         test_acc_immed  0x33333333,acc2
319         test_accg_immed         0x00000044,accg3
320         test_acc_immed  0x44444444,acc3
322         set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
323         set_fr_iimmed   0xfffe,0x4000,fr10
324         set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
325         set_fr_iimmed   0x8000,0x7fff,fr11
326         cmqmulhs        fr8,fr10,acc0,cc4,0
327         test_accg_immed         0x00000011,accg0
328         test_acc_immed  0x11111111,acc0
329         test_accg_immed         0x00000022,accg1
330         test_acc_immed  0x22222222,acc1
331         test_accg_immed         0x00000033,accg2
332         test_acc_immed  0x33333333,acc2
333         test_accg_immed         0x00000044,accg3
334         test_acc_immed  0x44444444,acc3
336         ; Negative operands
337         set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
338         set_fr_iimmed   0xfffd,0xfffe,fr10
339         set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
340         set_fr_iimmed   0xfffe,0xffff,fr11
341         cmqmulhs        fr8,fr10,acc0,cc4,0
342         test_accg_immed         0x00000011,accg0
343         test_acc_immed  0x11111111,acc0
344         test_accg_immed         0x00000022,accg1
345         test_acc_immed  0x22222222,acc1
346         test_accg_immed         0x00000033,accg2
347         test_acc_immed  0x33333333,acc2
348         test_accg_immed         0x00000044,accg3
349         test_acc_immed  0x44444444,acc3
351         set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
352         set_fr_iimmed   0x8001,0x8001,fr10
353         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
354         set_fr_iimmed   0x8000,0x8000,fr11
355         cmqmulhs        fr8,fr10,acc0,cc4,0
356         test_accg_immed         0x00000011,accg0
357         test_acc_immed  0x11111111,acc0
358         test_accg_immed         0x00000022,accg1
359         test_acc_immed  0x22222222,acc1
360         test_accg_immed         0x00000033,accg2
361         test_acc_immed  0x33333333,acc2
362         test_accg_immed         0x00000044,accg3
363         test_acc_immed  0x44444444,acc3
365         ; Positive operands
366         set_accg_immed  0x00000011,accg0
367         set_acc_immed   0x11111111,acc0
368         set_accg_immed  0x00000022,accg1
369         set_acc_immed   0x22222222,acc1
370         set_accg_immed  0x00000033,accg2
371         set_acc_immed   0x33333333,acc2
372         set_accg_immed  0x00000044,accg3
373         set_acc_immed   0x44444444,acc3
374         set_fr_iimmed   2,3,fr8         ; multiply small numbers
375         set_fr_iimmed   3,2,fr10
376         set_fr_iimmed   0,1,fr9         ; multiply by 0
377         set_fr_iimmed   2,0,fr11
378         cmqmulhs        fr8,fr10,acc0,cc1,1
379         test_accg_immed         0x00000011,accg0
380         test_acc_immed  0x11111111,acc0
381         test_accg_immed         0x00000022,accg1
382         test_acc_immed  0x22222222,acc1
383         test_accg_immed         0x00000033,accg2
384         test_acc_immed  0x33333333,acc2
385         test_accg_immed         0x00000044,accg3
386         test_acc_immed  0x44444444,acc3
388         set_fr_iimmed   2,1,fr8         ; multiply by 1
389         set_fr_iimmed   1,2,fr10
390         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
391         set_fr_iimmed   2,0x3fff,fr11
392         cmqmulhs        fr8,fr10,acc0,cc1,1
393         test_accg_immed         0x00000011,accg0
394         test_acc_immed  0x11111111,acc0
395         test_accg_immed         0x00000022,accg1
396         test_acc_immed  0x22222222,acc1
397         test_accg_immed         0x00000033,accg2
398         test_acc_immed  0x33333333,acc2
399         test_accg_immed         0x00000044,accg3
400         test_acc_immed  0x44444444,acc3
402         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
403         set_fr_iimmed   2,0x4000,fr10
404         set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
405         set_fr_iimmed   0x7fff,0x7fff,fr11
406         cmqmulhs        fr8,fr10,acc0,cc1,1
407         test_accg_immed         0x00000011,accg0
408         test_acc_immed  0x11111111,acc0
409         test_accg_immed         0x00000022,accg1
410         test_acc_immed  0x22222222,acc1
411         test_accg_immed         0x00000033,accg2
412         test_acc_immed  0x33333333,acc2
413         test_accg_immed         0x00000044,accg3
414         test_acc_immed  0x44444444,acc3
416         ; Mixed operands
417         set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
418         set_fr_iimmed   0xfffd,2,fr10
419         set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
420         set_fr_iimmed   1,0xfffe,fr11
421         cmqmulhs        fr8,fr10,acc0,cc1,1
422         test_accg_immed         0x00000011,accg0
423         test_acc_immed  0x11111111,acc0
424         test_accg_immed         0x00000022,accg1
425         test_acc_immed  0x22222222,acc1
426         test_accg_immed         0x00000033,accg2
427         test_acc_immed  0x33333333,acc2
428         test_accg_immed         0x00000044,accg3
429         test_acc_immed  0x44444444,acc3
431         set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
432         set_fr_iimmed   0,0xfffe,fr10
433         set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
434         set_fr_iimmed   0xfffe,0x2001,fr11
435         cmqmulhs        fr8,fr10,acc0,cc5,1
436         test_accg_immed         0x00000011,accg0
437         test_acc_immed  0x11111111,acc0
438         test_accg_immed         0x00000022,accg1
439         test_acc_immed  0x22222222,acc1
440         test_accg_immed         0x00000033,accg2
441         test_acc_immed  0x33333333,acc2
442         test_accg_immed         0x00000044,accg3
443         test_acc_immed  0x44444444,acc3
445         set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
446         set_fr_iimmed   0xfffe,0x4000,fr10
447         set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
448         set_fr_iimmed   0x8000,0x7fff,fr11
449         cmqmulhs        fr8,fr10,acc0,cc5,1
450         test_accg_immed         0x00000011,accg0
451         test_acc_immed  0x11111111,acc0
452         test_accg_immed         0x00000022,accg1
453         test_acc_immed  0x22222222,acc1
454         test_accg_immed         0x00000033,accg2
455         test_acc_immed  0x33333333,acc2
456         test_accg_immed         0x00000044,accg3
457         test_acc_immed  0x44444444,acc3
459         ; Negative operands
460         set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
461         set_fr_iimmed   0xfffd,0xfffe,fr10
462         set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
463         set_fr_iimmed   0xfffe,0xffff,fr11
464         cmqmulhs        fr8,fr10,acc0,cc5,1
465         test_accg_immed         0x00000011,accg0
466         test_acc_immed  0x11111111,acc0
467         test_accg_immed         0x00000022,accg1
468         test_acc_immed  0x22222222,acc1
469         test_accg_immed         0x00000033,accg2
470         test_acc_immed  0x33333333,acc2
471         test_accg_immed         0x00000044,accg3
472         test_acc_immed  0x44444444,acc3
474         set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
475         set_fr_iimmed   0x8001,0x8001,fr10
476         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
477         set_fr_iimmed   0x8000,0x8000,fr11
478         cmqmulhs        fr8,fr10,acc0,cc5,1
479         test_accg_immed         0x00000011,accg0
480         test_acc_immed  0x11111111,acc0
481         test_accg_immed         0x00000022,accg1
482         test_acc_immed  0x22222222,acc1
483         test_accg_immed         0x00000033,accg2
484         test_acc_immed  0x33333333,acc2
485         test_accg_immed         0x00000044,accg3
486         test_acc_immed  0x44444444,acc3
488         ; Positive operands
489         set_accg_immed  0x00000011,accg0
490         set_acc_immed   0x11111111,acc0
491         set_accg_immed  0x00000022,accg1
492         set_acc_immed   0x22222222,acc1
493         set_accg_immed  0x00000033,accg2
494         set_acc_immed   0x33333333,acc2
495         set_accg_immed  0x00000044,accg3
496         set_acc_immed   0x44444444,acc3
497         set_fr_iimmed   2,3,fr8         ; multiply small numbers
498         set_fr_iimmed   3,2,fr10
499         set_fr_iimmed   0,1,fr9         ; multiply by 0
500         set_fr_iimmed   2,0,fr11
501         cmqmulhs        fr8,fr10,acc0,cc2,1
502         test_accg_immed         0x00000011,accg0
503         test_acc_immed  0x11111111,acc0
504         test_accg_immed         0x00000022,accg1
505         test_acc_immed  0x22222222,acc1
506         test_accg_immed         0x00000033,accg2
507         test_acc_immed  0x33333333,acc2
508         test_accg_immed         0x00000044,accg3
509         test_acc_immed  0x44444444,acc3
511         set_fr_iimmed   2,1,fr8         ; multiply by 1
512         set_fr_iimmed   1,2,fr10
513         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
514         set_fr_iimmed   2,0x3fff,fr11
515         cmqmulhs        fr8,fr10,acc0,cc2,0
516         test_accg_immed         0x00000011,accg0
517         test_acc_immed  0x11111111,acc0
518         test_accg_immed         0x00000022,accg1
519         test_acc_immed  0x22222222,acc1
520         test_accg_immed         0x00000033,accg2
521         test_acc_immed  0x33333333,acc2
522         test_accg_immed         0x00000044,accg3
523         test_acc_immed  0x44444444,acc3
525         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
526         set_fr_iimmed   2,0x4000,fr10
527         set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
528         set_fr_iimmed   0x7fff,0x7fff,fr11
529         cmqmulhs        fr8,fr10,acc0,cc2,1
530         test_accg_immed         0x00000011,accg0
531         test_acc_immed  0x11111111,acc0
532         test_accg_immed         0x00000022,accg1
533         test_acc_immed  0x22222222,acc1
534         test_accg_immed         0x00000033,accg2
535         test_acc_immed  0x33333333,acc2
536         test_accg_immed         0x00000044,accg3
537         test_acc_immed  0x44444444,acc3
539         ; Mixed operands
540         set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
541         set_fr_iimmed   0xfffd,2,fr10
542         set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
543         set_fr_iimmed   1,0xfffe,fr11
544         cmqmulhs        fr8,fr10,acc0,cc2,0
545         test_accg_immed         0x00000011,accg0
546         test_acc_immed  0x11111111,acc0
547         test_accg_immed         0x00000022,accg1
548         test_acc_immed  0x22222222,acc1
549         test_accg_immed         0x00000033,accg2
550         test_acc_immed  0x33333333,acc2
551         test_accg_immed         0x00000044,accg3
552         test_acc_immed  0x44444444,acc3
554         set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
555         set_fr_iimmed   0,0xfffe,fr10
556         set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
557         set_fr_iimmed   0xfffe,0x2001,fr11
558         cmqmulhs        fr8,fr10,acc0,cc6,1
559         test_accg_immed         0x00000011,accg0
560         test_acc_immed  0x11111111,acc0
561         test_accg_immed         0x00000022,accg1
562         test_acc_immed  0x22222222,acc1
563         test_accg_immed         0x00000033,accg2
564         test_acc_immed  0x33333333,acc2
565         test_accg_immed         0x00000044,accg3
566         test_acc_immed  0x44444444,acc3
568         set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
569         set_fr_iimmed   0xfffe,0x4000,fr10
570         set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
571         set_fr_iimmed   0x8000,0x7fff,fr11
572         cmqmulhs        fr8,fr10,acc0,cc6,0
573         test_accg_immed         0x00000011,accg0
574         test_acc_immed  0x11111111,acc0
575         test_accg_immed         0x00000022,accg1
576         test_acc_immed  0x22222222,acc1
577         test_accg_immed         0x00000033,accg2
578         test_acc_immed  0x33333333,acc2
579         test_accg_immed         0x00000044,accg3
580         test_acc_immed  0x44444444,acc3
582         ; Negative operands
583         set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
584         set_fr_iimmed   0xfffd,0xfffe,fr10
585         set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
586         set_fr_iimmed   0xfffe,0xffff,fr11
587         cmqmulhs        fr8,fr10,acc0,cc6,1
588         test_accg_immed         0x00000011,accg0
589         test_acc_immed  0x11111111,acc0
590         test_accg_immed         0x00000022,accg1
591         test_acc_immed  0x22222222,acc1
592         test_accg_immed         0x00000033,accg2
593         test_acc_immed  0x33333333,acc2
594         test_accg_immed         0x00000044,accg3
595         test_acc_immed  0x44444444,acc3
597         set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
598         set_fr_iimmed   0x8001,0x8001,fr10
599         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
600         set_fr_iimmed   0x8000,0x8000,fr11
601         cmqmulhs        fr8,fr10,acc0,cc6,0
602         test_accg_immed         0x00000011,accg0
603         test_acc_immed  0x11111111,acc0
604         test_accg_immed         0x00000022,accg1
605         test_acc_immed  0x22222222,acc1
606         test_accg_immed         0x00000033,accg2
607         test_acc_immed  0x33333333,acc2
608         test_accg_immed         0x00000044,accg3
609         test_acc_immed  0x44444444,acc3
611         ; Positive operands
612         set_accg_immed  0x00000011,accg0
613         set_acc_immed   0x11111111,acc0
614         set_accg_immed  0x00000022,accg1
615         set_acc_immed   0x22222222,acc1
616         set_accg_immed  0x00000033,accg2
617         set_acc_immed   0x33333333,acc2
618         set_accg_immed  0x00000044,accg3
619         set_acc_immed   0x44444444,acc3
620         set_fr_iimmed   2,3,fr8         ; multiply small numbers
621         set_fr_iimmed   3,2,fr10
622         set_fr_iimmed   0,1,fr9         ; multiply by 0
623         set_fr_iimmed   2,0,fr11
624         cmqmulhs        fr8,fr10,acc0,cc3,1
625         test_accg_immed         0x00000011,accg0
626         test_acc_immed  0x11111111,acc0
627         test_accg_immed         0x00000022,accg1
628         test_acc_immed  0x22222222,acc1
629         test_accg_immed         0x00000033,accg2
630         test_acc_immed  0x33333333,acc2
631         test_accg_immed         0x00000044,accg3
632         test_acc_immed  0x44444444,acc3
634         set_fr_iimmed   2,1,fr8         ; multiply by 1
635         set_fr_iimmed   1,2,fr10
636         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
637         set_fr_iimmed   2,0x3fff,fr11
638         cmqmulhs        fr8,fr10,acc0,cc3,0
639         test_accg_immed         0x00000011,accg0
640         test_acc_immed  0x11111111,acc0
641         test_accg_immed         0x00000022,accg1
642         test_acc_immed  0x22222222,acc1
643         test_accg_immed         0x00000033,accg2
644         test_acc_immed  0x33333333,acc2
645         test_accg_immed         0x00000044,accg3
646         test_acc_immed  0x44444444,acc3
648         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
649         set_fr_iimmed   2,0x4000,fr10
650         set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
651         set_fr_iimmed   0x7fff,0x7fff,fr11
652         cmqmulhs        fr8,fr10,acc0,cc3,1
653         test_accg_immed         0x00000011,accg0
654         test_acc_immed  0x11111111,acc0
655         test_accg_immed         0x00000022,accg1
656         test_acc_immed  0x22222222,acc1
657         test_accg_immed         0x00000033,accg2
658         test_acc_immed  0x33333333,acc2
659         test_accg_immed         0x00000044,accg3
660         test_acc_immed  0x44444444,acc3
662         ; Mixed operands
663         set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
664         set_fr_iimmed   0xfffd,2,fr10
665         set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
666         set_fr_iimmed   1,0xfffe,fr11
667         cmqmulhs        fr8,fr10,acc0,cc3,0
668         test_accg_immed         0x00000011,accg0
669         test_acc_immed  0x11111111,acc0
670         test_accg_immed         0x00000022,accg1
671         test_acc_immed  0x22222222,acc1
672         test_accg_immed         0x00000033,accg2
673         test_acc_immed  0x33333333,acc2
674         test_accg_immed         0x00000044,accg3
675         test_acc_immed  0x44444444,acc3
677         set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
678         set_fr_iimmed   0,0xfffe,fr10
679         set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
680         set_fr_iimmed   0xfffe,0x2001,fr11
681         cmqmulhs        fr8,fr10,acc0,cc7,1
682         test_accg_immed         0x00000011,accg0
683         test_acc_immed  0x11111111,acc0
684         test_accg_immed         0x00000022,accg1
685         test_acc_immed  0x22222222,acc1
686         test_accg_immed         0x00000033,accg2
687         test_acc_immed  0x33333333,acc2
688         test_accg_immed         0x00000044,accg3
689         test_acc_immed  0x44444444,acc3
691         set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
692         set_fr_iimmed   0xfffe,0x4000,fr10
693         set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
694         set_fr_iimmed   0x8000,0x7fff,fr11
695         cmqmulhs        fr8,fr10,acc0,cc7,0
696         test_accg_immed         0x00000011,accg0
697         test_acc_immed  0x11111111,acc0
698         test_accg_immed         0x00000022,accg1
699         test_acc_immed  0x22222222,acc1
700         test_accg_immed         0x00000033,accg2
701         test_acc_immed  0x33333333,acc2
702         test_accg_immed         0x00000044,accg3
703         test_acc_immed  0x44444444,acc3
705         ; Negative operands
706         set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
707         set_fr_iimmed   0xfffd,0xfffe,fr10
708         set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
709         set_fr_iimmed   0xfffe,0xffff,fr11
710         cmqmulhs        fr8,fr10,acc0,cc7,1
711         test_accg_immed         0x00000011,accg0
712         test_acc_immed  0x11111111,acc0
713         test_accg_immed         0x00000022,accg1
714         test_acc_immed  0x22222222,acc1
715         test_accg_immed         0x00000033,accg2
716         test_acc_immed  0x33333333,acc2
717         test_accg_immed         0x00000044,accg3
718         test_acc_immed  0x44444444,acc3
720         set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
721         set_fr_iimmed   0x8001,0x8001,fr10
722         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
723         set_fr_iimmed   0x8000,0x8000,fr11
724         cmqmulhs        fr8,fr10,acc0,cc7,0
725         test_accg_immed         0x00000011,accg0
726         test_acc_immed  0x11111111,acc0
727         test_accg_immed         0x00000022,accg1
728         test_acc_immed  0x22222222,acc1
729         test_accg_immed         0x00000033,accg2
730         test_acc_immed  0x33333333,acc2
731         test_accg_immed         0x00000044,accg3
732         test_acc_immed  0x44444444,acc3
734         pass