Automatic date update in version.in
[binutils-gdb.git] / sim / testsuite / frv / csmul.cgs
blob25346e7d18fbda358aa23f52c5b98f8e240150ab
1 # frv testcase for csmul $GRi,$GRj,$GRk,$CCi,$cond
2 # mach: all
4         .include "testutils.inc"
6         start
8         .global csmul
9 csmul:
10         set_spr_immed   0x1b1b,cccr
12         ; Positive operands
13         set_gr_immed    3,gr7           ; multiply small numbers
14         set_gr_immed    2,gr8
15         csmul           gr7,gr8,gr8,cc4,1
16         test_gr_immed   0,gr8
17         test_gr_immed   6,gr9
19         set_gr_immed    1,gr7           ; multiply by 1
20         set_gr_immed    2,gr8
21         csmul           gr7,gr8,gr8,cc4,1
22         test_gr_immed   0,gr8
23         test_gr_immed   2,gr9
25         set_gr_immed    2,gr7           ; multiply by 1
26         set_gr_immed    1,gr8
27         csmul           gr7,gr8,gr8,cc4,1
28         test_gr_immed   0,gr8
29         test_gr_immed   2,gr9
31         set_gr_immed    0,gr7           ; multiply by 0
32         set_gr_immed    2,gr8
33         csmul           gr7,gr8,gr8,cc4,1
34         test_gr_immed   0,gr8
35         test_gr_immed   0,gr9
37         set_gr_immed    2,gr7           ; multiply by 0
38         set_gr_immed    0,gr8
39         csmul           gr7,gr8,gr8,cc4,1
40         test_gr_immed   0,gr8
41         test_gr_immed   0,gr9
43         set_gr_limmed   0x3fff,0xffff,gr7       ; 31 bit result
44         set_gr_immed    2,gr8
45         csmul           gr7,gr8,gr8,cc4,1
46         test_gr_immed   0,gr8
47         test_gr_limmed  0x7fff,0xfffe,gr9
49         set_gr_limmed   0x4000,0x0000,gr7       ; 32 bit result
50         set_gr_immed    2,gr8
51         csmul           gr7,gr8,gr8,cc4,1
52         test_gr_immed   0,gr8
53         test_gr_limmed  0x8000,0x0000,gr9
55         set_gr_limmed   0x4000,0x0000,gr7       ; 33 bit result
56         set_gr_immed    4,gr8
57         csmul           gr7,gr8,gr8,cc4,1
58         test_gr_immed   1,gr8
59         test_gr_limmed  0x0000,0x0000,gr9
61         set_gr_limmed   0x7fff,0xffff,gr7       ; max positive result
62         set_gr_limmed   0x7fff,0xffff,gr8
63         csmul           gr7,gr8,gr8,cc4,1
64         test_gr_limmed  0x3fff,0xffff,gr8
65         test_gr_immed   0x00000001,gr9
67         ; Mixed operands
68         set_gr_immed    -3,gr7          ; multiply small numbers
69         set_gr_immed    2,gr8
70         csmul           gr7,gr8,gr8,cc4,1
71         test_gr_immed   -1,gr8
72         test_gr_immed   -6,gr9
74         set_gr_immed    3,gr7           ; multiply small numbers
75         set_gr_immed    -2,gr8
76         csmul           gr7,gr8,gr8,cc4,1
77         test_gr_immed   -1,gr8
78         test_gr_immed   -6,gr9
80         set_gr_immed    1,gr7           ; multiply by 1
81         set_gr_immed    -2,gr8
82         csmul           gr7,gr8,gr8,cc4,1
83         test_gr_immed   -1,gr8
84         test_gr_immed   -2,gr9
86         set_gr_immed    -2,gr7          ; multiply by 1
87         set_gr_immed    1,gr8
88         csmul           gr7,gr8,gr8,cc4,1
89         test_gr_immed   -1,gr8
90         test_gr_immed   -2,gr9
92         set_gr_immed    0,gr7           ; multiply by 0
93         set_gr_immed    -2,gr8
94         csmul           gr7,gr8,gr8,cc4,1
95         test_gr_immed   0,gr8
96         test_gr_immed   0,gr9
98         set_gr_immed    -2,gr7          ; multiply by 0
99         set_gr_immed    0,gr8
100         csmul           gr7,gr8,gr8,cc4,1
101         test_gr_immed   0,gr8
102         test_gr_immed   0,gr9
104         set_gr_limmed   0x2000,0x0001,gr7       ; 31 bit result
105         set_gr_immed    -2,gr8
106         csmul           gr7,gr8,gr8,cc4,1
107         test_gr_limmed  0xffff,0xffff,gr8
108         test_gr_limmed  0xbfff,0xfffe,gr9
110         set_gr_limmed   0x4000,0x0000,gr7       ; 32 bit result
111         set_gr_immed    -2,gr8
112         csmul           gr7,gr8,gr8,cc4,1
113         test_gr_limmed  0xffff,0xffff,gr8
114         test_gr_limmed  0x8000,0x0000,gr9
116         set_gr_limmed   0x4000,0x0001,gr7       ; 32 bit result
117         set_gr_immed    -2,gr8
118         csmul           gr7,gr8,gr8,cc4,1
119         test_gr_limmed  0xffff,0xffff,gr8
120         test_gr_limmed  0x7fff,0xfffe,gr9
122         set_gr_limmed   0x4000,0x0000,gr7       ; 33 bit result
123         set_gr_immed    -4,gr8
124         csmul           gr7,gr8,gr8,cc4,1
125         test_gr_limmed  0xffff,0xffff,gr8
126         test_gr_limmed  0x0000,0x0000,gr9
128         set_gr_limmed   0x7fff,0xffff,gr7       ; max negative result
129         set_gr_limmed   0x8000,0x0000,gr8
130         csmul           gr7,gr8,gr8,cc4,1
131         test_gr_limmed  0xc000,0x0000,gr8
132         test_gr_limmed  0x8000,0x0000,gr9
134         ; Negative operands
135         set_gr_immed    -3,gr7          ; multiply small numbers
136         set_gr_immed    -2,gr8
137         csmul           gr7,gr8,gr8,cc4,1
138         test_gr_immed   0,gr8
139         test_gr_immed   6,gr9
141         set_gr_immed    -1,gr7          ; multiply by 1
142         set_gr_immed    -2,gr8
143         csmul           gr7,gr8,gr8,cc4,1
144         test_gr_immed   0,gr8
145         test_gr_immed   2,gr9
147         set_gr_immed    -2,gr7          ; multiply by 1
148         set_gr_immed    -1,gr8
149         csmul           gr7,gr8,gr8,cc4,1
150         test_gr_immed   0,gr8
151         test_gr_immed   2,gr9
153         set_gr_limmed   0xc000,0x0001,gr7       ; 31 bit result
154         set_gr_immed    -2,gr8
155         csmul           gr7,gr8,gr8,cc4,1
156         test_gr_immed   0,gr8
157         test_gr_limmed  0x7fff,0xfffe,gr9
159         set_gr_limmed   0xc000,0x0000,gr7       ; 32 bit result
160         set_gr_immed    -2,gr8
161         csmul           gr7,gr8,gr8,cc4,1
162         test_gr_immed   0,gr8
163         test_gr_limmed  0x8000,0x0000,gr9
165         set_gr_limmed   0xc000,0x0000,gr7       ; 33 bit result
166         set_gr_immed    -4,gr8
167         csmul           gr7,gr8,gr8,cc4,1
168         test_gr_immed   1,gr8
169         test_gr_immed   0x00000000,gr9
171         set_gr_limmed   0x8000,0x0001,gr7       ; almost max positive result
172         set_gr_limmed   0x8000,0x0001,gr8
173         csmul           gr7,gr8,gr8,cc4,1
174         test_gr_limmed  0x3fff,0xffff,gr8
175         test_gr_immed   0x00000001,gr9
178         set_gr_limmed   0x8000,0x0000,gr7       ; max positive result
179         set_gr_limmed   0x8000,0x0000,gr8
180         csmul           gr7,gr8,gr8,cc4,1
181         test_gr_limmed  0x4000,0x0000,gr8
182         test_gr_immed   0x00000000,gr9
184         ; Positive operands
185         set_gr_immed    3,gr7           ; multiply small numbers
186         set_gr_immed    2,gr8
187         csmul           gr7,gr8,gr8,cc5,0
188         test_gr_immed   0,gr8
189         test_gr_immed   6,gr9
191         set_gr_immed    1,gr7           ; multiply by 1
192         set_gr_immed    2,gr8
193         csmul           gr7,gr8,gr8,cc5,0
194         test_gr_immed   0,gr8
195         test_gr_immed   2,gr9
197         set_gr_immed    2,gr7           ; multiply by 1
198         set_gr_immed    1,gr8
199         csmul           gr7,gr8,gr8,cc5,0
200         test_gr_immed   0,gr8
201         test_gr_immed   2,gr9
203         set_gr_immed    0,gr7           ; multiply by 0
204         set_gr_immed    2,gr8
205         csmul           gr7,gr8,gr8,cc5,0
206         test_gr_immed   0,gr8
207         test_gr_immed   0,gr9
209         set_gr_immed    2,gr7           ; multiply by 0
210         set_gr_immed    0,gr8
211         csmul           gr7,gr8,gr8,cc5,0
212         test_gr_immed   0,gr8
213         test_gr_immed   0,gr9
215         set_gr_limmed   0x3fff,0xffff,gr7       ; 31 bit result
216         set_gr_immed    2,gr8
217         csmul           gr7,gr8,gr8,cc5,0
218         test_gr_immed   0,gr8
219         test_gr_limmed  0x7fff,0xfffe,gr9
221         set_gr_limmed   0x4000,0x0000,gr7       ; 32 bit result
222         set_gr_immed    2,gr8
223         csmul           gr7,gr8,gr8,cc5,0
224         test_gr_immed   0,gr8
225         test_gr_limmed  0x8000,0x0000,gr9
227         set_gr_limmed   0x4000,0x0000,gr7       ; 33 bit result
228         set_gr_immed    4,gr8
229         csmul           gr7,gr8,gr8,cc5,0
230         test_gr_immed   1,gr8
231         test_gr_limmed  0x0000,0x0000,gr9
233         set_gr_limmed   0x7fff,0xffff,gr7       ; max positive result
234         set_gr_limmed   0x7fff,0xffff,gr8
235         csmul           gr7,gr8,gr8,cc5,0
236         test_gr_limmed  0x3fff,0xffff,gr8
237         test_gr_immed   0x00000001,gr9
239         ; Mixed operands
240         set_gr_immed    -3,gr7          ; multiply small numbers
241         set_gr_immed    2,gr8
242         csmul           gr7,gr8,gr8,cc5,0
243         test_gr_immed   -1,gr8
244         test_gr_immed   -6,gr9
246         set_gr_immed    3,gr7           ; multiply small numbers
247         set_gr_immed    -2,gr8
248         csmul           gr7,gr8,gr8,cc5,0
249         test_gr_immed   -1,gr8
250         test_gr_immed   -6,gr9
252         set_gr_immed    1,gr7           ; multiply by 1
253         set_gr_immed    -2,gr8
254         csmul           gr7,gr8,gr8,cc5,0
255         test_gr_immed   -1,gr8
256         test_gr_immed   -2,gr9
258         set_gr_immed    -2,gr7          ; multiply by 1
259         set_gr_immed    1,gr8
260         csmul           gr7,gr8,gr8,cc5,0
261         test_gr_immed   -1,gr8
262         test_gr_immed   -2,gr9
264         set_gr_immed    0,gr7           ; multiply by 0
265         set_gr_immed    -2,gr8
266         csmul           gr7,gr8,gr8,cc5,0
267         test_gr_immed   0,gr8
268         test_gr_immed   0,gr9
270         set_gr_immed    -2,gr7          ; multiply by 0
271         set_gr_immed    0,gr8
272         csmul           gr7,gr8,gr8,cc5,0
273         test_gr_immed   0,gr8
274         test_gr_immed   0,gr9
276         set_gr_limmed   0x2000,0x0001,gr7       ; 31 bit result
277         set_gr_immed    -2,gr8
278         csmul           gr7,gr8,gr8,cc5,0
279         test_gr_limmed  0xffff,0xffff,gr8
280         test_gr_limmed  0xbfff,0xfffe,gr9
282         set_gr_limmed   0x4000,0x0000,gr7       ; 32 bit result
283         set_gr_immed    -2,gr8
284         csmul           gr7,gr8,gr8,cc5,0
285         test_gr_limmed  0xffff,0xffff,gr8
286         test_gr_limmed  0x8000,0x0000,gr9
288         set_gr_limmed   0x4000,0x0001,gr7       ; 32 bit result
289         set_gr_immed    -2,gr8
290         csmul           gr7,gr8,gr8,cc5,0
291         test_gr_limmed  0xffff,0xffff,gr8
292         test_gr_limmed  0x7fff,0xfffe,gr9
294         set_gr_limmed   0x4000,0x0000,gr7       ; 33 bit result
295         set_gr_immed    -4,gr8
296         csmul           gr7,gr8,gr8,cc5,0
297         test_gr_limmed  0xffff,0xffff,gr8
298         test_gr_limmed  0x0000,0x0000,gr9
300         set_gr_limmed   0x7fff,0xffff,gr7       ; max negative result
301         set_gr_limmed   0x8000,0x0000,gr8
302         csmul           gr7,gr8,gr8,cc5,0
303         test_gr_limmed  0xc000,0x0000,gr8
304         test_gr_limmed  0x8000,0x0000,gr9
306         ; Negative operands
307         set_gr_immed    -3,gr7          ; multiply small numbers
308         set_gr_immed    -2,gr8
309         csmul           gr7,gr8,gr8,cc5,0
310         test_gr_immed   0,gr8
311         test_gr_immed   6,gr9
313         set_gr_immed    -1,gr7          ; multiply by 1
314         set_gr_immed    -2,gr8
315         csmul           gr7,gr8,gr8,cc5,0
316         test_gr_immed   0,gr8
317         test_gr_immed   2,gr9
319         set_gr_immed    -2,gr7          ; multiply by 1
320         set_gr_immed    -1,gr8
321         csmul           gr7,gr8,gr8,cc5,0
322         test_gr_immed   0,gr8
323         test_gr_immed   2,gr9
325         set_gr_limmed   0xc000,0x0001,gr7       ; 31 bit result
326         set_gr_immed    -2,gr8
327         csmul           gr7,gr8,gr8,cc5,0
328         test_gr_immed   0,gr8
329         test_gr_limmed  0x7fff,0xfffe,gr9
331         set_gr_limmed   0xc000,0x0000,gr7       ; 32 bit result
332         set_gr_immed    -2,gr8
333         csmul           gr7,gr8,gr8,cc5,0
334         test_gr_immed   0,gr8
335         test_gr_limmed  0x8000,0x0000,gr9
337         set_gr_limmed   0xc000,0x0000,gr7       ; 33 bit result
338         set_gr_immed    -4,gr8
339         csmul           gr7,gr8,gr8,cc5,0
340         test_gr_immed   1,gr8
341         test_gr_immed   0x00000000,gr9
343         set_gr_limmed   0x8000,0x0001,gr7       ; almost max positive result
344         set_gr_limmed   0x8000,0x0001,gr8
345         csmul           gr7,gr8,gr8,cc5,0
346         test_gr_limmed  0x3fff,0xffff,gr8
347         test_gr_immed   0x00000001,gr9
350         set_gr_limmed   0x8000,0x0000,gr7       ; max positive result
351         set_gr_limmed   0x8000,0x0000,gr8
352         csmul           gr7,gr8,gr8,cc5,0
353         test_gr_limmed  0x4000,0x0000,gr8
354         test_gr_immed   0x00000000,gr9
356         ; Positive operands
357         set_gr_immed    3,gr7           ; multiply small numbers
358         set_gr_immed    2,gr8
359         csmul           gr7,gr8,gr8,cc4,0
360         test_gr_immed   2,gr8
361         test_gr_immed   0,gr9
363         set_gr_immed    1,gr7           ; multiply by 1
364         set_gr_immed    2,gr8
365         csmul           gr7,gr8,gr8,cc4,0
366         test_gr_immed   2,gr8
367         test_gr_immed   0,gr9
369         set_gr_immed    2,gr7           ; multiply by 1
370         set_gr_immed    1,gr8
371         csmul           gr7,gr8,gr8,cc4,0
372         test_gr_immed   1,gr8
373         test_gr_immed   0,gr9
375         set_gr_immed    0,gr7           ; multiply by 0
376         set_gr_immed    2,gr8
377         csmul           gr7,gr8,gr8,cc4,0
378         test_gr_immed   2,gr8
379         test_gr_immed   0,gr9
381         set_gr_immed    2,gr7           ; multiply by 0
382         set_gr_immed    0,gr8
383         csmul           gr7,gr8,gr8,cc4,0
384         test_gr_immed   0,gr8
385         test_gr_immed   0,gr9
387         set_gr_limmed   0x3fff,0xffff,gr7       ; 31 bit result
388         set_gr_immed    2,gr8
389         csmul           gr7,gr8,gr8,cc4,0
390         test_gr_immed   2,gr8
391         test_gr_immed   0,gr9
393         set_gr_limmed   0x4000,0x0000,gr7       ; 32 bit result
394         set_gr_immed    2,gr8
395         csmul           gr7,gr8,gr8,cc4,0
396         test_gr_immed   2,gr8
397         test_gr_immed   0,gr9
399         set_gr_limmed   0x4000,0x0000,gr7       ; 33 bit result
400         set_gr_immed    4,gr8
401         csmul           gr7,gr8,gr8,cc4,0
402         test_gr_immed   4,gr8
403         test_gr_immed   0,gr9
405         set_gr_limmed   0x7fff,0xffff,gr7       ; max positive result
406         set_gr_limmed   0x7fff,0xffff,gr8
407         csmul           gr7,gr8,gr8,cc4,0
408         test_gr_limmed  0x7fff,0xffff,gr8
409         test_gr_immed   0,gr9
411         ; Mixed operands
412         set_gr_immed    -3,gr7          ; multiply small numbers
413         set_gr_immed    2,gr8
414         csmul           gr7,gr8,gr8,cc4,0
415         test_gr_immed   2,gr8
416         test_gr_immed   0,gr9
418         set_gr_immed    3,gr7           ; multiply small numbers
419         set_gr_immed    -2,gr8
420         csmul           gr7,gr8,gr8,cc4,0
421         test_gr_immed   -2,gr8
422         test_gr_immed   0,gr9
424         set_gr_immed    1,gr7           ; multiply by 1
425         set_gr_immed    -2,gr8
426         csmul           gr7,gr8,gr8,cc4,0
427         test_gr_immed   -2,gr8
428         test_gr_immed   0,gr9
430         set_gr_immed    -2,gr7          ; multiply by 1
431         set_gr_immed    1,gr8
432         csmul           gr7,gr8,gr8,cc4,0
433         test_gr_immed   1,gr8
434         test_gr_immed   0,gr9
436         set_gr_immed    0,gr7           ; multiply by 0
437         set_gr_immed    -2,gr8
438         csmul           gr7,gr8,gr8,cc4,0
439         test_gr_immed   -2,gr8
440         test_gr_immed   0,gr9
442         set_gr_immed    -2,gr7          ; multiply by 0
443         set_gr_immed    0,gr8
444         csmul           gr7,gr8,gr8,cc4,0
445         test_gr_immed   0,gr8
446         test_gr_immed   0,gr9
448         set_gr_limmed   0x2000,0x0001,gr7       ; 31 bit result
449         set_gr_immed    -2,gr8
450         csmul           gr7,gr8,gr8,cc4,0
451         test_gr_immed   -2,gr8
452         test_gr_immed   0,gr9
454         set_gr_limmed   0x4000,0x0000,gr7       ; 32 bit result
455         set_gr_immed    -2,gr8
456         csmul           gr7,gr8,gr8,cc4,0
457         test_gr_immed   -2,gr8
458         test_gr_immed   0,gr9
460         set_gr_limmed   0x4000,0x0001,gr7       ; 32 bit result
461         set_gr_immed    -2,gr8
462         csmul           gr7,gr8,gr8,cc4,0
463         test_gr_immed   -2,gr8
464         test_gr_immed   0,gr9
466         set_gr_limmed   0x4000,0x0000,gr7       ; 33 bit result
467         set_gr_immed    -4,gr8
468         csmul           gr7,gr8,gr8,cc4,0
469         test_gr_immed   -4,gr8
470         test_gr_immed   0,gr9
472         set_gr_limmed   0x7fff,0xffff,gr7       ; max negative result
473         set_gr_limmed   0x8000,0x0000,gr8
474         csmul           gr7,gr8,gr8,cc4,0
475         test_gr_limmed  0x8000,0x0000,gr8
476         test_gr_immed   0,gr9
478         ; Negative operands
479         set_gr_immed    -3,gr7          ; multiply small numbers
480         set_gr_immed    -2,gr8
481         csmul           gr7,gr8,gr8,cc4,0
482         test_gr_immed   -2,gr8
483         test_gr_immed   0,gr9
485         set_gr_immed    -1,gr7          ; multiply by 1
486         set_gr_immed    -2,gr8
487         csmul           gr7,gr8,gr8,cc4,0
488         test_gr_immed   -2,gr8
489         test_gr_immed   0,gr9
491         set_gr_immed    -2,gr7          ; multiply by 1
492         set_gr_immed    -1,gr8
493         csmul           gr7,gr8,gr8,cc4,0
494         test_gr_immed   -1,gr8
495         test_gr_immed   0,gr9
497         set_gr_limmed   0xc000,0x0001,gr7       ; 31 bit result
498         set_gr_immed    -2,gr8
499         csmul           gr7,gr8,gr8,cc4,0
500         test_gr_immed   -2,gr8
501         test_gr_immed   0,gr9
503         set_gr_limmed   0xc000,0x0000,gr7       ; 32 bit result
504         set_gr_immed    -2,gr8
505         csmul           gr7,gr8,gr8,cc4,0
506         test_gr_immed   -2,gr8
507         test_gr_immed   0,gr9
509         set_gr_limmed   0xc000,0x0000,gr7       ; 33 bit result
510         set_gr_immed    -4,gr8
511         csmul           gr7,gr8,gr8,cc4,0
512         test_gr_immed   -4,gr8
513         test_gr_immed   0,gr9
515         set_gr_limmed   0x8000,0x0001,gr7       ; almost max positive result
516         set_gr_limmed   0x8000,0x0001,gr8
517         csmul           gr7,gr8,gr8,cc4,0
518         test_gr_limmed  0x8000,0x0001,gr8
519         test_gr_immed   0,gr9
522         set_gr_limmed   0x8000,0x0000,gr7       ; max positive result
523         set_gr_limmed   0x8000,0x0000,gr8
524         csmul           gr7,gr8,gr8,cc4,0
525         test_gr_limmed  0x8000,0x0000,gr8
526         test_gr_immed   0,gr9
528         ; Positive operands
529         set_gr_immed    3,gr7           ; multiply small numbers
530         set_gr_immed    2,gr8
531         csmul           gr7,gr8,gr8,cc5,1
532         test_gr_immed   2,gr8
533         test_gr_immed   0,gr9
535         set_gr_immed    1,gr7           ; multiply by 1
536         set_gr_immed    2,gr8
537         csmul           gr7,gr8,gr8,cc5,1
538         test_gr_immed   2,gr8
539         test_gr_immed   0,gr9
541         set_gr_immed    2,gr7           ; multiply by 1
542         set_gr_immed    1,gr8
543         csmul           gr7,gr8,gr8,cc5,1
544         test_gr_immed   1,gr8
545         test_gr_immed   0,gr9
547         set_gr_immed    0,gr7           ; multiply by 0
548         set_gr_immed    2,gr8
549         csmul           gr7,gr8,gr8,cc5,1
550         test_gr_immed   2,gr8
551         test_gr_immed   0,gr9
553         set_gr_immed    2,gr7           ; multiply by 0
554         set_gr_immed    0,gr8
555         csmul           gr7,gr8,gr8,cc5,1
556         test_gr_immed   0,gr8
557         test_gr_immed   0,gr9
559         set_gr_limmed   0x3fff,0xffff,gr7       ; 31 bit result
560         set_gr_immed    2,gr8
561         csmul           gr7,gr8,gr8,cc5,1
562         test_gr_immed   2,gr8
563         test_gr_immed   0,gr9
565         set_gr_limmed   0x4000,0x0000,gr7       ; 32 bit result
566         set_gr_immed    2,gr8
567         csmul           gr7,gr8,gr8,cc5,1
568         test_gr_immed   2,gr8
569         test_gr_immed   0,gr9
571         set_gr_limmed   0x4000,0x0000,gr7       ; 33 bit result
572         set_gr_immed    4,gr8
573         csmul           gr7,gr8,gr8,cc5,1
574         test_gr_immed   4,gr8
575         test_gr_immed   0,gr9
577         set_gr_limmed   0x7fff,0xffff,gr7       ; max positive result
578         set_gr_limmed   0x7fff,0xffff,gr8
579         csmul           gr7,gr8,gr8,cc5,1
580         test_gr_limmed  0x7fff,0xffff,gr8
581         test_gr_immed   0,gr9
583         ; Mixed operands
584         set_gr_immed    -3,gr7          ; multiply small numbers
585         set_gr_immed    2,gr8
586         csmul           gr7,gr8,gr8,cc5,1
587         test_gr_immed   2,gr8
588         test_gr_immed   0,gr9
590         set_gr_immed    3,gr7           ; multiply small numbers
591         set_gr_immed    -2,gr8
592         csmul           gr7,gr8,gr8,cc5,1
593         test_gr_immed   -2,gr8
594         test_gr_immed   0,gr9
596         set_gr_immed    1,gr7           ; multiply by 1
597         set_gr_immed    -2,gr8
598         csmul           gr7,gr8,gr8,cc5,1
599         test_gr_immed   -2,gr8
600         test_gr_immed   0,gr9
602         set_gr_immed    -2,gr7          ; multiply by 1
603         set_gr_immed    1,gr8
604         csmul           gr7,gr8,gr8,cc5,1
605         test_gr_immed   1,gr8
606         test_gr_immed   0,gr9
608         set_gr_immed    0,gr7           ; multiply by 0
609         set_gr_immed    -2,gr8
610         csmul           gr7,gr8,gr8,cc5,1
611         test_gr_immed   -2,gr8
612         test_gr_immed   0,gr9
614         set_gr_immed    -2,gr7          ; multiply by 0
615         set_gr_immed    0,gr8
616         csmul           gr7,gr8,gr8,cc5,1
617         test_gr_immed   0,gr8
618         test_gr_immed   0,gr9
620         set_gr_limmed   0x2000,0x0001,gr7       ; 31 bit result
621         set_gr_immed    -2,gr8
622         csmul           gr7,gr8,gr8,cc5,1
623         test_gr_immed   -2,gr8
624         test_gr_immed   0,gr9
626         set_gr_limmed   0x4000,0x0000,gr7       ; 32 bit result
627         set_gr_immed    -2,gr8
628         csmul           gr7,gr8,gr8,cc5,1
629         test_gr_immed   -2,gr8
630         test_gr_immed   0,gr9
632         set_gr_limmed   0x4000,0x0001,gr7       ; 32 bit result
633         set_gr_immed    -2,gr8
634         csmul           gr7,gr8,gr8,cc5,1
635         test_gr_immed   -2,gr8
636         test_gr_immed   0,gr9
638         set_gr_limmed   0x4000,0x0000,gr7       ; 33 bit result
639         set_gr_immed    -4,gr8
640         csmul           gr7,gr8,gr8,cc5,1
641         test_gr_immed   -4,gr8
642         test_gr_immed   0,gr9
644         set_gr_limmed   0x7fff,0xffff,gr7       ; max negative result
645         set_gr_limmed   0x8000,0x0000,gr8
646         csmul           gr7,gr8,gr8,cc5,1
647         test_gr_limmed  0x8000,0x0000,gr8
648         test_gr_immed   0,gr9
650         ; Negative operands
651         set_gr_immed    -3,gr7          ; multiply small numbers
652         set_gr_immed    -2,gr8
653         csmul           gr7,gr8,gr8,cc5,1
654         test_gr_immed   -2,gr8
655         test_gr_immed   0,gr9
657         set_gr_immed    -1,gr7          ; multiply by 1
658         set_gr_immed    -2,gr8
659         csmul           gr7,gr8,gr8,cc5,1
660         test_gr_immed   -2,gr8
661         test_gr_immed   0,gr9
663         set_gr_immed    -2,gr7          ; multiply by 1
664         set_gr_immed    -1,gr8
665         csmul           gr7,gr8,gr8,cc5,1
666         test_gr_immed   -1,gr8
667         test_gr_immed   0,gr9
669         set_gr_limmed   0xc000,0x0001,gr7       ; 31 bit result
670         set_gr_immed    -2,gr8
671         csmul           gr7,gr8,gr8,cc5,1
672         test_gr_immed   -2,gr8
673         test_gr_immed   0,gr9
675         set_gr_limmed   0xc000,0x0000,gr7       ; 32 bit result
676         set_gr_immed    -2,gr8
677         csmul           gr7,gr8,gr8,cc5,1
678         test_gr_immed   -2,gr8
679         test_gr_immed   0,gr9
681         set_gr_limmed   0xc000,0x0000,gr7       ; 33 bit result
682         set_gr_immed    -4,gr8
683         csmul           gr7,gr8,gr8,cc5,1
684         test_gr_immed   -4,gr8
685         test_gr_immed   0,gr9
687         set_gr_limmed   0x8000,0x0001,gr7       ; almost max positive result
688         set_gr_limmed   0x8000,0x0001,gr8
689         csmul           gr7,gr8,gr8,cc5,1
690         test_gr_limmed  0x8000,0x0001,gr8
691         test_gr_immed   0,gr9
694         set_gr_limmed   0x8000,0x0000,gr7       ; max positive result
695         set_gr_limmed   0x8000,0x0000,gr8
696         csmul           gr7,gr8,gr8,cc5,1
697         test_gr_limmed  0x8000,0x0000,gr8
698         test_gr_immed   0,gr9
700         ; Positive operands
701         set_gr_immed    3,gr7           ; multiply small numbers
702         set_gr_immed    2,gr8
703         csmul           gr7,gr8,gr8,cc6,0
704         test_gr_immed   2,gr8
705         test_gr_immed   0,gr9
707         set_gr_immed    1,gr7           ; multiply by 1
708         set_gr_immed    2,gr8
709         csmul           gr7,gr8,gr8,cc6,0
710         test_gr_immed   2,gr8
711         test_gr_immed   0,gr9
713         set_gr_immed    2,gr7           ; multiply by 1
714         set_gr_immed    1,gr8
715         csmul           gr7,gr8,gr8,cc6,0
716         test_gr_immed   1,gr8
717         test_gr_immed   0,gr9
719         set_gr_immed    0,gr7           ; multiply by 0
720         set_gr_immed    2,gr8
721         csmul           gr7,gr8,gr8,cc6,0
722         test_gr_immed   2,gr8
723         test_gr_immed   0,gr9
725         set_gr_immed    2,gr7           ; multiply by 0
726         set_gr_immed    0,gr8
727         csmul           gr7,gr8,gr8,cc6,0
728         test_gr_immed   0,gr8
729         test_gr_immed   0,gr9
731         set_gr_limmed   0x3fff,0xffff,gr7       ; 31 bit result
732         set_gr_immed    2,gr8
733         csmul           gr7,gr8,gr8,cc6,0
734         test_gr_immed   2,gr8
735         test_gr_immed   0,gr9
737         set_gr_limmed   0x4000,0x0000,gr7       ; 32 bit result
738         set_gr_immed    2,gr8
739         csmul           gr7,gr8,gr8,cc6,0
740         test_gr_immed   2,gr8
741         test_gr_immed   0,gr9
743         set_gr_limmed   0x4000,0x0000,gr7       ; 33 bit result
744         set_gr_immed    4,gr8
745         csmul           gr7,gr8,gr8,cc6,0
746         test_gr_immed   4,gr8
747         test_gr_immed   0,gr9
749         set_gr_limmed   0x7fff,0xffff,gr7       ; max positive result
750         set_gr_limmed   0x7fff,0xffff,gr8
751         csmul           gr7,gr8,gr8,cc6,0
752         test_gr_limmed  0x7fff,0xffff,gr8
753         test_gr_immed   0,gr9
755         ; Mixed operands
756         set_gr_immed    -3,gr7          ; multiply small numbers
757         set_gr_immed    2,gr8
758         csmul           gr7,gr8,gr8,cc6,0
759         test_gr_immed   2,gr8
760         test_gr_immed   0,gr9
762         set_gr_immed    3,gr7           ; multiply small numbers
763         set_gr_immed    -2,gr8
764         csmul           gr7,gr8,gr8,cc6,0
765         test_gr_immed   -2,gr8
766         test_gr_immed   0,gr9
768         set_gr_immed    1,gr7           ; multiply by 1
769         set_gr_immed    -2,gr8
770         csmul           gr7,gr8,gr8,cc6,0
771         test_gr_immed   -2,gr8
772         test_gr_immed   0,gr9
774         set_gr_immed    -2,gr7          ; multiply by 1
775         set_gr_immed    1,gr8
776         csmul           gr7,gr8,gr8,cc6,0
777         test_gr_immed   1,gr8
778         test_gr_immed   0,gr9
780         set_gr_immed    0,gr7           ; multiply by 0
781         set_gr_immed    -2,gr8
782         csmul           gr7,gr8,gr8,cc6,0
783         test_gr_immed   -2,gr8
784         test_gr_immed   0,gr9
786         set_gr_immed    -2,gr7          ; multiply by 0
787         set_gr_immed    0,gr8
788         csmul           gr7,gr8,gr8,cc6,0
789         test_gr_immed   0,gr8
790         test_gr_immed   0,gr9
792         set_gr_limmed   0x2000,0x0001,gr7       ; 31 bit result
793         set_gr_immed    -2,gr8
794         csmul           gr7,gr8,gr8,cc6,0
795         test_gr_immed   -2,gr8
796         test_gr_immed   0,gr9
798         set_gr_limmed   0x4000,0x0000,gr7       ; 32 bit result
799         set_gr_immed    -2,gr8
800         csmul           gr7,gr8,gr8,cc6,0
801         test_gr_immed   -2,gr8
802         test_gr_immed   0,gr9
804         set_gr_limmed   0x4000,0x0001,gr7       ; 32 bit result
805         set_gr_immed    -2,gr8
806         csmul           gr7,gr8,gr8,cc6,0
807         test_gr_immed   -2,gr8
808         test_gr_immed   0,gr9
810         set_gr_limmed   0x4000,0x0000,gr7       ; 33 bit result
811         set_gr_immed    -4,gr8
812         csmul           gr7,gr8,gr8,cc6,0
813         test_gr_immed   -4,gr8
814         test_gr_immed   0,gr9
816         set_gr_limmed   0x7fff,0xffff,gr7       ; max negative result
817         set_gr_limmed   0x8000,0x0000,gr8
818         csmul           gr7,gr8,gr8,cc6,0
819         test_gr_limmed  0x8000,0x0000,gr8
820         test_gr_immed   0,gr9
822         ; Negative operands
823         set_gr_immed    -3,gr7          ; multiply small numbers
824         set_gr_immed    -2,gr8
825         csmul           gr7,gr8,gr8,cc6,0
826         test_gr_immed   -2,gr8
827         test_gr_immed   0,gr9
829         set_gr_immed    -1,gr7          ; multiply by 1
830         set_gr_immed    -2,gr8
831         csmul           gr7,gr8,gr8,cc6,0
832         test_gr_immed   -2,gr8
833         test_gr_immed   0,gr9
835         set_gr_immed    -2,gr7          ; multiply by 1
836         set_gr_immed    -1,gr8
837         csmul           gr7,gr8,gr8,cc6,0
838         test_gr_immed   -1,gr8
839         test_gr_immed   0,gr9
841         set_gr_limmed   0xc000,0x0001,gr7       ; 31 bit result
842         set_gr_immed    -2,gr8
843         csmul           gr7,gr8,gr8,cc6,0
844         test_gr_immed   -2,gr8
845         test_gr_immed   0,gr9
847         set_gr_limmed   0xc000,0x0000,gr7       ; 32 bit result
848         set_gr_immed    -2,gr8
849         csmul           gr7,gr8,gr8,cc6,0
850         test_gr_immed   -2,gr8
851         test_gr_immed   0,gr9
853         set_gr_limmed   0xc000,0x0000,gr7       ; 33 bit result
854         set_gr_immed    -4,gr8
855         csmul           gr7,gr8,gr8,cc6,0
856         test_gr_immed   -4,gr8
857         test_gr_immed   0,gr9
859         set_gr_limmed   0x8000,0x0001,gr7       ; almost max positive result
860         set_gr_limmed   0x8000,0x0001,gr8
861         csmul           gr7,gr8,gr8,cc6,0
862         test_gr_limmed  0x8000,0x0001,gr8
863         test_gr_immed   0,gr9
866         set_gr_limmed   0x8000,0x0000,gr7       ; max positive result
867         set_gr_limmed   0x8000,0x0000,gr8
868         csmul           gr7,gr8,gr8,cc6,0
869         test_gr_limmed  0x8000,0x0000,gr8
870         test_gr_immed   0,gr9
872         ; Positive operands
873         set_gr_immed    3,gr7           ; multiply small numbers
874         set_gr_immed    2,gr8
875         csmul           gr7,gr8,gr8,cc7,1
876         test_gr_immed   2,gr8
877         test_gr_immed   0,gr9
879         set_gr_immed    1,gr7           ; multiply by 1
880         set_gr_immed    2,gr8
881         csmul           gr7,gr8,gr8,cc7,1
882         test_gr_immed   2,gr8
883         test_gr_immed   0,gr9
885         set_gr_immed    2,gr7           ; multiply by 1
886         set_gr_immed    1,gr8
887         csmul           gr7,gr8,gr8,cc7,1
888         test_gr_immed   1,gr8
889         test_gr_immed   0,gr9
891         set_gr_immed    0,gr7           ; multiply by 0
892         set_gr_immed    2,gr8
893         csmul           gr7,gr8,gr8,cc7,1
894         test_gr_immed   2,gr8
895         test_gr_immed   0,gr9
897         set_gr_immed    2,gr7           ; multiply by 0
898         set_gr_immed    0,gr8
899         csmul           gr7,gr8,gr8,cc7,1
900         test_gr_immed   0,gr8
901         test_gr_immed   0,gr9
903         set_gr_limmed   0x3fff,0xffff,gr7       ; 31 bit result
904         set_gr_immed    2,gr8
905         csmul           gr7,gr8,gr8,cc7,1
906         test_gr_immed   2,gr8
907         test_gr_immed   0,gr9
909         set_gr_limmed   0x4000,0x0000,gr7       ; 32 bit result
910         set_gr_immed    2,gr8
911         csmul           gr7,gr8,gr8,cc7,1
912         test_gr_immed   2,gr8
913         test_gr_immed   0,gr9
915         set_gr_limmed   0x4000,0x0000,gr7       ; 33 bit result
916         set_gr_immed    4,gr8
917         csmul           gr7,gr8,gr8,cc7,1
918         test_gr_immed   4,gr8
919         test_gr_immed   0,gr9
921         set_gr_limmed   0x7fff,0xffff,gr7       ; max positive result
922         set_gr_limmed   0x7fff,0xffff,gr8
923         csmul           gr7,gr8,gr8,cc7,1
924         test_gr_limmed  0x7fff,0xffff,gr8
925         test_gr_immed   0,gr9
927         ; Mixed operands
928         set_gr_immed    -3,gr7          ; multiply small numbers
929         set_gr_immed    2,gr8
930         csmul           gr7,gr8,gr8,cc7,1
931         test_gr_immed   2,gr8
932         test_gr_immed   0,gr9
934         set_gr_immed    3,gr7           ; multiply small numbers
935         set_gr_immed    -2,gr8
936         csmul           gr7,gr8,gr8,cc7,1
937         test_gr_immed   -2,gr8
938         test_gr_immed   0,gr9
940         set_gr_immed    1,gr7           ; multiply by 1
941         set_gr_immed    -2,gr8
942         csmul           gr7,gr8,gr8,cc7,1
943         test_gr_immed   -2,gr8
944         test_gr_immed   0,gr9
946         set_gr_immed    -2,gr7          ; multiply by 1
947         set_gr_immed    1,gr8
948         csmul           gr7,gr8,gr8,cc7,1
949         test_gr_immed   1,gr8
950         test_gr_immed   0,gr9
952         set_gr_immed    0,gr7           ; multiply by 0
953         set_gr_immed    -2,gr8
954         csmul           gr7,gr8,gr8,cc7,1
955         test_gr_immed   -2,gr8
956         test_gr_immed   0,gr9
958         set_gr_immed    -2,gr7          ; multiply by 0
959         set_gr_immed    0,gr8
960         csmul           gr7,gr8,gr8,cc7,1
961         test_gr_immed   0,gr8
962         test_gr_immed   0,gr9
964         set_gr_limmed   0x2000,0x0001,gr7       ; 31 bit result
965         set_gr_immed    -2,gr8
966         csmul           gr7,gr8,gr8,cc7,1
967         test_gr_immed   -2,gr8
968         test_gr_immed   0,gr9
970         set_gr_limmed   0x4000,0x0000,gr7       ; 32 bit result
971         set_gr_immed    -2,gr8
972         csmul           gr7,gr8,gr8,cc7,1
973         test_gr_immed   -2,gr8
974         test_gr_immed   0,gr9
976         set_gr_limmed   0x4000,0x0001,gr7       ; 32 bit result
977         set_gr_immed    -2,gr8
978         csmul           gr7,gr8,gr8,cc7,1
979         test_gr_immed   -2,gr8
980         test_gr_immed   0,gr9
982         set_gr_limmed   0x4000,0x0000,gr7       ; 33 bit result
983         set_gr_immed    -4,gr8
984         csmul           gr7,gr8,gr8,cc7,1
985         test_gr_immed   -4,gr8
986         test_gr_immed   0,gr9
988         set_gr_limmed   0x7fff,0xffff,gr7       ; max negative result
989         set_gr_limmed   0x8000,0x0000,gr8
990         csmul           gr7,gr8,gr8,cc7,1
991         test_gr_limmed  0x8000,0x0000,gr8
992         test_gr_immed   0,gr9
994         ; Negative operands
995         set_gr_immed    -3,gr7          ; multiply small numbers
996         set_gr_immed    -2,gr8
997         csmul           gr7,gr8,gr8,cc7,1
998         test_gr_immed   -2,gr8
999         test_gr_immed   0,gr9
1001         set_gr_immed    -1,gr7          ; multiply by 1
1002         set_gr_immed    -2,gr8
1003         csmul           gr7,gr8,gr8,cc7,1
1004         test_gr_immed   -2,gr8
1005         test_gr_immed   0,gr9
1007         set_gr_immed    -2,gr7          ; multiply by 1
1008         set_gr_immed    -1,gr8
1009         csmul           gr7,gr8,gr8,cc7,1
1010         test_gr_immed   -1,gr8
1011         test_gr_immed   0,gr9
1013         set_gr_limmed   0xc000,0x0001,gr7       ; 31 bit result
1014         set_gr_immed    -2,gr8
1015         csmul           gr7,gr8,gr8,cc7,1
1016         test_gr_immed   -2,gr8
1017         test_gr_immed   0,gr9
1019         set_gr_limmed   0xc000,0x0000,gr7       ; 32 bit result
1020         set_gr_immed    -2,gr8
1021         csmul           gr7,gr8,gr8,cc7,1
1022         test_gr_immed   -2,gr8
1023         test_gr_immed   0,gr9
1025         set_gr_limmed   0xc000,0x0000,gr7       ; 33 bit result
1026         set_gr_immed    -4,gr8
1027         csmul           gr7,gr8,gr8,cc7,1
1028         test_gr_immed   -4,gr8
1029         test_gr_immed   0,gr9
1031         set_gr_limmed   0x8000,0x0001,gr7       ; almost max positive result
1032         set_gr_limmed   0x8000,0x0001,gr8
1033         csmul           gr7,gr8,gr8,cc7,1
1034         test_gr_limmed  0x8000,0x0001,gr8
1035         test_gr_immed   0,gr9
1038         set_gr_limmed   0x8000,0x0000,gr7       ; max positive result
1039         set_gr_limmed   0x8000,0x0000,gr8
1040         csmul           gr7,gr8,gr8,cc7,1
1041         test_gr_limmed  0x8000,0x0000,gr8
1042         test_gr_immed   0,gr9
1044         pass