OSDN Git Service

modified: utilsrc/src/Admin/Makefile
[eos/others.git] / utilsrc / srcX86MAC64 / Admin / gdb-7.7.1 / sim / testsuite / sim / frv / fr550 / cmqmachs.cgs
1 # frv testcase for cmqmachs $GRi,$GRj,$ACCk,$CCi,$cond
2 # mach: all
3
4         .include "../testutils.inc"
5
6         start
7
8         .global cmqmachs
9 cmqmachs:
10         set_spr_immed   0x1b1b,cccr
11
12         ; Positive operands
13         set_spr_immed   0,msr0
14         set_accg_immed  0,accg0
15         set_acc_immed   0,acc0
16         set_accg_immed  0,accg1
17         set_acc_immed   0,acc1
18         set_accg_immed  0,accg2
19         set_acc_immed   0,acc2
20         set_accg_immed  0,accg3
21         set_acc_immed   0,acc3
22         set_fr_iimmed   2,3,fr8         ; multiply small numbers
23         set_fr_iimmed   3,2,fr10
24         set_fr_iimmed   0,1,fr9         ; multiply by 0
25         set_fr_iimmed   2,0,fr11
26         cmqmachs        fr8,fr10,acc0,cc0,1
27         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
28         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
29         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
30         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
31         test_accg_immed         0,accg0
32         test_acc_immed  6,acc0
33         test_accg_immed         0,accg1
34         test_acc_immed  6,acc1
35         test_accg_immed         0,accg2
36         test_acc_immed  0,acc2
37         test_accg_immed         0,accg3
38         test_acc_immed  0,acc3
39
40         set_fr_iimmed   2,1,fr8         ; multiply by 1
41         set_fr_iimmed   1,2,fr10
42         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
43         set_fr_iimmed   2,0x3fff,fr11
44         cmqmachs        fr8,fr10,acc0,cc0,1
45         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
46         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
47         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
48         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
49         test_accg_immed         0,accg0
50         test_acc_immed  8,acc0
51         test_accg_immed         0,accg1
52         test_acc_immed  8,acc1
53         test_accg_immed         0,accg2
54         test_acc_limmed 0,0x7ffe,acc2
55         test_accg_immed         0,accg3
56         test_acc_limmed 0,0x7ffe,acc3
57
58         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
59         set_fr_iimmed   2,0x4000,fr10
60         set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
61         set_fr_iimmed   0x7fff,0x7fff,fr11
62         cmqmachs        fr8,fr10,acc0,cc0,1
63         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
64         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
65         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
66         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
67         test_accg_immed         0,accg0
68         test_acc_limmed 0x0000,0x8008,acc0
69         test_accg_immed         0,accg1
70         test_acc_limmed 0x0000,0x8008,acc1
71         test_accg_immed         0,accg2
72         test_acc_limmed 0x3fff,0x7fff,acc2
73         test_accg_immed         0,accg3
74         test_acc_limmed 0x3fff,0x7fff,acc3
75
76         ; Mixed operands
77         set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
78         set_fr_iimmed   0xfffd,2,fr10
79         set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
80         set_fr_iimmed   1,0xfffe,fr11
81         cmqmachs        fr8,fr10,acc0,cc0,1
82         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
83         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
84         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
85         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
86         test_accg_immed         0,accg0
87         test_acc_limmed 0x0000,0x8002,acc0
88         test_accg_immed         0,accg1
89         test_acc_limmed 0x0000,0x8002,acc1
90         test_accg_immed         0,accg2
91         test_acc_limmed 0x3fff,0x7ffd,acc2
92         test_accg_immed         0,accg3
93         test_acc_limmed 0x3fff,0x7ffd,acc3
94
95         set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
96         set_fr_iimmed   0,0xfffe,fr10
97         set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
98         set_fr_iimmed   0xfffe,0x2001,fr11
99         cmqmachs        fr8,fr10,acc0,cc0,1
100         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
101         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
102         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
103         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
104         test_accg_immed         0,accg0
105         test_acc_limmed 0x0000,0x8002,acc0
106         test_accg_immed         0,accg1
107         test_acc_limmed 0x0000,0x8002,acc1
108         test_accg_immed         0,accg2
109         test_acc_limmed 0x3fff,0x3ffb,acc2
110         test_accg_immed         0,accg3
111         test_acc_limmed 0x3fff,0x3ffb,acc3
112
113         set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
114         set_fr_iimmed   0xfffe,0x4000,fr10
115         set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
116         set_fr_iimmed   0x8000,0x7fff,fr11
117         cmqmachs        fr8,fr10,acc0,cc4,1
118         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
119         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
120         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
121         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
122         test_accg_immed         0,accg0
123         test_acc_limmed 0x0000,0x0002,acc0
124         test_accg_immed         0,accg1
125         test_acc_limmed 0x0000,0x0002,acc1
126         test_accg_immed         0xff,accg2
127         test_acc_limmed 0xffff,0xbffb,acc2
128         test_accg_immed         0xff,accg3
129         test_acc_limmed 0xffff,0xbffb,acc3
130
131         ; Negative operands
132         set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
133         set_fr_iimmed   0xfffd,0xfffe,fr10
134         set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
135         set_fr_iimmed   0xfffe,0xffff,fr11
136         cmqmachs        fr8,fr10,acc0,cc4,1
137         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
138         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
139         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
140         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
141         test_accg_immed         0,accg0
142         test_acc_limmed 0x0000,0x0008,acc0
143         test_accg_immed         0,accg1
144         test_acc_limmed 0x0000,0x0008,acc1
145         test_accg_immed         0xff,accg2
146         test_acc_limmed 0xffff,0xbffd,acc2
147         test_accg_immed         0xff,accg3
148         test_acc_limmed 0xffff,0xbffd,acc3
149
150         set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
151         set_fr_iimmed   0x8001,0x8001,fr10
152         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
153         set_fr_iimmed   0x8000,0x8000,fr11
154         cmqmachs        fr8,fr10,acc0,cc4,1
155         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
156         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
157         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
158         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
159         test_accg_immed         0,accg0
160         test_acc_immed  0x3fff0009,acc0
161         test_accg_immed         0,accg1
162         test_acc_immed  0x3fff0009,acc1
163         test_accg_immed         0,accg2
164         test_acc_immed  0x3fffbffd,acc2
165         test_accg_immed         0,accg3
166         test_acc_immed  0x3fffbffd,acc3
167
168         set_accg_immed  0x7f,accg0              ; saturation
169         set_acc_immed   0xffffffff,acc0
170         set_accg_immed  0x7f,accg1
171         set_acc_immed   0xffffffff,acc1
172         set_accg_immed  0x7f,accg2              ; saturation
173         set_acc_immed   0xffffffff,acc2
174         set_accg_immed  0x7f,accg3
175         set_acc_immed   0xffffffff,acc3
176         set_fr_iimmed   1,1,fr8
177         set_fr_iimmed   1,1,fr10
178         set_fr_iimmed   0x7fff,0x7fff,fr9       ; saturation
179         set_fr_iimmed   0x7fff,0x7fff,fr11
180         cmqmachs        fr8,fr10,acc0,cc4,1
181         test_spr_bits   0x3c,2,0xf,msr0         ; msr0.sie is set
182         test_spr_bits   2,1,1,msr0              ; msr0.ovf is set
183         test_spr_bits   1,0,1,msr0              ; msr0.aovf is set
184         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt is set
185         test_accg_immed         0x7f,accg0
186         test_acc_limmed 0xffff,0xffff,acc0
187         test_accg_immed         0x7f,accg1
188         test_acc_limmed 0xffff,0xffff,acc1
189         test_accg_immed         0x7f,accg2
190         test_acc_limmed 0xffff,0xffff,acc2
191         test_accg_immed         0x7f,accg3
192         test_acc_limmed 0xffff,0xffff,acc3
193
194         set_accg_immed  0x80,accg0              ; saturation
195         set_acc_immed   0,acc0
196         set_accg_immed  0x80,accg1
197         set_acc_immed   0,acc1
198         set_accg_immed  0x80,accg2              ; saturation
199         set_acc_immed   0,acc2
200         set_accg_immed  0x80,accg3
201         set_acc_immed   0,acc3
202         set_fr_iimmed   0xffff,0,fr8
203         set_fr_iimmed   1,0xffff,fr10
204         set_fr_iimmed   0x0000,0x8000,fr9       ; saturation
205         set_fr_iimmed   0x7fff,0x7fff,fr11
206         cmqmachs        fr8,fr10,acc0,cc4,1
207         test_spr_bits   0x3c,2,0x9,msr0         ; msr0.sie is set
208         test_spr_bits   2,1,1,msr0              ; msr0.ovf is set
209         test_spr_bits   1,0,1,msr0              ; msr0.aovf is set
210         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt is set
211         test_accg_immed         0x80,accg0
212         test_acc_immed  0,acc0
213         test_accg_immed         0x80,accg1
214         test_acc_immed  0,acc1
215         test_accg_immed         0x80,accg2
216         test_acc_immed  0,acc2
217         test_accg_immed         0x80,accg3
218         test_acc_immed  0,acc3
219
220         ; Positive operands
221         set_spr_immed   0,msr0
222         set_accg_immed  0,accg0
223         set_acc_immed   0,acc0
224         set_accg_immed  0,accg1
225         set_acc_immed   0,acc1
226         set_accg_immed  0,accg2
227         set_acc_immed   0,acc2
228         set_accg_immed  0,accg3
229         set_acc_immed   0,acc3
230         set_fr_iimmed   2,3,fr8         ; multiply small numbers
231         set_fr_iimmed   3,2,fr10
232         set_fr_iimmed   0,1,fr9         ; multiply by 0
233         set_fr_iimmed   2,0,fr11
234         cmqmachs        fr8,fr10,acc0,cc1,0
235         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
236         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
237         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
238         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
239         test_accg_immed         0,accg0
240         test_acc_immed  6,acc0
241         test_accg_immed         0,accg1
242         test_acc_immed  6,acc1
243         test_accg_immed         0,accg2
244         test_acc_immed  0,acc2
245         test_accg_immed         0,accg3
246         test_acc_immed  0,acc3
247
248         set_fr_iimmed   2,1,fr8         ; multiply by 1
249         set_fr_iimmed   1,2,fr10
250         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
251         set_fr_iimmed   2,0x3fff,fr11
252         cmqmachs        fr8,fr10,acc0,cc1,0
253         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
254         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
255         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
256         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
257         test_accg_immed         0,accg0
258         test_acc_immed  8,acc0
259         test_accg_immed         0,accg1
260         test_acc_immed  8,acc1
261         test_accg_immed         0,accg2
262         test_acc_limmed 0,0x7ffe,acc2
263         test_accg_immed         0,accg3
264         test_acc_limmed 0,0x7ffe,acc3
265
266         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
267         set_fr_iimmed   2,0x4000,fr10
268         set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
269         set_fr_iimmed   0x7fff,0x7fff,fr11
270         cmqmachs        fr8,fr10,acc0,cc1,0
271         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
272         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
273         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
274         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
275         test_accg_immed         0,accg0
276         test_acc_limmed 0x0000,0x8008,acc0
277         test_accg_immed         0,accg1
278         test_acc_limmed 0x0000,0x8008,acc1
279         test_accg_immed         0,accg2
280         test_acc_limmed 0x3fff,0x7fff,acc2
281         test_accg_immed         0,accg3
282         test_acc_limmed 0x3fff,0x7fff,acc3
283
284         ; Mixed operands
285         set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
286         set_fr_iimmed   0xfffd,2,fr10
287         set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
288         set_fr_iimmed   1,0xfffe,fr11
289         cmqmachs        fr8,fr10,acc0,cc1,0
290         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
291         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
292         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
293         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
294         test_accg_immed         0,accg0
295         test_acc_limmed 0x0000,0x8002,acc0
296         test_accg_immed         0,accg1
297         test_acc_limmed 0x0000,0x8002,acc1
298         test_accg_immed         0,accg2
299         test_acc_limmed 0x3fff,0x7ffd,acc2
300         test_accg_immed         0,accg3
301         test_acc_limmed 0x3fff,0x7ffd,acc3
302
303         set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
304         set_fr_iimmed   0,0xfffe,fr10
305         set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
306         set_fr_iimmed   0xfffe,0x2001,fr11
307         cmqmachs        fr8,fr10,acc0,cc1,0
308         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
309         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
310         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
311         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
312         test_accg_immed         0,accg0
313         test_acc_limmed 0x0000,0x8002,acc0
314         test_accg_immed         0,accg1
315         test_acc_limmed 0x0000,0x8002,acc1
316         test_accg_immed         0,accg2
317         test_acc_limmed 0x3fff,0x3ffb,acc2
318         test_accg_immed         0,accg3
319         test_acc_limmed 0x3fff,0x3ffb,acc3
320
321         set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
322         set_fr_iimmed   0xfffe,0x4000,fr10
323         set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
324         set_fr_iimmed   0x8000,0x7fff,fr11
325         cmqmachs        fr8,fr10,acc0,cc5,0
326         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
327         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
328         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
329         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
330         test_accg_immed         0,accg0
331         test_acc_limmed 0x0000,0x0002,acc0
332         test_accg_immed         0,accg1
333         test_acc_limmed 0x0000,0x0002,acc1
334         test_accg_immed         0xff,accg2
335         test_acc_limmed 0xffff,0xbffb,acc2
336         test_accg_immed         0xff,accg3
337         test_acc_limmed 0xffff,0xbffb,acc3
338
339         ; Negative operands
340         set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
341         set_fr_iimmed   0xfffd,0xfffe,fr10
342         set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
343         set_fr_iimmed   0xfffe,0xffff,fr11
344         cmqmachs        fr8,fr10,acc0,cc5,0
345         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
346         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
347         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
348         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
349         test_accg_immed         0,accg0
350         test_acc_limmed 0x0000,0x0008,acc0
351         test_accg_immed         0,accg1
352         test_acc_limmed 0x0000,0x0008,acc1
353         test_accg_immed         0xff,accg2
354         test_acc_limmed 0xffff,0xbffd,acc2
355         test_accg_immed         0xff,accg3
356         test_acc_limmed 0xffff,0xbffd,acc3
357
358         set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
359         set_fr_iimmed   0x8001,0x8001,fr10
360         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
361         set_fr_iimmed   0x8000,0x8000,fr11
362         cmqmachs        fr8,fr10,acc0,cc5,0
363         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
364         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
365         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
366         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
367         test_accg_immed         0,accg0
368         test_acc_immed  0x3fff0009,acc0
369         test_accg_immed         0,accg1
370         test_acc_immed  0x3fff0009,acc1
371         test_accg_immed         0,accg2
372         test_acc_immed  0x3fffbffd,acc2
373         test_accg_immed         0,accg3
374         test_acc_immed  0x3fffbffd,acc3
375
376         set_accg_immed  0x7f,accg0              ; saturation
377         set_acc_immed   0xffffffff,acc0
378         set_accg_immed  0x7f,accg1
379         set_acc_immed   0xffffffff,acc1
380         set_accg_immed  0x7f,accg2              ; saturation
381         set_acc_immed   0xffffffff,acc2
382         set_accg_immed  0x7f,accg3
383         set_acc_immed   0xffffffff,acc3
384         set_fr_iimmed   1,1,fr8
385         set_fr_iimmed   1,1,fr10
386         set_fr_iimmed   0x7fff,0x7fff,fr9       ; saturation
387         set_fr_iimmed   0x7fff,0x7fff,fr11
388         cmqmachs        fr8,fr10,acc0,cc5,0
389         test_spr_bits   0x3c,2,0xf,msr0         ; msr0.sie is set
390         test_spr_bits   2,1,1,msr0              ; msr0.ovf is set
391         test_spr_bits   1,0,1,msr0              ; msr0.aovf is set
392         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt is set
393         test_accg_immed         0x7f,accg0
394         test_acc_limmed 0xffff,0xffff,acc0
395         test_accg_immed         0x7f,accg1
396         test_acc_limmed 0xffff,0xffff,acc1
397         test_accg_immed         0x7f,accg2
398         test_acc_limmed 0xffff,0xffff,acc2
399         test_accg_immed         0x7f,accg3
400         test_acc_limmed 0xffff,0xffff,acc3
401
402         set_accg_immed  0x80,accg0              ; saturation
403         set_acc_immed   0,acc0
404         set_accg_immed  0x80,accg1
405         set_acc_immed   0,acc1
406         set_accg_immed  0x80,accg2              ; saturation
407         set_acc_immed   0,acc2
408         set_accg_immed  0x80,accg3
409         set_acc_immed   0,acc3
410         set_fr_iimmed   0xffff,0,fr8
411         set_fr_iimmed   1,0xffff,fr10
412         set_fr_iimmed   0x0000,0x8000,fr9       ; saturation
413         set_fr_iimmed   0x7fff,0x7fff,fr11
414         cmqmachs        fr8,fr10,acc0,cc5,0
415         test_spr_bits   0x3c,2,0x9,msr0         ; msr0.sie is set
416         test_spr_bits   2,1,1,msr0              ; msr0.ovf is set
417         test_spr_bits   1,0,1,msr0              ; msr0.aovf is set
418         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt is set
419         test_accg_immed         0x80,accg0
420         test_acc_immed  0,acc0
421         test_accg_immed         0x80,accg1
422         test_acc_immed  0,acc1
423         test_accg_immed         0x80,accg2
424         test_acc_immed  0,acc2
425         test_accg_immed         0x80,accg3
426         test_acc_immed  0,acc3
427
428         ; Positive operands
429         set_spr_immed   0,msr0
430         set_accg_immed  0x00000011,accg0
431         set_acc_immed   0x11111111,acc0
432         set_accg_immed  0x00000022,accg1
433         set_acc_immed   0x22222222,acc1
434         set_accg_immed  0x00000033,accg2
435         set_acc_immed   0x33333333,acc2
436         set_accg_immed  0x00000044,accg3
437         set_acc_immed   0x44444444,acc3
438         set_fr_iimmed   2,3,fr8         ; multiply small numbers
439         set_fr_iimmed   3,2,fr10
440         set_fr_iimmed   0,1,fr9         ; multiply by 0
441         set_fr_iimmed   2,0,fr11
442         cmqmachs        fr8,fr10,acc0,cc0,0
443         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
444         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
445         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
446         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
447         test_accg_immed         0x00000011,accg0
448         test_acc_immed  0x11111111,acc0
449         test_accg_immed         0x00000022,accg1
450         test_acc_immed  0x22222222,acc1
451         test_accg_immed         0x00000033,accg2
452         test_acc_immed  0x33333333,acc2
453         test_accg_immed         0x00000044,accg3
454         test_acc_immed  0x44444444,acc3
455
456         set_fr_iimmed   2,1,fr8         ; multiply by 1
457         set_fr_iimmed   1,2,fr10
458         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
459         set_fr_iimmed   2,0x3fff,fr11
460         cmqmachs        fr8,fr10,acc0,cc0,0
461         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
462         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
463         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
464         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
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
473
474         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
475         set_fr_iimmed   2,0x4000,fr10
476         set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
477         set_fr_iimmed   0x7fff,0x7fff,fr11
478         cmqmachs        fr8,fr10,acc0,cc0,0
479         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
480         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
481         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
482         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
483         test_accg_immed         0x00000011,accg0
484         test_acc_immed  0x11111111,acc0
485         test_accg_immed         0x00000022,accg1
486         test_acc_immed  0x22222222,acc1
487         test_accg_immed         0x00000033,accg2
488         test_acc_immed  0x33333333,acc2
489         test_accg_immed         0x00000044,accg3
490         test_acc_immed  0x44444444,acc3
491
492         ; Mixed operands
493         set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
494         set_fr_iimmed   0xfffd,2,fr10
495         set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
496         set_fr_iimmed   1,0xfffe,fr11
497         cmqmachs        fr8,fr10,acc0,cc0,0
498         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
499         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
500         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
501         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
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
510
511         set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
512         set_fr_iimmed   0,0xfffe,fr10
513         set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
514         set_fr_iimmed   0xfffe,0x2001,fr11
515         cmqmachs        fr8,fr10,acc0,cc0,0
516         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
517         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
518         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
519         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
520         test_accg_immed         0x00000011,accg0
521         test_acc_immed  0x11111111,acc0
522         test_accg_immed         0x00000022,accg1
523         test_acc_immed  0x22222222,acc1
524         test_accg_immed         0x00000033,accg2
525         test_acc_immed  0x33333333,acc2
526         test_accg_immed         0x00000044,accg3
527         test_acc_immed  0x44444444,acc3
528
529         set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
530         set_fr_iimmed   0xfffe,0x4000,fr10
531         set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
532         set_fr_iimmed   0x8000,0x7fff,fr11
533         cmqmachs        fr8,fr10,acc0,cc4,0
534         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
535         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
536         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
537         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
538         test_accg_immed         0x00000011,accg0
539         test_acc_immed  0x11111111,acc0
540         test_accg_immed         0x00000022,accg1
541         test_acc_immed  0x22222222,acc1
542         test_accg_immed         0x00000033,accg2
543         test_acc_immed  0x33333333,acc2
544         test_accg_immed         0x00000044,accg3
545         test_acc_immed  0x44444444,acc3
546
547         ; Negative operands
548         set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
549         set_fr_iimmed   0xfffd,0xfffe,fr10
550         set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
551         set_fr_iimmed   0xfffe,0xffff,fr11
552         cmqmachs        fr8,fr10,acc0,cc4,0
553         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
554         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
555         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
556         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
557         test_accg_immed         0x00000011,accg0
558         test_acc_immed  0x11111111,acc0
559         test_accg_immed         0x00000022,accg1
560         test_acc_immed  0x22222222,acc1
561         test_accg_immed         0x00000033,accg2
562         test_acc_immed  0x33333333,acc2
563         test_accg_immed         0x00000044,accg3
564         test_acc_immed  0x44444444,acc3
565
566         set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
567         set_fr_iimmed   0x8001,0x8001,fr10
568         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
569         set_fr_iimmed   0x8000,0x8000,fr11
570         cmqmachs        fr8,fr10,acc0,cc4,0
571         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
572         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
573         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
574         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
575         test_accg_immed         0x00000011,accg0
576         test_acc_immed  0x11111111,acc0
577         test_accg_immed         0x00000022,accg1
578         test_acc_immed  0x22222222,acc1
579         test_accg_immed         0x00000033,accg2
580         test_acc_immed  0x33333333,acc2
581         test_accg_immed         0x00000044,accg3
582         test_acc_immed  0x44444444,acc3
583
584         set_accg_immed  0x7f,accg0              ; saturation
585         set_acc_immed   0xffffffff,acc0
586         set_accg_immed  0x7f,accg1
587         set_acc_immed   0xffffffff,acc1
588         set_accg_immed  0x7f,accg2              ; saturation
589         set_acc_immed   0xffffffff,acc2
590         set_accg_immed  0x7f,accg3
591         set_acc_immed   0xffffffff,acc3
592         set_fr_iimmed   1,1,fr8
593         set_fr_iimmed   1,1,fr10
594         set_fr_iimmed   0x7fff,0x7fff,fr9       ; saturation
595         set_fr_iimmed   0x7fff,0x7fff,fr11
596         cmqmachs        fr8,fr10,acc0,cc4,0
597         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
598         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
599         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
600         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
601         test_accg_immed         0x7f,accg0              ; saturation
602         test_acc_immed  0xffffffff,acc0
603         test_accg_immed         0x7f,accg1
604         test_acc_immed  0xffffffff,acc1
605         test_accg_immed         0x7f,accg2              ; saturation
606         test_acc_immed  0xffffffff,acc2
607         test_accg_immed         0x7f,accg3
608         test_acc_immed  0xffffffff,acc3
609
610         set_accg_immed  0x80,accg0              ; saturation
611         set_acc_immed   0,acc0
612         set_accg_immed  0x80,accg1
613         set_acc_immed   0,acc1
614         set_accg_immed  0x80,accg2              ; saturation
615         set_acc_immed   0,acc2
616         set_accg_immed  0x80,accg3
617         set_acc_immed   0,acc3
618         set_fr_iimmed   0xffff,0,fr8
619         set_fr_iimmed   1,0xffff,fr10
620         set_fr_iimmed   0x0000,0x8000,fr9       ; saturation
621         set_fr_iimmed   0x7fff,0x7fff,fr11
622         cmqmachs        fr8,fr10,acc0,cc4,0
623         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
624         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
625         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
626         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
627         test_accg_immed         0x80,accg0              ; saturation
628         test_acc_immed  0,acc0
629         test_accg_immed         0x80,accg1
630         test_acc_immed  0,acc1
631         test_accg_immed         0x80,accg2              ; saturation
632         test_acc_immed  0,acc2
633         test_accg_immed         0x80,accg3
634         test_acc_immed  0,acc3
635
636         ; Positive operands
637         set_spr_immed   0,msr0
638         set_accg_immed  0x00000011,accg0
639         set_acc_immed   0x11111111,acc0
640         set_accg_immed  0x00000022,accg1
641         set_acc_immed   0x22222222,acc1
642         set_accg_immed  0x00000033,accg2
643         set_acc_immed   0x33333333,acc2
644         set_accg_immed  0x00000044,accg3
645         set_acc_immed   0x44444444,acc3
646         set_fr_iimmed   2,3,fr8         ; multiply small numbers
647         set_fr_iimmed   3,2,fr10
648         set_fr_iimmed   0,1,fr9         ; multiply by 0
649         set_fr_iimmed   2,0,fr11
650         cmqmachs        fr8,fr10,acc0,cc1,1
651         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
652         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
653         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
654         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
655         test_accg_immed         0x00000011,accg0
656         test_acc_immed  0x11111111,acc0
657         test_accg_immed         0x00000022,accg1
658         test_acc_immed  0x22222222,acc1
659         test_accg_immed         0x00000033,accg2
660         test_acc_immed  0x33333333,acc2
661         test_accg_immed         0x00000044,accg3
662         test_acc_immed  0x44444444,acc3
663
664         set_fr_iimmed   2,1,fr8         ; multiply by 1
665         set_fr_iimmed   1,2,fr10
666         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
667         set_fr_iimmed   2,0x3fff,fr11
668         cmqmachs        fr8,fr10,acc0,cc1,1
669         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
670         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
671         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
672         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
673         test_accg_immed         0x00000011,accg0
674         test_acc_immed  0x11111111,acc0
675         test_accg_immed         0x00000022,accg1
676         test_acc_immed  0x22222222,acc1
677         test_accg_immed         0x00000033,accg2
678         test_acc_immed  0x33333333,acc2
679         test_accg_immed         0x00000044,accg3
680         test_acc_immed  0x44444444,acc3
681
682         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
683         set_fr_iimmed   2,0x4000,fr10
684         set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
685         set_fr_iimmed   0x7fff,0x7fff,fr11
686         cmqmachs        fr8,fr10,acc0,cc1,1
687         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
688         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
689         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
690         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
691         test_accg_immed         0x00000011,accg0
692         test_acc_immed  0x11111111,acc0
693         test_accg_immed         0x00000022,accg1
694         test_acc_immed  0x22222222,acc1
695         test_accg_immed         0x00000033,accg2
696         test_acc_immed  0x33333333,acc2
697         test_accg_immed         0x00000044,accg3
698         test_acc_immed  0x44444444,acc3
699
700         ; Mixed operands
701         set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
702         set_fr_iimmed   0xfffd,2,fr10
703         set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
704         set_fr_iimmed   1,0xfffe,fr11
705         cmqmachs        fr8,fr10,acc0,cc1,1
706         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
707         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
708         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
709         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
710         test_accg_immed         0x00000011,accg0
711         test_acc_immed  0x11111111,acc0
712         test_accg_immed         0x00000022,accg1
713         test_acc_immed  0x22222222,acc1
714         test_accg_immed         0x00000033,accg2
715         test_acc_immed  0x33333333,acc2
716         test_accg_immed         0x00000044,accg3
717         test_acc_immed  0x44444444,acc3
718
719         set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
720         set_fr_iimmed   0,0xfffe,fr10
721         set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
722         set_fr_iimmed   0xfffe,0x2001,fr11
723         cmqmachs        fr8,fr10,acc0,cc1,1
724         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
725         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
726         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
727         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
728         test_accg_immed         0x00000011,accg0
729         test_acc_immed  0x11111111,acc0
730         test_accg_immed         0x00000022,accg1
731         test_acc_immed  0x22222222,acc1
732         test_accg_immed         0x00000033,accg2
733         test_acc_immed  0x33333333,acc2
734         test_accg_immed         0x00000044,accg3
735         test_acc_immed  0x44444444,acc3
736
737         set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
738         set_fr_iimmed   0xfffe,0x4000,fr10
739         set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
740         set_fr_iimmed   0x8000,0x7fff,fr11
741         cmqmachs        fr8,fr10,acc0,cc5,1
742         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
743         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
744         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
745         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
746         test_accg_immed         0x00000011,accg0
747         test_acc_immed  0x11111111,acc0
748         test_accg_immed         0x00000022,accg1
749         test_acc_immed  0x22222222,acc1
750         test_accg_immed         0x00000033,accg2
751         test_acc_immed  0x33333333,acc2
752         test_accg_immed         0x00000044,accg3
753         test_acc_immed  0x44444444,acc3
754
755         ; Negative operands
756         set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
757         set_fr_iimmed   0xfffd,0xfffe,fr10
758         set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
759         set_fr_iimmed   0xfffe,0xffff,fr11
760         cmqmachs        fr8,fr10,acc0,cc5,1
761         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
762         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
763         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
764         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
765         test_accg_immed         0x00000011,accg0
766         test_acc_immed  0x11111111,acc0
767         test_accg_immed         0x00000022,accg1
768         test_acc_immed  0x22222222,acc1
769         test_accg_immed         0x00000033,accg2
770         test_acc_immed  0x33333333,acc2
771         test_accg_immed         0x00000044,accg3
772         test_acc_immed  0x44444444,acc3
773
774         set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
775         set_fr_iimmed   0x8001,0x8001,fr10
776         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
777         set_fr_iimmed   0x8000,0x8000,fr11
778         cmqmachs        fr8,fr10,acc0,cc5,1
779         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
780         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
781         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
782         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
783         test_accg_immed         0x00000011,accg0
784         test_acc_immed  0x11111111,acc0
785         test_accg_immed         0x00000022,accg1
786         test_acc_immed  0x22222222,acc1
787         test_accg_immed         0x00000033,accg2
788         test_acc_immed  0x33333333,acc2
789         test_accg_immed         0x00000044,accg3
790         test_acc_immed  0x44444444,acc3
791
792         set_accg_immed  0x7f,accg0              ; saturation
793         set_acc_immed   0xffffffff,acc0
794         set_accg_immed  0x7f,accg1
795         set_acc_immed   0xffffffff,acc1
796         set_accg_immed  0x7f,accg2              ; saturation
797         set_acc_immed   0xffffffff,acc2
798         set_accg_immed  0x7f,accg3
799         set_acc_immed   0xffffffff,acc3
800         set_fr_iimmed   1,1,fr8
801         set_fr_iimmed   1,1,fr10
802         set_fr_iimmed   0x7fff,0x7fff,fr9       ; saturation
803         set_fr_iimmed   0x7fff,0x7fff,fr11
804         cmqmachs        fr8,fr10,acc0,cc5,1
805         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
806         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
807         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
808         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
809         test_accg_immed         0x7f,accg0              ; saturation
810         test_acc_immed  0xffffffff,acc0
811         test_accg_immed         0x7f,accg1
812         test_acc_immed  0xffffffff,acc1
813         test_accg_immed         0x7f,accg2              ; saturation
814         test_acc_immed  0xffffffff,acc2
815         test_accg_immed         0x7f,accg3
816         test_acc_immed  0xffffffff,acc3
817
818         set_accg_immed  0x80,accg0              ; saturation
819         set_acc_immed   0,acc0
820         set_accg_immed  0x80,accg1
821         set_acc_immed   0,acc1
822         set_accg_immed  0x80,accg2              ; saturation
823         set_acc_immed   0,acc2
824         set_accg_immed  0x80,accg3
825         set_acc_immed   0,acc3
826         set_fr_iimmed   0xffff,0,fr8
827         set_fr_iimmed   1,0xffff,fr10
828         set_fr_iimmed   0x0000,0x8000,fr9       ; saturation
829         set_fr_iimmed   0x7fff,0x7fff,fr11
830         cmqmachs        fr8,fr10,acc0,cc5,1
831         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
832         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
833         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
834         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
835         test_accg_immed         0x80,accg0              ; saturation
836         test_acc_immed  0,acc0
837         test_accg_immed         0x80,accg1
838         test_acc_immed  0,acc1
839         test_accg_immed         0x80,accg2              ; saturation
840         test_acc_immed  0,acc2
841         test_accg_immed         0x80,accg3
842         test_acc_immed  0,acc3
843
844         ; Positive operands
845         set_spr_immed   0,msr0
846         set_accg_immed  0x00000011,accg0
847         set_acc_immed   0x11111111,acc0
848         set_accg_immed  0x00000022,accg1
849         set_acc_immed   0x22222222,acc1
850         set_accg_immed  0x00000033,accg2
851         set_acc_immed   0x33333333,acc2
852         set_accg_immed  0x00000044,accg3
853         set_acc_immed   0x44444444,acc3
854         set_fr_iimmed   2,3,fr8         ; multiply small numbers
855         set_fr_iimmed   3,2,fr10
856         set_fr_iimmed   0,1,fr9         ; multiply by 0
857         set_fr_iimmed   2,0,fr11
858         cmqmachs        fr8,fr10,acc0,cc2,1
859         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
860         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
861         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
862         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
863         test_accg_immed         0x00000011,accg0
864         test_acc_immed  0x11111111,acc0
865         test_accg_immed         0x00000022,accg1
866         test_acc_immed  0x22222222,acc1
867         test_accg_immed         0x00000033,accg2
868         test_acc_immed  0x33333333,acc2
869         test_accg_immed         0x00000044,accg3
870         test_acc_immed  0x44444444,acc3
871
872         set_fr_iimmed   2,1,fr8         ; multiply by 1
873         set_fr_iimmed   1,2,fr10
874         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
875         set_fr_iimmed   2,0x3fff,fr11
876         cmqmachs        fr8,fr10,acc0,cc2,1
877         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
878         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
879         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
880         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
881         test_accg_immed         0x00000011,accg0
882         test_acc_immed  0x11111111,acc0
883         test_accg_immed         0x00000022,accg1
884         test_acc_immed  0x22222222,acc1
885         test_accg_immed         0x00000033,accg2
886         test_acc_immed  0x33333333,acc2
887         test_accg_immed         0x00000044,accg3
888         test_acc_immed  0x44444444,acc3
889
890         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
891         set_fr_iimmed   2,0x4000,fr10
892         set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
893         set_fr_iimmed   0x7fff,0x7fff,fr11
894         cmqmachs        fr8,fr10,acc0,cc2,1
895         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
896         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
897         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
898         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
899         test_accg_immed         0x00000011,accg0
900         test_acc_immed  0x11111111,acc0
901         test_accg_immed         0x00000022,accg1
902         test_acc_immed  0x22222222,acc1
903         test_accg_immed         0x00000033,accg2
904         test_acc_immed  0x33333333,acc2
905         test_accg_immed         0x00000044,accg3
906         test_acc_immed  0x44444444,acc3
907
908         ; Mixed operands
909         set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
910         set_fr_iimmed   0xfffd,2,fr10
911         set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
912         set_fr_iimmed   1,0xfffe,fr11
913         cmqmachs        fr8,fr10,acc0,cc2,1
914         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
915         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
916         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
917         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
918         test_accg_immed         0x00000011,accg0
919         test_acc_immed  0x11111111,acc0
920         test_accg_immed         0x00000022,accg1
921         test_acc_immed  0x22222222,acc1
922         test_accg_immed         0x00000033,accg2
923         test_acc_immed  0x33333333,acc2
924         test_accg_immed         0x00000044,accg3
925         test_acc_immed  0x44444444,acc3
926
927         set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
928         set_fr_iimmed   0,0xfffe,fr10
929         set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
930         set_fr_iimmed   0xfffe,0x2001,fr11
931         cmqmachs        fr8,fr10,acc0,cc2,1
932         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
933         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
934         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
935         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
936         test_accg_immed         0x00000011,accg0
937         test_acc_immed  0x11111111,acc0
938         test_accg_immed         0x00000022,accg1
939         test_acc_immed  0x22222222,acc1
940         test_accg_immed         0x00000033,accg2
941         test_acc_immed  0x33333333,acc2
942         test_accg_immed         0x00000044,accg3
943         test_acc_immed  0x44444444,acc3
944
945         set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
946         set_fr_iimmed   0xfffe,0x4000,fr10
947         set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
948         set_fr_iimmed   0x8000,0x7fff,fr11
949         cmqmachs        fr8,fr10,acc0,cc6,1
950         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
951         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
952         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
953         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
954         test_accg_immed         0x00000011,accg0
955         test_acc_immed  0x11111111,acc0
956         test_accg_immed         0x00000022,accg1
957         test_acc_immed  0x22222222,acc1
958         test_accg_immed         0x00000033,accg2
959         test_acc_immed  0x33333333,acc2
960         test_accg_immed         0x00000044,accg3
961         test_acc_immed  0x44444444,acc3
962
963         ; Negative operands
964         set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
965         set_fr_iimmed   0xfffd,0xfffe,fr10
966         set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
967         set_fr_iimmed   0xfffe,0xffff,fr11
968         cmqmachs        fr8,fr10,acc0,cc6,1
969         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
970         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
971         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
972         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
973         test_accg_immed         0x00000011,accg0
974         test_acc_immed  0x11111111,acc0
975         test_accg_immed         0x00000022,accg1
976         test_acc_immed  0x22222222,acc1
977         test_accg_immed         0x00000033,accg2
978         test_acc_immed  0x33333333,acc2
979         test_accg_immed         0x00000044,accg3
980         test_acc_immed  0x44444444,acc3
981
982         set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
983         set_fr_iimmed   0x8001,0x8001,fr10
984         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
985         set_fr_iimmed   0x8000,0x8000,fr11
986         cmqmachs        fr8,fr10,acc0,cc6,1
987         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
988         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
989         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
990         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
991         test_accg_immed         0x00000011,accg0
992         test_acc_immed  0x11111111,acc0
993         test_accg_immed         0x00000022,accg1
994         test_acc_immed  0x22222222,acc1
995         test_accg_immed         0x00000033,accg2
996         test_acc_immed  0x33333333,acc2
997         test_accg_immed         0x00000044,accg3
998         test_acc_immed  0x44444444,acc3
999
1000         set_accg_immed  0x7f,accg0              ; saturation
1001         set_acc_immed   0xffffffff,acc0
1002         set_accg_immed  0x7f,accg1
1003         set_acc_immed   0xffffffff,acc1
1004         set_accg_immed  0x7f,accg2              ; saturation
1005         set_acc_immed   0xffffffff,acc2
1006         set_accg_immed  0x7f,accg3
1007         set_acc_immed   0xffffffff,acc3
1008         set_fr_iimmed   1,1,fr8
1009         set_fr_iimmed   1,1,fr10
1010         set_fr_iimmed   0x7fff,0x7fff,fr9       ; saturation
1011         set_fr_iimmed   0x7fff,0x7fff,fr11
1012         cmqmachs        fr8,fr10,acc0,cc6,1
1013         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1014         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1015         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1016         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1017         test_accg_immed         0x7f,accg0              ; saturation
1018         test_acc_immed  0xffffffff,acc0
1019         test_accg_immed         0x7f,accg1
1020         test_acc_immed  0xffffffff,acc1
1021         test_accg_immed         0x7f,accg2              ; saturation
1022         test_acc_immed  0xffffffff,acc2
1023         test_accg_immed         0x7f,accg3
1024         test_acc_immed  0xffffffff,acc3
1025
1026         set_accg_immed  0x80,accg0              ; saturation
1027         set_acc_immed   0,acc0
1028         set_accg_immed  0x80,accg1
1029         set_acc_immed   0,acc1
1030         set_accg_immed  0x80,accg2              ; saturation
1031         set_acc_immed   0,acc2
1032         set_accg_immed  0x80,accg3
1033         set_acc_immed   0,acc3
1034         set_fr_iimmed   0xffff,0,fr8
1035         set_fr_iimmed   1,0xffff,fr10
1036         set_fr_iimmed   0x0000,0x8000,fr9       ; saturation
1037         set_fr_iimmed   0x7fff,0x7fff,fr11
1038         cmqmachs        fr8,fr10,acc0,cc6,1
1039         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1040         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1041         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1042         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1043         test_accg_immed         0x80,accg0              ; saturation
1044         test_acc_immed  0,acc0
1045         test_accg_immed         0x80,accg1
1046         test_acc_immed  0,acc1
1047         test_accg_immed         0x80,accg2              ; saturation
1048         test_acc_immed  0,acc2
1049         test_accg_immed         0x80,accg3
1050         test_acc_immed  0,acc3
1051 ;
1052         ; Positive operands
1053         set_spr_immed   0,msr0
1054         set_accg_immed  0x00000011,accg0
1055         set_acc_immed   0x11111111,acc0
1056         set_accg_immed  0x00000022,accg1
1057         set_acc_immed   0x22222222,acc1
1058         set_accg_immed  0x00000033,accg2
1059         set_acc_immed   0x33333333,acc2
1060         set_accg_immed  0x00000044,accg3
1061         set_acc_immed   0x44444444,acc3
1062         set_fr_iimmed   2,3,fr8         ; multiply small numbers
1063         set_fr_iimmed   3,2,fr10
1064         set_fr_iimmed   0,1,fr9         ; multiply by 0
1065         set_fr_iimmed   2,0,fr11
1066         cmqmachs        fr8,fr10,acc0,cc3,1
1067         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1068         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1069         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1070         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1071         test_accg_immed         0x00000011,accg0
1072         test_acc_immed  0x11111111,acc0
1073         test_accg_immed         0x00000022,accg1
1074         test_acc_immed  0x22222222,acc1
1075         test_accg_immed         0x00000033,accg2
1076         test_acc_immed  0x33333333,acc2
1077         test_accg_immed         0x00000044,accg3
1078         test_acc_immed  0x44444444,acc3
1079
1080         set_fr_iimmed   2,1,fr8         ; multiply by 1
1081         set_fr_iimmed   1,2,fr10
1082         set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
1083         set_fr_iimmed   2,0x3fff,fr11
1084         cmqmachs        fr8,fr10,acc0,cc3,1
1085         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1086         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1087         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1088         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1089         test_accg_immed         0x00000011,accg0
1090         test_acc_immed  0x11111111,acc0
1091         test_accg_immed         0x00000022,accg1
1092         test_acc_immed  0x22222222,acc1
1093         test_accg_immed         0x00000033,accg2
1094         test_acc_immed  0x33333333,acc2
1095         test_accg_immed         0x00000044,accg3
1096         test_acc_immed  0x44444444,acc3
1097
1098         set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
1099         set_fr_iimmed   2,0x4000,fr10
1100         set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
1101         set_fr_iimmed   0x7fff,0x7fff,fr11
1102         cmqmachs        fr8,fr10,acc0,cc3,1
1103         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1104         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1105         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1106         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1107         test_accg_immed         0x00000011,accg0
1108         test_acc_immed  0x11111111,acc0
1109         test_accg_immed         0x00000022,accg1
1110         test_acc_immed  0x22222222,acc1
1111         test_accg_immed         0x00000033,accg2
1112         test_acc_immed  0x33333333,acc2
1113         test_accg_immed         0x00000044,accg3
1114         test_acc_immed  0x44444444,acc3
1115
1116         ; Mixed operands
1117         set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
1118         set_fr_iimmed   0xfffd,2,fr10
1119         set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
1120         set_fr_iimmed   1,0xfffe,fr11
1121         cmqmachs        fr8,fr10,acc0,cc3,1
1122         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1123         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1124         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1125         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1126         test_accg_immed         0x00000011,accg0
1127         test_acc_immed  0x11111111,acc0
1128         test_accg_immed         0x00000022,accg1
1129         test_acc_immed  0x22222222,acc1
1130         test_accg_immed         0x00000033,accg2
1131         test_acc_immed  0x33333333,acc2
1132         test_accg_immed         0x00000044,accg3
1133         test_acc_immed  0x44444444,acc3
1134
1135         set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
1136         set_fr_iimmed   0,0xfffe,fr10
1137         set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
1138         set_fr_iimmed   0xfffe,0x2001,fr11
1139         cmqmachs        fr8,fr10,acc0,cc3,1
1140         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1141         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1142         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1143         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1144         test_accg_immed         0x00000011,accg0
1145         test_acc_immed  0x11111111,acc0
1146         test_accg_immed         0x00000022,accg1
1147         test_acc_immed  0x22222222,acc1
1148         test_accg_immed         0x00000033,accg2
1149         test_acc_immed  0x33333333,acc2
1150         test_accg_immed         0x00000044,accg3
1151         test_acc_immed  0x44444444,acc3
1152
1153         set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
1154         set_fr_iimmed   0xfffe,0x4000,fr10
1155         set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
1156         set_fr_iimmed   0x8000,0x7fff,fr11
1157         cmqmachs        fr8,fr10,acc0,cc7,1
1158         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1159         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1160         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1161         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1162         test_accg_immed         0x00000011,accg0
1163         test_acc_immed  0x11111111,acc0
1164         test_accg_immed         0x00000022,accg1
1165         test_acc_immed  0x22222222,acc1
1166         test_accg_immed         0x00000033,accg2
1167         test_acc_immed  0x33333333,acc2
1168         test_accg_immed         0x00000044,accg3
1169         test_acc_immed  0x44444444,acc3
1170
1171         ; Negative operands
1172         set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
1173         set_fr_iimmed   0xfffd,0xfffe,fr10
1174         set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
1175         set_fr_iimmed   0xfffe,0xffff,fr11
1176         cmqmachs        fr8,fr10,acc0,cc7,1
1177         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1178         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1179         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1180         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1181         test_accg_immed         0x00000011,accg0
1182         test_acc_immed  0x11111111,acc0
1183         test_accg_immed         0x00000022,accg1
1184         test_acc_immed  0x22222222,acc1
1185         test_accg_immed         0x00000033,accg2
1186         test_acc_immed  0x33333333,acc2
1187         test_accg_immed         0x00000044,accg3
1188         test_acc_immed  0x44444444,acc3
1189
1190         set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
1191         set_fr_iimmed   0x8001,0x8001,fr10
1192         set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
1193         set_fr_iimmed   0x8000,0x8000,fr11
1194         cmqmachs        fr8,fr10,acc0,cc7,1
1195         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1196         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1197         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1198         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1199         test_accg_immed         0x00000011,accg0
1200         test_acc_immed  0x11111111,acc0
1201         test_accg_immed         0x00000022,accg1
1202         test_acc_immed  0x22222222,acc1
1203         test_accg_immed         0x00000033,accg2
1204         test_acc_immed  0x33333333,acc2
1205         test_accg_immed         0x00000044,accg3
1206         test_acc_immed  0x44444444,acc3
1207
1208         set_accg_immed  0x7f,accg0              ; saturation
1209         set_acc_immed   0xffffffff,acc0
1210         set_accg_immed  0x7f,accg1
1211         set_acc_immed   0xffffffff,acc1
1212         set_accg_immed  0x7f,accg2              ; saturation
1213         set_acc_immed   0xffffffff,acc2
1214         set_accg_immed  0x7f,accg3
1215         set_acc_immed   0xffffffff,acc3
1216         set_fr_iimmed   1,1,fr8
1217         set_fr_iimmed   1,1,fr10
1218         set_fr_iimmed   0x7fff,0x7fff,fr9       ; saturation
1219         set_fr_iimmed   0x7fff,0x7fff,fr11
1220         cmqmachs        fr8,fr10,acc0,cc7,1
1221         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1222         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1223         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1224         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1225         test_accg_immed         0x7f,accg0              ; saturation
1226         test_acc_immed  0xffffffff,acc0
1227         test_accg_immed         0x7f,accg1
1228         test_acc_immed  0xffffffff,acc1
1229         test_accg_immed         0x7f,accg2              ; saturation
1230         test_acc_immed  0xffffffff,acc2
1231         test_accg_immed         0x7f,accg3
1232         test_acc_immed  0xffffffff,acc3
1233
1234         set_accg_immed  0x80,accg0              ; saturation
1235         set_acc_immed   0,acc0
1236         set_accg_immed  0x80,accg1
1237         set_acc_immed   0,acc1
1238         set_accg_immed  0x80,accg2              ; saturation
1239         set_acc_immed   0,acc2
1240         set_accg_immed  0x80,accg3
1241         set_acc_immed   0,acc3
1242         set_fr_iimmed   0xffff,0,fr8
1243         set_fr_iimmed   1,0xffff,fr10
1244         set_fr_iimmed   0x0000,0x8000,fr9       ; saturation
1245         set_fr_iimmed   0x7fff,0x7fff,fr11
1246         cmqmachs        fr8,fr10,acc0,cc7,1
1247         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1248         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1249         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1250         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1251         test_accg_immed         0x80,accg0              ; saturation
1252         test_acc_immed  0,acc0
1253         test_accg_immed         0x80,accg1
1254         test_acc_immed  0,acc1
1255         test_accg_immed         0x80,accg2              ; saturation
1256         test_acc_immed  0,acc2
1257         test_accg_immed         0x80,accg3
1258         test_acc_immed  0,acc3
1259
1260         pass
1261
1262