New sim testsuite for Fujitsu FRV. Contributed by Red Hat.
[external/binutils.git] / sim / testsuite / sim / frv / cmcpxis.cgs
1 # frv testcase for cmcpxis $GRi,$GRj,$ACCk,$CCi,$cond
2 # mach: all
3
4         .include "testutils.inc"
5
6         start
7
8         .global cmcpxis
9 cmcpxis:
10         set_spr_immed   0x1b1b,cccr
11
12         ; Positive operands
13         set_fr_iimmed   2,4,fr7         ; multiply small numbers
14         set_fr_iimmed   5,3,fr8
15         cmcpxis         fr7,fr8,acc0,cc0,1
16         test_accg_immed 0x00,accg0
17         test_acc_immed  26,acc0
18
19         set_fr_iimmed   3,1,fr7         ; multiply by 0
20         set_fr_iimmed   0,2,fr8
21         cmcpxis         fr7,fr8,acc0,cc0,1
22         test_accg_immed         0,accg0
23         test_acc_immed  6,acc0
24
25         set_fr_iimmed   2,1,fr7         ; multiply by 1
26         set_fr_iimmed   1,1,fr8
27         cmcpxis         fr7,fr8,acc0,cc0,1
28         test_accg_immed         0,accg0
29         test_acc_immed  3,acc0
30
31         set_fr_iimmed   0x3ff8,2,fr7    ; 15 bit result
32         set_fr_iimmed   0x0007,2,fr8
33         cmcpxis         fr7,fr8,acc0,cc0,1
34         test_accg_immed         0,accg0
35         test_acc_limmed 0,0x7ffe,acc0
36
37         set_fr_iimmed   0x4000,2,fr7    ; 16 bit result
38         set_fr_iimmed   0x2000,2,fr8
39         cmcpxis         fr7,fr8,acc0,cc0,1
40         test_accg_immed         0,accg0
41         test_acc_limmed 0x0000,0xc000,acc0
42
43         set_fr_iimmed   0x7fff,0x0000,fr7       ; max positive result
44         set_fr_iimmed   0x7fff,0x7fff,fr8
45         cmcpxis         fr7,fr8,acc0,cc0,1
46         test_accg_immed         0,accg0
47         test_acc_limmed 0x3fff,0x0001,acc0
48
49         ; Mixed operands
50         set_fr_iimmed   2,0xfffd,fr7            ; multiply small numbers
51         set_fr_iimmed   1,0xfffd,fr8
52         cmcpxis         fr7,fr8,acc0,cc0,1
53         test_accg_immed         0xff,accg0
54         test_acc_immed  -9,acc0
55
56         set_fr_iimmed   0xfffe,2,fr7            ; multiply by 1
57         set_fr_iimmed   0xfffe,1,fr8
58         cmcpxis         fr7,fr8,acc0,cc0,1
59         test_accg_immed 0xff,accg0
60         test_acc_immed  -6,acc0
61
62         set_fr_iimmed   0xfffe,0,fr7            ; multiply by 0
63         set_fr_iimmed   0xfffe,1,fr8
64         cmcpxis         fr7,fr8,acc0,cc0,1
65         test_accg_immed         0xff,accg0
66         test_acc_immed  -2,acc0
67
68         set_fr_iimmed   0x2001,0xffff,fr7       ; 15 bit result
69         set_fr_iimmed   0xffff,0xfffe,fr8
70         cmcpxis         fr7,fr8,acc0,cc4,1
71         test_accg_immed         0xff,accg0
72         test_acc_limmed 0xffff,0xbfff,acc0
73
74         set_fr_iimmed   0x4000,0xfffe,fr7       ; 16 bit result
75         set_fr_iimmed   0x0003,0xfffe,fr8
76         cmcpxis         fr7,fr8,acc0,cc4,1
77         test_accg_immed         0xff,accg0
78         test_acc_limmed 0xffff,0x7ffa,acc0
79
80         set_fr_iimmed   0x7fff,0x7fff,fr7       ; max negative result
81         set_fr_iimmed   0x8000,0x8000,fr8
82         cmcpxis         fr7,fr8,acc0,cc4,1
83         test_accg_immed         0xff,accg0
84         test_acc_limmed 0x8001,0x0000,acc0
85
86         set_fr_iimmed   0x8000,0x8000,fr7       ; max positive result
87         set_fr_iimmed   0x8000,0x8000,fr8
88         cmcpxis         fr7,fr8,acc0,cc4,1
89         test_accg_immed         0,accg0
90         test_acc_limmed 0x8000,0x0000,acc0
91
92         ; Negative operands
93         set_fr_iimmed   0xfffe,0xfffc,fr7               ; multiply small numbers
94         set_fr_iimmed   0xfffb,0xfffd,fr8
95         cmcpxis         fr7,fr8,acc0,cc4,1
96         test_accg_immed 0x00,accg0
97         test_acc_immed  26,acc0
98
99         set_fr_iimmed   0xffff,0xffff,fr7               ; multiply by -1
100         set_fr_iimmed   0xffff,0xfffe,fr8
101         cmcpxis         fr7,fr8,acc0,cc4,1
102         test_accg_immed         0,accg0
103         test_acc_immed  3,acc0
104
105         set_fr_iimmed   0x7fff,0x0000,fr7       ; almost max positive result
106         set_fr_iimmed   0x8001,0x7fff,fr8
107         cmcpxis         fr7,fr8,acc0,cc4,1
108         test_accg_immed         0,accg0
109         test_acc_immed  0x3fff0001,acc0
110
111         set_fr_iimmed   0x8000,0x0000,fr7       ; max positive result
112         set_fr_iimmed   0x8000,0x8000,fr8
113         cmcpxis         fr7,fr8,acc0,cc4,1
114         test_accg_immed         0,accg0
115         test_acc_immed  0x40000000,acc0
116
117         ; Positive operands
118         set_fr_iimmed   2,4,fr7         ; multiply small numbers
119         set_fr_iimmed   5,3,fr8
120         cmcpxis         fr7,fr8,acc0,cc1,0
121         test_accg_immed 0x00,accg0
122         test_acc_immed  26,acc0
123
124         set_fr_iimmed   3,1,fr7         ; multiply by 0
125         set_fr_iimmed   0,2,fr8
126         cmcpxis         fr7,fr8,acc0,cc1,0
127         test_accg_immed         0,accg0
128         test_acc_immed  6,acc0
129
130         set_fr_iimmed   2,1,fr7         ; multiply by 1
131         set_fr_iimmed   1,1,fr8
132         cmcpxis         fr7,fr8,acc0,cc1,0
133         test_accg_immed         0,accg0
134         test_acc_immed  3,acc0
135
136         set_fr_iimmed   0x3ff8,2,fr7    ; 15 bit result
137         set_fr_iimmed   0x0007,2,fr8
138         cmcpxis         fr7,fr8,acc0,cc1,0
139         test_accg_immed         0,accg0
140         test_acc_limmed 0,0x7ffe,acc0
141
142         set_fr_iimmed   0x4000,2,fr7    ; 16 bit result
143         set_fr_iimmed   0x2000,2,fr8
144         cmcpxis         fr7,fr8,acc0,cc1,0
145         test_accg_immed         0,accg0
146         test_acc_limmed 0x0000,0xc000,acc0
147
148         set_fr_iimmed   0x7fff,0x0000,fr7       ; max positive result
149         set_fr_iimmed   0x7fff,0x7fff,fr8
150         cmcpxis         fr7,fr8,acc0,cc1,0
151         test_accg_immed         0,accg0
152         test_acc_limmed 0x3fff,0x0001,acc0
153
154         ; Mixed operands
155         set_fr_iimmed   2,0xfffd,fr7            ; multiply small numbers
156         set_fr_iimmed   1,0xfffd,fr8
157         cmcpxis         fr7,fr8,acc0,cc1,0
158         test_accg_immed         0xff,accg0
159         test_acc_immed  -9,acc0
160
161         set_fr_iimmed   0xfffe,2,fr7            ; multiply by 1
162         set_fr_iimmed   0xfffe,1,fr8
163         cmcpxis         fr7,fr8,acc0,cc1,0
164         test_accg_immed 0xff,accg0
165         test_acc_immed  -6,acc0
166
167         set_fr_iimmed   0xfffe,0,fr7            ; multiply by 0
168         set_fr_iimmed   0xfffe,1,fr8
169         cmcpxis         fr7,fr8,acc0,cc1,0
170         test_accg_immed         0xff,accg0
171         test_acc_immed  -2,acc0
172
173         set_fr_iimmed   0x2001,0xffff,fr7       ; 15 bit result
174         set_fr_iimmed   0xffff,0xfffe,fr8
175         cmcpxis         fr7,fr8,acc0,cc5,0
176         test_accg_immed         0xff,accg0
177         test_acc_limmed 0xffff,0xbfff,acc0
178
179         set_fr_iimmed   0x4000,0xfffe,fr7       ; 16 bit result
180         set_fr_iimmed   0x0003,0xfffe,fr8
181         cmcpxis         fr7,fr8,acc0,cc5,0
182         test_accg_immed         0xff,accg0
183         test_acc_limmed 0xffff,0x7ffa,acc0
184
185         set_fr_iimmed   0x7fff,0x7fff,fr7       ; max negative result
186         set_fr_iimmed   0x8000,0x8000,fr8
187         cmcpxis         fr7,fr8,acc0,cc5,0
188         test_accg_immed         0xff,accg0
189         test_acc_limmed 0x8001,0x0000,acc0
190
191         set_fr_iimmed   0x8000,0x8000,fr7       ; max positive result
192         set_fr_iimmed   0x8000,0x8000,fr8
193         cmcpxis         fr7,fr8,acc0,cc5,0
194         test_accg_immed         0,accg0
195         test_acc_limmed 0x8000,0x0000,acc0
196
197         ; Negative operands
198         set_fr_iimmed   0xfffe,0xfffc,fr7               ; multiply small numbers
199         set_fr_iimmed   0xfffb,0xfffd,fr8
200         cmcpxis         fr7,fr8,acc0,cc5,0
201         test_accg_immed 0x00,accg0
202         test_acc_immed  26,acc0
203
204         set_fr_iimmed   0xffff,0xffff,fr7               ; multiply by -1
205         set_fr_iimmed   0xffff,0xfffe,fr8
206         cmcpxis         fr7,fr8,acc0,cc5,0
207         test_accg_immed         0,accg0
208         test_acc_immed  3,acc0
209
210         set_fr_iimmed   0x7fff,0x0000,fr7       ; almost max positive result
211         set_fr_iimmed   0x8001,0x7fff,fr8
212         cmcpxis         fr7,fr8,acc0,cc5,0
213         test_accg_immed         0,accg0
214         test_acc_immed  0x3fff0001,acc0
215
216         set_fr_iimmed   0x8000,0x0000,fr7       ; max positive result
217         set_fr_iimmed   0x8000,0x8000,fr8
218         cmcpxis         fr7,fr8,acc0,cc5,0
219         test_accg_immed         0,accg0
220         test_acc_immed  0x40000000,acc0
221
222         ; Positive operands
223         set_accg_immed  0x00000011,accg0
224         set_acc_immed   0x11111111,acc0
225         set_fr_iimmed   2,4,fr7         ; multiply small numbers
226         set_fr_iimmed   5,3,fr8
227         cmcpxis         fr7,fr8,acc0,cc0,0
228         test_accg_immed         0x00000011,accg0
229         test_acc_immed  0x11111111,acc0
230
231         set_fr_iimmed   3,1,fr7         ; multiply by 0
232         set_fr_iimmed   0,2,fr8
233         cmcpxis         fr7,fr8,acc0,cc0,0
234         test_accg_immed         0x00000011,accg0
235         test_acc_immed  0x11111111,acc0
236
237         set_fr_iimmed   2,1,fr7         ; multiply by 1
238         set_fr_iimmed   1,1,fr8
239         cmcpxis         fr7,fr8,acc0,cc0,0
240         test_accg_immed         0x00000011,accg0
241         test_acc_immed  0x11111111,acc0
242
243         set_fr_iimmed   0x3fff,2,fr7    ; 15 bit result
244         set_fr_iimmed   0x0007,2,fr8
245         cmcpxis         fr7,fr8,acc0,cc0,0
246         test_accg_immed         0x00000011,accg0
247         test_acc_immed  0x11111111,acc0
248
249         set_fr_iimmed   0x4000,2,fr7    ; 16 bit result
250         set_fr_iimmed   0x2000,2,fr8
251         cmcpxis         fr7,fr8,acc0,cc0,0
252         test_accg_immed         0x00000011,accg0
253         test_acc_immed  0x11111111,acc0
254
255         set_fr_iimmed   0x7fff,0x0000,fr7       ; max positive result
256         set_fr_iimmed   0x7fff,0x7fff,fr8
257         cmcpxis         fr7,fr8,acc0,cc0,0
258         test_accg_immed         0x00000011,accg0
259         test_acc_immed  0x11111111,acc0
260
261         ; Mixed operands
262         set_fr_iimmed   2,0xfffd,fr7            ; multiply small numbers
263         set_fr_iimmed   1,0xfffd,fr8
264         cmcpxis         fr7,fr8,acc0,cc0,0
265         test_accg_immed         0x00000011,accg0
266         test_acc_immed  0x11111111,acc0
267
268         set_fr_iimmed   0xfffe,2,fr7            ; multiply by 1
269         set_fr_iimmed   0xfffe,1,fr8
270         cmcpxis         fr7,fr8,acc0,cc0,0
271         test_accg_immed         0x00000011,accg0
272         test_acc_immed  0x11111111,acc0
273
274         set_fr_iimmed   0xfffe,0,fr7            ; multiply by 0
275         set_fr_iimmed   0xfffe,1,fr8
276         cmcpxis         fr7,fr8,acc0,cc4,0
277         test_accg_immed         0x00000011,accg0
278         test_acc_immed  0x11111111,acc0
279
280         set_fr_iimmed   0x2001,0xfffe,fr7       ; 15 bit result
281         set_fr_iimmed   0xfff9,0xfffe,fr8
282         cmcpxis         fr7,fr8,acc0,cc4,0
283         test_accg_immed         0x00000011,accg0
284         test_acc_immed  0x11111111,acc0
285
286         set_fr_iimmed   0x4000,0xfffe,fr7       ; 16 bit result
287         set_fr_iimmed   0x0003,0xfffe,fr8
288         cmcpxis         fr7,fr8,acc0,cc4,0
289         test_accg_immed         0x00000011,accg0
290         test_acc_immed  0x11111111,acc0
291
292         set_fr_iimmed   0x7fff,0x8000,fr7       ; max negative result
293         set_fr_iimmed   0x8000,0x8000,fr8
294         cmcpxis         fr7,fr8,acc0,cc4,0
295         test_accg_immed         0x00000011,accg0
296         test_acc_immed  0x11111111,acc0
297
298         set_fr_iimmed   0x8000,0x7fff,fr7       ; max positive result
299         set_fr_iimmed   0x8000,0x8000,fr8
300         cmcpxis         fr7,fr8,acc0,cc4,0
301         test_accg_immed         0x00000011,accg0
302         test_acc_immed  0x11111111,acc0
303
304         ; Negative operands
305         set_fr_iimmed   0xfffe,0xfffc,fr7               ; multiply small numbers
306         set_fr_iimmed   0xfffb,0xfffd,fr8
307         cmcpxis         fr7,fr8,acc0,cc4,0
308         test_accg_immed         0x00000011,accg0
309         test_acc_immed  0x11111111,acc0
310
311         set_fr_iimmed   0xffff,0xffff,fr7               ; multiply by -1
312         set_fr_iimmed   0xffff,0xfffe,fr8
313         cmcpxis         fr7,fr8,acc0,cc4,0
314         test_accg_immed         0x00000011,accg0
315         test_acc_immed  0x11111111,acc0
316
317         set_fr_iimmed   0x7fff,0x0000,fr7       ; almost max positive result
318         set_fr_iimmed   0x8001,0x7fff,fr8
319         cmcpxis         fr7,fr8,acc0,cc4,0
320         test_accg_immed         0x00000011,accg0
321         test_acc_immed  0x11111111,acc0
322
323         set_fr_iimmed   0x8000,0x0000,fr7       ; max positive result
324         set_fr_iimmed   0x8000,0x8000,fr8
325         cmcpxis         fr7,fr8,acc0,cc4,0
326         test_accg_immed         0x00000011,accg0
327         test_acc_immed  0x11111111,acc0
328
329         ; Positive operands
330         set_accg_immed  0x00000011,accg0
331         set_acc_immed   0x11111111,acc0
332         set_fr_iimmed   2,4,fr7         ; multiply small numbers
333         set_fr_iimmed   5,3,fr8
334         cmcpxis         fr7,fr8,acc0,cc1,1
335         test_accg_immed         0x00000011,accg0
336         test_acc_immed  0x11111111,acc0
337
338         set_fr_iimmed   3,1,fr7         ; multiply by 0
339         set_fr_iimmed   0,2,fr8
340         cmcpxis         fr7,fr8,acc0,cc1,1
341         test_accg_immed         0x00000011,accg0
342         test_acc_immed  0x11111111,acc0
343
344         set_fr_iimmed   2,1,fr7         ; multiply by 1
345         set_fr_iimmed   1,1,fr8
346         cmcpxis         fr7,fr8,acc0,cc1,1
347         test_accg_immed         0x00000011,accg0
348         test_acc_immed  0x11111111,acc0
349
350         set_fr_iimmed   0x3fff,2,fr7    ; 15 bit result
351         set_fr_iimmed   0x0007,2,fr8
352         cmcpxis         fr7,fr8,acc0,cc1,1
353         test_accg_immed         0x00000011,accg0
354         test_acc_immed  0x11111111,acc0
355
356         set_fr_iimmed   0x4000,2,fr7    ; 16 bit result
357         set_fr_iimmed   0x2000,2,fr8
358         cmcpxis         fr7,fr8,acc0,cc1,1
359         test_accg_immed         0x00000011,accg0
360         test_acc_immed  0x11111111,acc0
361
362         set_fr_iimmed   0x7fff,0x0000,fr7       ; max positive result
363         set_fr_iimmed   0x7fff,0x7fff,fr8
364         cmcpxis         fr7,fr8,acc0,cc1,1
365         test_accg_immed         0x00000011,accg0
366         test_acc_immed  0x11111111,acc0
367
368         ; Mixed operands
369         set_fr_iimmed   2,0xfffd,fr7            ; multiply small numbers
370         set_fr_iimmed   1,0xfffd,fr8
371         cmcpxis         fr7,fr8,acc0,cc1,1
372         test_accg_immed         0x00000011,accg0
373         test_acc_immed  0x11111111,acc0
374
375         set_fr_iimmed   0xfffe,2,fr7            ; multiply by 1
376         set_fr_iimmed   0xfffe,1,fr8
377         cmcpxis         fr7,fr8,acc0,cc1,1
378         test_accg_immed         0x00000011,accg0
379         test_acc_immed  0x11111111,acc0
380
381         set_fr_iimmed   0xfffe,0,fr7            ; multiply by 0
382         set_fr_iimmed   0xfffe,1,fr8
383         cmcpxis         fr7,fr8,acc0,cc5,1
384         test_accg_immed         0x00000011,accg0
385         test_acc_immed  0x11111111,acc0
386
387         set_fr_iimmed   0x2001,0xfffe,fr7       ; 15 bit result
388         set_fr_iimmed   0xfff9,0xfffe,fr8
389         cmcpxis         fr7,fr8,acc0,cc5,1
390         test_accg_immed         0x00000011,accg0
391         test_acc_immed  0x11111111,acc0
392
393         set_fr_iimmed   0x4000,0xfffe,fr7       ; 16 bit result
394         set_fr_iimmed   0x0003,0xfffe,fr8
395         cmcpxis         fr7,fr8,acc0,cc5,1
396         test_accg_immed         0x00000011,accg0
397         test_acc_immed  0x11111111,acc0
398
399         set_fr_iimmed   0x7fff,0x8000,fr7       ; max negative result
400         set_fr_iimmed   0x8000,0x8000,fr8
401         cmcpxis         fr7,fr8,acc0,cc5,1
402         test_accg_immed         0x00000011,accg0
403         test_acc_immed  0x11111111,acc0
404
405         set_fr_iimmed   0x8000,0x7fff,fr7       ; max positive result
406         set_fr_iimmed   0x8000,0x8000,fr8
407         cmcpxis         fr7,fr8,acc0,cc5,1
408         test_accg_immed         0x00000011,accg0
409         test_acc_immed  0x11111111,acc0
410
411         ; Negative operands
412         set_fr_iimmed   0xfffe,0xfffc,fr7               ; multiply small numbers
413         set_fr_iimmed   0xfffb,0xfffd,fr8
414         cmcpxis         fr7,fr8,acc0,cc5,1
415         test_accg_immed         0x00000011,accg0
416         test_acc_immed  0x11111111,acc0
417
418         set_fr_iimmed   0xffff,0xffff,fr7               ; multiply by -1
419         set_fr_iimmed   0xffff,0xfffe,fr8
420         cmcpxis         fr7,fr8,acc0,cc5,1
421         test_accg_immed         0x00000011,accg0
422         test_acc_immed  0x11111111,acc0
423
424         set_fr_iimmed   0x7fff,0x0000,fr7       ; almost max positive result
425         set_fr_iimmed   0x8001,0x7fff,fr8
426         cmcpxis         fr7,fr8,acc0,cc5,1
427         test_accg_immed         0x00000011,accg0
428         test_acc_immed  0x11111111,acc0
429
430         set_fr_iimmed   0x8000,0x0000,fr7       ; max positive result
431         set_fr_iimmed   0x8000,0x8000,fr8
432         cmcpxis         fr7,fr8,acc0,cc5,1
433         test_accg_immed         0x00000011,accg0
434         test_acc_immed  0x11111111,acc0
435
436         ; Positive operands
437         set_accg_immed  0x00000011,accg0
438         set_acc_immed   0x11111111,acc0
439         set_fr_iimmed   2,4,fr7         ; multiply small numbers
440         set_fr_iimmed   5,3,fr8
441         cmcpxis         fr7,fr8,acc0,cc2,1
442         test_accg_immed         0x00000011,accg0
443         test_acc_immed  0x11111111,acc0
444
445         set_fr_iimmed   3,1,fr7         ; multiply by 0
446         set_fr_iimmed   0,2,fr8
447         cmcpxis         fr7,fr8,acc0,cc2,1
448         test_accg_immed         0x00000011,accg0
449         test_acc_immed  0x11111111,acc0
450
451         set_fr_iimmed   2,1,fr7         ; multiply by 1
452         set_fr_iimmed   1,1,fr8
453         cmcpxis         fr7,fr8,acc0,cc2,1
454         test_accg_immed         0x00000011,accg0
455         test_acc_immed  0x11111111,acc0
456
457         set_fr_iimmed   0x3fff,2,fr7    ; 15 bit result
458         set_fr_iimmed   0x0007,2,fr8
459         cmcpxis         fr7,fr8,acc0,cc2,1
460         test_accg_immed         0x00000011,accg0
461         test_acc_immed  0x11111111,acc0
462
463         set_fr_iimmed   0x4000,2,fr7    ; 16 bit result
464         set_fr_iimmed   0x2000,2,fr8
465         cmcpxis         fr7,fr8,acc0,cc2,1
466         test_accg_immed         0x00000011,accg0
467         test_acc_immed  0x11111111,acc0
468
469         set_fr_iimmed   0x7fff,0x0000,fr7       ; max positive result
470         set_fr_iimmed   0x7fff,0x7fff,fr8
471         cmcpxis         fr7,fr8,acc0,cc2,1
472         test_accg_immed         0x00000011,accg0
473         test_acc_immed  0x11111111,acc0
474
475         ; Mixed operands
476         set_fr_iimmed   2,0xfffd,fr7            ; multiply small numbers
477         set_fr_iimmed   1,0xfffd,fr8
478         cmcpxis         fr7,fr8,acc0,cc2,1
479         test_accg_immed         0x00000011,accg0
480         test_acc_immed  0x11111111,acc0
481
482         set_fr_iimmed   0xfffe,2,fr7            ; multiply by 1
483         set_fr_iimmed   0xfffe,1,fr8
484         cmcpxis         fr7,fr8,acc0,cc2,1
485         test_accg_immed         0x00000011,accg0
486         test_acc_immed  0x11111111,acc0
487
488         set_fr_iimmed   0xfffe,0,fr7            ; multiply by 0
489         set_fr_iimmed   0xfffe,1,fr8
490         cmcpxis         fr7,fr8,acc0,cc6,1
491         test_accg_immed         0x00000011,accg0
492         test_acc_immed  0x11111111,acc0
493
494         set_fr_iimmed   0x2001,0xfffe,fr7       ; 15 bit result
495         set_fr_iimmed   0xfff9,0xfffe,fr8
496         cmcpxis         fr7,fr8,acc0,cc6,1
497         test_accg_immed         0x00000011,accg0
498         test_acc_immed  0x11111111,acc0
499
500         set_fr_iimmed   0x4000,0xfffe,fr7       ; 16 bit result
501         set_fr_iimmed   0x0003,0xfffe,fr8
502         cmcpxis         fr7,fr8,acc0,cc6,1
503         test_accg_immed         0x00000011,accg0
504         test_acc_immed  0x11111111,acc0
505
506         set_fr_iimmed   0x7fff,0x8000,fr7       ; max negative result
507         set_fr_iimmed   0x8000,0x8000,fr8
508         cmcpxis         fr7,fr8,acc0,cc6,1
509         test_accg_immed         0x00000011,accg0
510         test_acc_immed  0x11111111,acc0
511
512         set_fr_iimmed   0x8000,0x7fff,fr7       ; max positive result
513         set_fr_iimmed   0x8000,0x8000,fr8
514         cmcpxis         fr7,fr8,acc0,cc6,1
515         test_accg_immed         0x00000011,accg0
516         test_acc_immed  0x11111111,acc0
517
518         ; Negative operands
519         set_fr_iimmed   0xfffe,0xfffc,fr7               ; multiply small numbers
520         set_fr_iimmed   0xfffb,0xfffd,fr8
521         cmcpxis         fr7,fr8,acc0,cc6,1
522         test_accg_immed         0x00000011,accg0
523         test_acc_immed  0x11111111,acc0
524
525         set_fr_iimmed   0xffff,0xffff,fr7               ; multiply by -1
526         set_fr_iimmed   0xffff,0xfffe,fr8
527         cmcpxis         fr7,fr8,acc0,cc6,1
528         test_accg_immed         0x00000011,accg0
529         test_acc_immed  0x11111111,acc0
530
531         set_fr_iimmed   0x7fff,0x0000,fr7       ; almost max positive result
532         set_fr_iimmed   0x8001,0x7fff,fr8
533         cmcpxis         fr7,fr8,acc0,cc6,1
534         test_accg_immed         0x00000011,accg0
535         test_acc_immed  0x11111111,acc0
536
537         set_fr_iimmed   0x8000,0x0000,fr7       ; max positive result
538         set_fr_iimmed   0x8000,0x8000,fr8
539         cmcpxis         fr7,fr8,acc0,cc6,1
540         test_accg_immed         0x00000011,accg0
541         test_acc_immed  0x11111111,acc0
542
543         ; Positive operands
544         set_accg_immed  0x00000011,accg0
545         set_acc_immed   0x11111111,acc0
546         set_fr_iimmed   2,4,fr7         ; multiply small numbers
547         set_fr_iimmed   5,3,fr8
548         cmcpxis         fr7,fr8,acc0,cc2,1
549         test_accg_immed         0x00000011,accg0
550         test_acc_immed  0x11111111,acc0
551
552         set_fr_iimmed   3,1,fr7         ; multiply by 0
553         set_fr_iimmed   0,2,fr8
554         cmcpxis         fr7,fr8,acc0,cc2,0
555         test_accg_immed         0x00000011,accg0
556         test_acc_immed  0x11111111,acc0
557
558         set_fr_iimmed   2,1,fr7         ; multiply by 1
559         set_fr_iimmed   1,1,fr8
560         cmcpxis         fr7,fr8,acc0,cc2,1
561         test_accg_immed         0x00000011,accg0
562         test_acc_immed  0x11111111,acc0
563
564         set_fr_iimmed   0x3fff,2,fr7    ; 15 bit result
565         set_fr_iimmed   0x0007,2,fr8
566         cmcpxis         fr7,fr8,acc0,cc2,0
567         test_accg_immed         0x00000011,accg0
568         test_acc_immed  0x11111111,acc0
569
570         set_fr_iimmed   0x4000,2,fr7    ; 16 bit result
571         set_fr_iimmed   0x2000,2,fr8
572         cmcpxis         fr7,fr8,acc0,cc2,1
573         test_accg_immed         0x00000011,accg0
574         test_acc_immed  0x11111111,acc0
575
576         set_fr_iimmed   0x7fff,0x0000,fr7       ; max positive result
577         set_fr_iimmed   0x7fff,0x7fff,fr8
578         cmcpxis         fr7,fr8,acc0,cc2,0
579         test_accg_immed         0x00000011,accg0
580         test_acc_immed  0x11111111,acc0
581
582         ; Mixed operands
583         set_fr_iimmed   2,0xfffd,fr7            ; multiply small numbers
584         set_fr_iimmed   1,0xfffd,fr8
585         cmcpxis         fr7,fr8,acc0,cc2,1
586         test_accg_immed         0x00000011,accg0
587         test_acc_immed  0x11111111,acc0
588
589         set_fr_iimmed   0xfffe,2,fr7            ; multiply by 1
590         set_fr_iimmed   0xfffe,1,fr8
591         cmcpxis         fr7,fr8,acc0,cc2,0
592         test_accg_immed         0x00000011,accg0
593         test_acc_immed  0x11111111,acc0
594
595         set_fr_iimmed   0xfffe,0,fr7            ; multiply by 0
596         set_fr_iimmed   0xfffe,1,fr8
597         cmcpxis         fr7,fr8,acc0,cc6,1
598         test_accg_immed         0x00000011,accg0
599         test_acc_immed  0x11111111,acc0
600
601         set_fr_iimmed   0x2001,0xfffe,fr7       ; 15 bit result
602         set_fr_iimmed   0xfff9,0xfffe,fr8
603         cmcpxis         fr7,fr8,acc0,cc6,0
604         test_accg_immed         0x00000011,accg0
605         test_acc_immed  0x11111111,acc0
606
607         set_fr_iimmed   0x4000,0xfffe,fr7       ; 16 bit result
608         set_fr_iimmed   0x0003,0xfffe,fr8
609         cmcpxis         fr7,fr8,acc0,cc6,1
610         test_accg_immed         0x00000011,accg0
611         test_acc_immed  0x11111111,acc0
612
613         set_fr_iimmed   0x7fff,0x8000,fr7       ; max negative result
614         set_fr_iimmed   0x8000,0x8000,fr8
615         cmcpxis         fr7,fr8,acc0,cc6,0
616         test_accg_immed         0x00000011,accg0
617         test_acc_immed  0x11111111,acc0
618
619         set_fr_iimmed   0x8000,0x7fff,fr7       ; max positive result
620         set_fr_iimmed   0x8000,0x8000,fr8
621         cmcpxis         fr7,fr8,acc0,cc6,1
622         test_accg_immed         0x00000011,accg0
623         test_acc_immed  0x11111111,acc0
624
625         ; Negative operands
626         set_fr_iimmed   0xfffe,0xfffc,fr7               ; multiply small numbers
627         set_fr_iimmed   0xfffb,0xfffd,fr8
628         cmcpxis         fr7,fr8,acc0,cc6,0
629         test_accg_immed         0x00000011,accg0
630         test_acc_immed  0x11111111,acc0
631
632         set_fr_iimmed   0xffff,0xffff,fr7               ; multiply by -1
633         set_fr_iimmed   0xffff,0xfffe,fr8
634         cmcpxis         fr7,fr8,acc0,cc6,1
635         test_accg_immed         0x00000011,accg0
636         test_acc_immed  0x11111111,acc0
637
638         set_fr_iimmed   0x7fff,0x0000,fr7       ; almost max positive result
639         set_fr_iimmed   0x8001,0x7fff,fr8
640         cmcpxis         fr7,fr8,acc0,cc6,0
641         test_accg_immed         0x00000011,accg0
642         test_acc_immed  0x11111111,acc0
643
644         set_fr_iimmed   0x8000,0x0000,fr7       ; max positive result
645         set_fr_iimmed   0x8000,0x8000,fr8
646         cmcpxis         fr7,fr8,acc0,cc6,1
647         test_accg_immed         0x00000011,accg0
648         test_acc_immed  0x11111111,acc0
649
650         ; Positive operands
651         set_accg_immed  0x00000011,accg0
652         set_acc_immed   0x11111111,acc0
653         set_fr_iimmed   2,4,fr7         ; multiply small numbers
654         set_fr_iimmed   5,3,fr8
655         cmcpxis         fr7,fr8,acc0,cc2,0
656         test_accg_immed         0x00000011,accg0
657         test_acc_immed  0x11111111,acc0
658
659         set_fr_iimmed   3,1,fr7         ; multiply by 0
660         set_fr_iimmed   0,2,fr8
661         cmcpxis         fr7,fr8,acc0,cc2,1
662         test_accg_immed         0x00000011,accg0
663         test_acc_immed  0x11111111,acc0
664
665         set_fr_iimmed   2,1,fr7         ; multiply by 1
666         set_fr_iimmed   1,1,fr8
667         cmcpxis         fr7,fr8,acc0,cc2,0
668         test_accg_immed         0x00000011,accg0
669         test_acc_immed  0x11111111,acc0
670
671         set_fr_iimmed   0x3fff,2,fr7    ; 15 bit result
672         set_fr_iimmed   0x0007,2,fr8
673         cmcpxis         fr7,fr8,acc0,cc2,1
674         test_accg_immed         0x00000011,accg0
675         test_acc_immed  0x11111111,acc0
676
677         set_fr_iimmed   0x4000,2,fr7    ; 16 bit result
678         set_fr_iimmed   0x2000,2,fr8
679         cmcpxis         fr7,fr8,acc0,cc2,0
680         test_accg_immed         0x00000011,accg0
681         test_acc_immed  0x11111111,acc0
682
683         set_fr_iimmed   0x7fff,0x0000,fr7       ; max positive result
684         set_fr_iimmed   0x7fff,0x7fff,fr8
685         cmcpxis         fr7,fr8,acc0,cc2,1
686         test_accg_immed         0x00000011,accg0
687         test_acc_immed  0x11111111,acc0
688
689         ; Mixed operands
690         set_fr_iimmed   2,0xfffd,fr7            ; multiply small numbers
691         set_fr_iimmed   1,0xfffd,fr8
692         cmcpxis         fr7,fr8,acc0,cc2,0
693         test_accg_immed         0x00000011,accg0
694         test_acc_immed  0x11111111,acc0
695
696         set_fr_iimmed   0xfffe,2,fr7            ; multiply by 1
697         set_fr_iimmed   0xfffe,1,fr8
698         cmcpxis         fr7,fr8,acc0,cc2,1
699         test_accg_immed         0x00000011,accg0
700         test_acc_immed  0x11111111,acc0
701
702         set_fr_iimmed   0xfffe,0,fr7            ; multiply by 0
703         set_fr_iimmed   0xfffe,1,fr8
704         cmcpxis         fr7,fr8,acc0,cc6,0
705         test_accg_immed         0x00000011,accg0
706         test_acc_immed  0x11111111,acc0
707
708         set_fr_iimmed   0x2001,0xfffe,fr7       ; 15 bit result
709         set_fr_iimmed   0xfff9,0xfffe,fr8
710         cmcpxis         fr7,fr8,acc0,cc6,1
711         test_accg_immed         0x00000011,accg0
712         test_acc_immed  0x11111111,acc0
713
714         set_fr_iimmed   0x4000,0xfffe,fr7       ; 16 bit result
715         set_fr_iimmed   0x0003,0xfffe,fr8
716         cmcpxis         fr7,fr8,acc0,cc6,0
717         test_accg_immed         0x00000011,accg0
718         test_acc_immed  0x11111111,acc0
719
720         set_fr_iimmed   0x7fff,0x8000,fr7       ; max negative result
721         set_fr_iimmed   0x8000,0x8000,fr8
722         cmcpxis         fr7,fr8,acc0,cc6,1
723         test_accg_immed         0x00000011,accg0
724         test_acc_immed  0x11111111,acc0
725
726         set_fr_iimmed   0x8000,0x7fff,fr7       ; max positive result
727         set_fr_iimmed   0x8000,0x8000,fr8
728         cmcpxis         fr7,fr8,acc0,cc6,0
729         test_accg_immed         0x00000011,accg0
730         test_acc_immed  0x11111111,acc0
731
732         ; Negative operands
733         set_fr_iimmed   0xfffe,0xfffc,fr7               ; multiply small numbers
734         set_fr_iimmed   0xfffb,0xfffd,fr8
735         cmcpxis         fr7,fr8,acc0,cc6,1
736         test_accg_immed         0x00000011,accg0
737         test_acc_immed  0x11111111,acc0
738
739         set_fr_iimmed   0xffff,0xffff,fr7               ; multiply by -1
740         set_fr_iimmed   0xffff,0xfffe,fr8
741         cmcpxis         fr7,fr8,acc0,cc6,0
742         test_accg_immed         0x00000011,accg0
743         test_acc_immed  0x11111111,acc0
744
745         set_fr_iimmed   0x7fff,0x0000,fr7       ; almost max positive result
746         set_fr_iimmed   0x8001,0x7fff,fr8
747         cmcpxis         fr7,fr8,acc0,cc6,0
748         test_accg_immed         0x00000011,accg0
749         test_acc_immed  0x11111111,acc0
750
751         set_fr_iimmed   0x8000,0x0000,fr7       ; max positive result
752         set_fr_iimmed   0x8000,0x8000,fr8
753         cmcpxis         fr7,fr8,acc0,cc6,1
754         test_accg_immed         0x00000011,accg0
755         test_acc_immed  0x11111111,acc0
756 ;
757         ; Positive operands
758         set_accg_immed  0x00000011,accg0
759         set_acc_immed   0x11111111,acc0
760         set_fr_iimmed   2,4,fr7         ; multiply small numbers
761         set_fr_iimmed   5,3,fr8
762         cmcpxis         fr7,fr8,acc0,cc3,1
763         test_accg_immed         0x00000011,accg0
764         test_acc_immed  0x11111111,acc0
765
766         set_fr_iimmed   3,1,fr7         ; multiply by 0
767         set_fr_iimmed   0,2,fr8
768         cmcpxis         fr7,fr8,acc0,cc3,0
769         test_accg_immed         0x00000011,accg0
770         test_acc_immed  0x11111111,acc0
771
772         set_fr_iimmed   2,1,fr7         ; multiply by 1
773         set_fr_iimmed   1,1,fr8
774         cmcpxis         fr7,fr8,acc0,cc3,1
775         test_accg_immed         0x00000011,accg0
776         test_acc_immed  0x11111111,acc0
777
778         set_fr_iimmed   0x3fff,2,fr7    ; 15 bit result
779         set_fr_iimmed   0x0007,2,fr8
780         cmcpxis         fr7,fr8,acc0,cc3,0
781         test_accg_immed         0x00000011,accg0
782         test_acc_immed  0x11111111,acc0
783
784         set_fr_iimmed   0x4000,2,fr7    ; 16 bit result
785         set_fr_iimmed   0x2000,2,fr8
786         cmcpxis         fr7,fr8,acc0,cc3,1
787         test_accg_immed         0x00000011,accg0
788         test_acc_immed  0x11111111,acc0
789
790         set_fr_iimmed   0x7fff,0x0000,fr7       ; max positive result
791         set_fr_iimmed   0x7fff,0x7fff,fr8
792         cmcpxis         fr7,fr8,acc0,cc3,0
793         test_accg_immed         0x00000011,accg0
794         test_acc_immed  0x11111111,acc0
795
796         ; Mixed operands
797         set_fr_iimmed   2,0xfffd,fr7            ; multiply small numbers
798         set_fr_iimmed   1,0xfffd,fr8
799         cmcpxis         fr7,fr8,acc0,cc3,1
800         test_accg_immed         0x00000011,accg0
801         test_acc_immed  0x11111111,acc0
802
803         set_fr_iimmed   0xfffe,2,fr7            ; multiply by 1
804         set_fr_iimmed   0xfffe,1,fr8
805         cmcpxis         fr7,fr8,acc0,cc3,0
806         test_accg_immed         0x00000011,accg0
807         test_acc_immed  0x11111111,acc0
808
809         set_fr_iimmed   0xfffe,0,fr7            ; multiply by 0
810         set_fr_iimmed   0xfffe,1,fr8
811         cmcpxis         fr7,fr8,acc0,cc6,1
812         test_accg_immed         0x00000011,accg0
813         test_acc_immed  0x11111111,acc0
814
815         set_fr_iimmed   0x2001,0xfffe,fr7       ; 15 bit result
816         set_fr_iimmed   0xfff9,0xfffe,fr8
817         cmcpxis         fr7,fr8,acc0,cc6,0
818         test_accg_immed         0x00000011,accg0
819         test_acc_immed  0x11111111,acc0
820
821         set_fr_iimmed   0x4000,0xfffe,fr7       ; 16 bit result
822         set_fr_iimmed   0x0003,0xfffe,fr8
823         cmcpxis         fr7,fr8,acc0,cc6,1
824         test_accg_immed         0x00000011,accg0
825         test_acc_immed  0x11111111,acc0
826
827         set_fr_iimmed   0x7fff,0x8000,fr7       ; max negative result
828         set_fr_iimmed   0x8000,0x8000,fr8
829         cmcpxis         fr7,fr8,acc0,cc6,0
830         test_accg_immed         0x00000011,accg0
831         test_acc_immed  0x11111111,acc0
832
833         set_fr_iimmed   0x8000,0x7fff,fr7       ; max positive result
834         set_fr_iimmed   0x8000,0x8000,fr8
835         cmcpxis         fr7,fr8,acc0,cc6,1
836         test_accg_immed         0x00000011,accg0
837         test_acc_immed  0x11111111,acc0
838
839         ; Negative operands
840         set_fr_iimmed   0xfffe,0xfffc,fr7               ; multiply small numbers
841         set_fr_iimmed   0xfffb,0xfffd,fr8
842         cmcpxis         fr7,fr8,acc0,cc6,0
843         test_accg_immed         0x00000011,accg0
844         test_acc_immed  0x11111111,acc0
845
846         set_fr_iimmed   0xffff,0xffff,fr7               ; multiply by -1
847         set_fr_iimmed   0xffff,0xfffe,fr8
848         cmcpxis         fr7,fr8,acc0,cc6,1
849         test_accg_immed         0x00000011,accg0
850         test_acc_immed  0x11111111,acc0
851
852         set_fr_iimmed   0x7fff,0x0000,fr7       ; almost max positive result
853         set_fr_iimmed   0x8001,0x7fff,fr8
854         cmcpxis         fr7,fr8,acc0,cc6,0
855         test_accg_immed         0x00000011,accg0
856         test_acc_immed  0x11111111,acc0
857
858         set_fr_iimmed   0x8000,0x0000,fr7       ; max positive result
859         set_fr_iimmed   0x8000,0x8000,fr8
860         cmcpxis         fr7,fr8,acc0,cc6,1
861         test_accg_immed         0x00000011,accg0
862         test_acc_immed  0x11111111,acc0
863
864         ; Positive operands
865         set_accg_immed  0x00000011,accg0
866         set_acc_immed   0x11111111,acc0
867         set_fr_iimmed   2,4,fr7         ; multiply small numbers
868         set_fr_iimmed   5,3,fr8
869         cmcpxis         fr7,fr8,acc0,cc3,0
870         test_accg_immed         0x00000011,accg0
871         test_acc_immed  0x11111111,acc0
872
873         set_fr_iimmed   3,1,fr7         ; multiply by 0
874         set_fr_iimmed   0,2,fr8
875         cmcpxis         fr7,fr8,acc0,cc3,1
876         test_accg_immed         0x00000011,accg0
877         test_acc_immed  0x11111111,acc0
878
879         set_fr_iimmed   2,1,fr7         ; multiply by 1
880         set_fr_iimmed   1,1,fr8
881         cmcpxis         fr7,fr8,acc0,cc3,0
882         test_accg_immed         0x00000011,accg0
883         test_acc_immed  0x11111111,acc0
884
885         set_fr_iimmed   0x3fff,2,fr7    ; 15 bit result
886         set_fr_iimmed   0x0007,2,fr8
887         cmcpxis         fr7,fr8,acc0,cc3,1
888         test_accg_immed         0x00000011,accg0
889         test_acc_immed  0x11111111,acc0
890
891         set_fr_iimmed   0x4000,2,fr7    ; 16 bit result
892         set_fr_iimmed   0x2000,2,fr8
893         cmcpxis         fr7,fr8,acc0,cc3,0
894         test_accg_immed         0x00000011,accg0
895         test_acc_immed  0x11111111,acc0
896
897         set_fr_iimmed   0x7fff,0x0000,fr7       ; max positive result
898         set_fr_iimmed   0x7fff,0x7fff,fr8
899         cmcpxis         fr7,fr8,acc0,cc3,1
900         test_accg_immed         0x00000011,accg0
901         test_acc_immed  0x11111111,acc0
902
903         ; Mixed operands
904         set_fr_iimmed   2,0xfffd,fr7            ; multiply small numbers
905         set_fr_iimmed   1,0xfffd,fr8
906         cmcpxis         fr7,fr8,acc0,cc3,0
907         test_accg_immed         0x00000011,accg0
908         test_acc_immed  0x11111111,acc0
909
910         set_fr_iimmed   0xfffe,2,fr7            ; multiply by 1
911         set_fr_iimmed   0xfffe,1,fr8
912         cmcpxis         fr7,fr8,acc0,cc3,1
913         test_accg_immed         0x00000011,accg0
914         test_acc_immed  0x11111111,acc0
915
916         set_fr_iimmed   0xfffe,0,fr7            ; multiply by 0
917         set_fr_iimmed   0xfffe,1,fr8
918         cmcpxis         fr7,fr8,acc0,cc7,0
919         test_accg_immed         0x00000011,accg0
920         test_acc_immed  0x11111111,acc0
921
922         set_fr_iimmed   0x2001,0xfffe,fr7       ; 15 bit result
923         set_fr_iimmed   0xfff9,0xfffe,fr8
924         cmcpxis         fr7,fr8,acc0,cc7,1
925         test_accg_immed         0x00000011,accg0
926         test_acc_immed  0x11111111,acc0
927
928         set_fr_iimmed   0x4000,0xfffe,fr7       ; 16 bit result
929         set_fr_iimmed   0x0003,0xfffe,fr8
930         cmcpxis         fr7,fr8,acc0,cc7,0
931         test_accg_immed         0x00000011,accg0
932         test_acc_immed  0x11111111,acc0
933
934         set_fr_iimmed   0x7fff,0x8000,fr7       ; max negative result
935         set_fr_iimmed   0x8000,0x8000,fr8
936         cmcpxis         fr7,fr8,acc0,cc7,1
937         test_accg_immed         0x00000011,accg0
938         test_acc_immed  0x11111111,acc0
939
940         set_fr_iimmed   0x8000,0x7fff,fr7       ; max positive result
941         set_fr_iimmed   0x8000,0x8000,fr8
942         cmcpxis         fr7,fr8,acc0,cc7,0
943         test_accg_immed         0x00000011,accg0
944         test_acc_immed  0x11111111,acc0
945
946         ; Negative operands
947         set_fr_iimmed   0xfffe,0xfffc,fr7               ; multiply small numbers
948         set_fr_iimmed   0xfffb,0xfffd,fr8
949         cmcpxis         fr7,fr8,acc0,cc7,1
950         test_accg_immed         0x00000011,accg0
951         test_acc_immed  0x11111111,acc0
952
953         set_fr_iimmed   0xffff,0xffff,fr7               ; multiply by -1
954         set_fr_iimmed   0xffff,0xfffe,fr8
955         cmcpxis         fr7,fr8,acc0,cc7,0
956         test_accg_immed         0x00000011,accg0
957         test_acc_immed  0x11111111,acc0
958
959         set_fr_iimmed   0x7fff,0x0000,fr7       ; almost max positive result
960         set_fr_iimmed   0x8001,0x7fff,fr8
961         cmcpxis         fr7,fr8,acc0,cc7,0
962         test_accg_immed         0x00000011,accg0
963         test_acc_immed  0x11111111,acc0
964
965         set_fr_iimmed   0x8000,0x0000,fr7       ; max positive result
966         set_fr_iimmed   0x8000,0x8000,fr8
967         cmcpxis         fr7,fr8,acc0,cc7,1
968         test_accg_immed         0x00000011,accg0
969         test_acc_immed  0x11111111,acc0
970
971         pass