OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gdb/] [gdb-6.8/] [sim/] [testsuite/] [sim/] [frv/] [fr550/] [cmmachs.cgs] - Blame information for rev 26

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 26 jlechner
# frv testcase for cmmachs $GRi,$GRj,$ACCk,$CCi,$cond
2
# mach: all
3
 
4
        .include "../testutils.inc"
5
 
6
        start
7
 
8
        .global cmmachs
9
cmmachs:
10
        set_spr_immed   0x1b1b,cccr
11
 
12
        ; Positive operands
13
        set_spr_immed   0x0,msr0
14
        set_accg_immed  0x0,accg0
15
        set_acc_immed   0x0,acc0
16
        set_accg_immed  0x0,accg1
17
        set_acc_immed   0x0,acc1
18
        set_fr_iimmed   2,3,fr7         ; multiply small numbers
19
        set_fr_iimmed   3,2,fr8
20
        cmmachs         fr7,fr8,acc0,cc0,1
21
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
22
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
23
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
24
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
25
        test_accg_immed         0,accg0
26
        test_acc_immed  6,acc0
27
        test_accg_immed         0,accg1
28
        test_acc_immed  6,acc1
29
 
30
        set_fr_iimmed   0,1,fr7         ; multiply by 0
31
        set_fr_iimmed   2,0,fr8
32
        cmmachs         fr7,fr8,acc0,cc0,1
33
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
34
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
35
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
36
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
37
        test_accg_immed         0,accg0
38
        test_acc_immed  6,acc0
39
        test_accg_immed         0,accg1
40
        test_acc_immed  6,acc1
41
 
42
        set_fr_iimmed   2,1,fr7         ; multiply by 1
43
        set_fr_iimmed   1,2,fr8
44
        cmmachs         fr7,fr8,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
 
54
        set_fr_iimmed   0x3fff,2,fr7    ; 15 bit result
55
        set_fr_iimmed   2,0x3fff,fr8
56
        cmmachs         fr7,fr8,acc0,cc0,1
57
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
58
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
59
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
60
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
61
        test_accg_immed         0,accg0
62
        test_acc_limmed 0,0x8006,acc0
63
        test_accg_immed         0,accg1
64
        test_acc_limmed 0,0x8006,acc1
65
 
66
        set_fr_iimmed   0x4000,2,fr7    ; 16 bit result
67
        set_fr_iimmed   2,0x4000,fr8
68
        cmmachs         fr7,fr8,acc0,cc0,1
69
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
70
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
71
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
72
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
73
        test_accg_immed         0,accg0
74
        test_acc_limmed 0x0001,0x0006,acc0
75
        test_accg_immed         0,accg1
76
        test_acc_limmed 0x0001,0x0006,acc1
77
 
78
        set_fr_iimmed   0x7fff,0x7fff,fr7       ; max positive result
79
        set_fr_iimmed   0x7fff,0x7fff,fr8
80
        cmmachs         fr7,fr8,acc0,cc0,1
81
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
82
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
83
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
84
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
85
        test_accg_immed         0,accg0
86
        test_acc_limmed 0x4000,0x0007,acc0
87
        test_accg_immed         0,accg1
88
        test_acc_limmed 0x4000,0x0007,acc1
89
 
90
        ; Mixed operands
91
        set_fr_iimmed   2,0xfffd,fr7            ; multiply small numbers
92
        set_fr_iimmed   0xfffd,2,fr8
93
        cmmachs         fr7,fr8,acc0,cc0,1
94
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
95
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
96
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
97
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
98
        test_accg_immed         0,accg0
99
        test_acc_limmed 0x4000,0x0001,acc0
100
        test_accg_immed         0,accg1
101
        test_acc_limmed 0x4000,0x0001,acc1
102
 
103
        set_fr_iimmed   0xfffe,1,fr7            ; multiply by 1
104
        set_fr_iimmed   1,0xfffe,fr8
105
        cmmachs         fr7,fr8,acc0,cc0,1
106
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
107
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
108
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
109
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
110
        test_accg_immed         0,accg0
111
        test_acc_limmed 0x3fff,0xffff,acc0
112
        test_accg_immed         0,accg1
113
        test_acc_limmed 0x3fff,0xffff,acc1
114
 
115
        set_fr_iimmed   0xfffe,0,fr7            ; multiply by 0
116
        set_fr_iimmed   0,0xfffe,fr8
117
        cmmachs         fr7,fr8,acc0,cc0,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 0x3fff,0xffff,acc0
124
        test_accg_immed         0,accg1
125
        test_acc_limmed 0x3fff,0xffff,acc1
126
 
127
        set_fr_iimmed   0x2001,0xfffe,fr7       ; 15 bit result
128
        set_fr_iimmed   0xfffe,0x2001,fr8
129
        cmmachs         fr7,fr8,acc0,cc0,1
130
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
131
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
132
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
133
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
134
        test_accg_immed         0,accg0
135
        test_acc_limmed 0x3fff,0xbffd,acc0
136
        test_accg_immed         0,accg1
137
        test_acc_limmed 0x3fff,0xbffd,acc1
138
 
139
        set_fr_iimmed   0x4000,0xfffe,fr7       ; 16 bit result
140
        set_fr_iimmed   0xfffe,0x4000,fr8
141
        cmmachs         fr7,fr8,acc0,cc4,1
142
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
143
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
144
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
145
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
146
        test_accg_immed         0,accg0
147
        test_acc_limmed 0x3fff,0x3ffd,acc0
148
        test_accg_immed         0,accg1
149
        test_acc_limmed 0x3fff,0x3ffd,acc1
150
 
151
        set_fr_iimmed   0x7fff,0x8000,fr7       ; max negative result
152
        set_fr_iimmed   0x8000,0x7fff,fr8
153
        cmmachs         fr7,fr8,acc0,cc4,1
154
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
155
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
156
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
157
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
158
        test_accg_immed         0xff,accg0
159
        test_acc_limmed 0xffff,0xbffd,acc0
160
        test_accg_immed         0xff,accg1
161
        test_acc_limmed 0xffff,0xbffd,acc1
162
 
163
        ; Negative operands
164
        set_fr_iimmed   0xfffe,0xfffd,fr7               ; multiply small numbers
165
        set_fr_iimmed   0xfffd,0xfffe,fr8
166
        cmmachs         fr7,fr8,acc0,cc4,1
167
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
168
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
169
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
170
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
171
        test_accg_immed         0xff,accg0
172
        test_acc_limmed 0xffff,0xc003,acc0
173
        test_accg_immed         0xff,accg1
174
        test_acc_limmed 0xffff,0xc003,acc1
175
 
176
        set_fr_iimmed   0xffff,0xfffe,fr7               ; multiply by -1
177
        set_fr_iimmed   0xfffe,0xffff,fr8
178
        cmmachs         fr7,fr8,acc0,cc4,1
179
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
180
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
181
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
182
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
183
        test_accg_immed         0xff,accg0
184
        test_acc_limmed 0xffff,0xc005,acc0
185
        test_accg_immed         0xff,accg1
186
        test_acc_limmed 0xffff,0xc005,acc1
187
 
188
        set_fr_iimmed   0x8001,0x8001,fr7       ; almost max positive result
189
        set_fr_iimmed   0x8001,0x8001,fr8
190
        cmmachs         fr7,fr8,acc0,cc4,1
191
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
192
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
193
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
194
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
195
        test_accg_immed         0,accg0
196
        test_acc_immed  0x3ffec006,acc0
197
        test_accg_immed         0,accg1
198
        test_acc_immed  0x3ffec006,acc1
199
 
200
        set_fr_iimmed   0x8000,0x8000,fr7       ; max positive result
201
        set_fr_iimmed   0x8000,0x8000,fr8
202
        cmmachs         fr7,fr8,acc0,cc4,1
203
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
204
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
205
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
206
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
207
        test_accg_immed         0,accg0
208
        test_acc_immed  0x7ffec006,acc0
209
        test_accg_immed         0,accg1
210
        test_acc_immed  0x7ffec006,acc1
211
 
212
        set_accg_immed  0x7f,accg0              ; saturation
213
        set_acc_immed   0xffffffff,acc0
214
        set_accg_immed  0x7f,accg1
215
        set_acc_immed   0xffffffff,acc1
216
        set_fr_iimmed   1,1,fr7
217
        set_fr_iimmed   1,1,fr8
218
        cmmachs         fr7,fr8,acc0,cc4,1
219
;;;;;;;;;;;;
220
        test_spr_bits   0x3c,2,0xc,msr0         ; msr0.sie is set
221
        test_spr_bits   2,1,1,msr0              ; msr0.ovf is set
222
        test_spr_bits   1,0,1,msr0              ; msr0.aovf is set
223
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt is set
224
        test_accg_immed         0x7f,accg0
225
        test_acc_limmed 0xffff,0xffff,acc0
226
        test_accg_immed         0x7f,accg1
227
        test_acc_limmed 0xffff,0xffff,acc1
228
 
229
        set_fr_iimmed   0x7fff,0x7fff,fr7       ; saturation
230
        set_fr_iimmed   0x7fff,0x7fff,fr8
231
        cmmachs         fr7,fr8,acc0,cc4,1
232
        test_spr_bits   0x3c,2,0xc,msr0         ; msr0.sie is set
233
        test_spr_bits   2,1,1,msr0              ; msr0.ovf is set
234
        test_spr_bits   1,0,1,msr0              ; msr0.aovf is set
235
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt is set
236
        test_accg_immed         0x7f,accg0
237
        test_acc_limmed 0xffff,0xffff,acc0
238
        test_accg_immed         0x7f,accg1
239
        test_acc_limmed 0xffff,0xffff,acc1
240
 
241
        set_accg_immed  -128,accg0              ; saturation
242
        set_acc_immed   0,acc0
243
        set_accg_immed  -128,accg1
244
        set_acc_immed   0,acc1
245
        set_fr_iimmed   0xffff,0,fr7
246
        set_fr_iimmed   1,0xffff,fr8
247
        cmmachs         fr7,fr8,acc0,cc4,1
248
        test_spr_bits   0x3c,2,0x8,msr0         ; msr0.sie is set
249
        test_spr_bits   2,1,1,msr0              ; msr0.ovf is set
250
        test_spr_bits   1,0,1,msr0              ; msr0.aovf is set
251
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt is set
252
        test_accg_immed         0x80,accg0
253
        test_acc_immed  0,acc0
254
        test_accg_immed         0x80,accg1
255
        test_acc_immed  0,acc1
256
 
257
        set_fr_iimmed   0x0000,0x8000,fr7       ; saturation
258
        set_fr_iimmed   0x7fff,0x7fff,fr8
259
        cmmachs         fr7,fr8,acc0,cc4,1
260
        test_spr_bits   0x3c,2,0x4,msr0         ; msr0.sie is set
261
        test_spr_bits   2,1,1,msr0              ; msr0.ovf is set
262
        test_spr_bits   1,0,1,msr0              ; msr0.aovf is set
263
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt is set
264
        test_accg_immed         0x80,accg0
265
        test_acc_immed  0,acc0
266
        test_accg_immed         0x80,accg1
267
        test_acc_immed  0,acc1
268
 
269
        ; Positive operands
270
        set_spr_immed   0x0,msr0
271
        set_accg_immed  0x0,accg0               ; saturation
272
        set_acc_immed   0x0,acc0
273
        set_accg_immed  0x0,accg1
274
        set_acc_immed   0x0,acc1
275
        set_fr_iimmed   2,3,fr7         ; multiply small numbers
276
        set_fr_iimmed   3,2,fr8
277
        cmmachs         fr7,fr8,acc0,cc1,0
278
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
279
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
280
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
281
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
282
        test_accg_immed         0,accg0
283
        test_acc_immed  6,acc0
284
        test_accg_immed         0,accg1
285
        test_acc_immed  6,acc1
286
 
287
        set_fr_iimmed   0,1,fr7         ; multiply by 0
288
        set_fr_iimmed   2,0,fr8
289
        cmmachs         fr7,fr8,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_immed  6,acc0
296
        test_accg_immed         0,accg1
297
        test_acc_immed  6,acc1
298
 
299
        set_fr_iimmed   2,1,fr7         ; multiply by 1
300
        set_fr_iimmed   1,2,fr8
301
        cmmachs         fr7,fr8,acc0,cc1,0
302
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
303
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
304
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
305
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
306
        test_accg_immed         0,accg0
307
        test_acc_immed  8,acc0
308
        test_accg_immed         0,accg1
309
        test_acc_immed  8,acc1
310
 
311
        set_fr_iimmed   0x3fff,2,fr7    ; 15 bit result
312
        set_fr_iimmed   2,0x3fff,fr8
313
        cmmachs         fr7,fr8,acc0,cc1,0
314
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
315
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
316
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
317
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
318
        test_accg_immed         0,accg0
319
        test_acc_limmed 0,0x8006,acc0
320
        test_accg_immed         0,accg1
321
        test_acc_limmed 0,0x8006,acc1
322
 
323
        set_fr_iimmed   0x4000,2,fr7    ; 16 bit result
324
        set_fr_iimmed   2,0x4000,fr8
325
        cmmachs         fr7,fr8,acc0,cc1,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 0x0001,0x0006,acc0
332
        test_accg_immed         0,accg1
333
        test_acc_limmed 0x0001,0x0006,acc1
334
 
335
        set_fr_iimmed   0x7fff,0x7fff,fr7       ; max positive result
336
        set_fr_iimmed   0x7fff,0x7fff,fr8
337
        cmmachs         fr7,fr8,acc0,cc1,0
338
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
339
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
340
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
341
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
342
        test_accg_immed         0,accg0
343
        test_acc_limmed 0x4000,0x0007,acc0
344
        test_accg_immed         0,accg1
345
        test_acc_limmed 0x4000,0x0007,acc1
346
 
347
        ; Mixed operands
348
        set_fr_iimmed   2,0xfffd,fr7            ; multiply small numbers
349
        set_fr_iimmed   0xfffd,2,fr8
350
        cmmachs         fr7,fr8,acc0,cc1,0
351
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
352
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
353
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
354
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
355
        test_accg_immed         0,accg0
356
        test_acc_limmed 0x4000,0x0001,acc0
357
        test_accg_immed         0,accg1
358
        test_acc_limmed 0x4000,0x0001,acc1
359
 
360
        set_fr_iimmed   0xfffe,1,fr7            ; multiply by 1
361
        set_fr_iimmed   1,0xfffe,fr8
362
        cmmachs         fr7,fr8,acc0,cc1,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_limmed 0x3fff,0xffff,acc0
369
        test_accg_immed         0,accg1
370
        test_acc_limmed 0x3fff,0xffff,acc1
371
 
372
        set_fr_iimmed   0xfffe,0,fr7            ; multiply by 0
373
        set_fr_iimmed   0,0xfffe,fr8
374
        cmmachs         fr7,fr8,acc0,cc1,0
375
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
376
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
377
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
378
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
379
        test_accg_immed         0,accg0
380
        test_acc_limmed 0x3fff,0xffff,acc0
381
        test_accg_immed         0,accg1
382
        test_acc_limmed 0x3fff,0xffff,acc1
383
 
384
        set_fr_iimmed   0x2001,0xfffe,fr7       ; 15 bit result
385
        set_fr_iimmed   0xfffe,0x2001,fr8
386
        cmmachs         fr7,fr8,acc0,cc1,0
387
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
388
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
389
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
390
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
391
        test_accg_immed         0,accg0
392
        test_acc_limmed 0x3fff,0xbffd,acc0
393
        test_accg_immed         0,accg1
394
        test_acc_limmed 0x3fff,0xbffd,acc1
395
 
396
        set_fr_iimmed   0x4000,0xfffe,fr7       ; 16 bit result
397
        set_fr_iimmed   0xfffe,0x4000,fr8
398
        cmmachs         fr7,fr8,acc0,cc5,0
399
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
400
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
401
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
402
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
403
        test_accg_immed         0,accg0
404
        test_acc_limmed 0x3fff,0x3ffd,acc0
405
        test_accg_immed         0,accg1
406
        test_acc_limmed 0x3fff,0x3ffd,acc1
407
 
408
        set_fr_iimmed   0x7fff,0x8000,fr7       ; max negative result
409
        set_fr_iimmed   0x8000,0x7fff,fr8
410
        cmmachs         fr7,fr8,acc0,cc5,0
411
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
412
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
413
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
414
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
415
        test_accg_immed         0xff,accg0
416
        test_acc_limmed 0xffff,0xbffd,acc0
417
        test_accg_immed         0xff,accg1
418
        test_acc_limmed 0xffff,0xbffd,acc1
419
 
420
        ; Negative operands
421
        set_fr_iimmed   0xfffe,0xfffd,fr7               ; multiply small numbers
422
        set_fr_iimmed   0xfffd,0xfffe,fr8
423
        cmmachs         fr7,fr8,acc0,cc5,0
424
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
425
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
426
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
427
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
428
        test_accg_immed         0xff,accg0
429
        test_acc_limmed 0xffff,0xc003,acc0
430
        test_accg_immed         0xff,accg1
431
        test_acc_limmed 0xffff,0xc003,acc1
432
 
433
        set_fr_iimmed   0xffff,0xfffe,fr7               ; multiply by -1
434
        set_fr_iimmed   0xfffe,0xffff,fr8
435
        cmmachs         fr7,fr8,acc0,cc5,0
436
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
437
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
438
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
439
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
440
        test_accg_immed         0xff,accg0
441
        test_acc_limmed 0xffff,0xc005,acc0
442
        test_accg_immed         0xff,accg1
443
        test_acc_limmed 0xffff,0xc005,acc1
444
 
445
        set_fr_iimmed   0x8001,0x8001,fr7       ; almost max positive result
446
        set_fr_iimmed   0x8001,0x8001,fr8
447
        cmmachs         fr7,fr8,acc0,cc5,0
448
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
449
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
450
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
451
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
452
        test_accg_immed         0,accg0
453
        test_acc_immed  0x3ffec006,acc0
454
        test_accg_immed         0,accg1
455
        test_acc_immed  0x3ffec006,acc1
456
 
457
        set_fr_iimmed   0x8000,0x8000,fr7       ; max positive result
458
        set_fr_iimmed   0x8000,0x8000,fr8
459
        cmmachs         fr7,fr8,acc0,cc5,0
460
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
461
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
462
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
463
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
464
        test_accg_immed         0,accg0
465
        test_acc_immed  0x7ffec006,acc0
466
        test_accg_immed         0,accg1
467
        test_acc_immed  0x7ffec006,acc1
468
 
469
        set_accg_immed  0x7f,accg0              ; saturation
470
        set_acc_immed   0xffffffff,acc0
471
        set_accg_immed  0x7f,accg1
472
        set_acc_immed   0xffffffff,acc1
473
        set_fr_iimmed   1,1,fr7
474
        set_fr_iimmed   1,1,fr8
475
        cmmachs         fr7,fr8,acc0,cc5,0
476
        test_accg_immed         0x7f,accg0
477
        test_acc_limmed 0xffff,0xffff,acc0
478
        test_accg_immed         0x7f,accg1
479
        test_acc_limmed 0xffff,0xffff,acc1
480
 
481
        set_fr_iimmed   0x7fff,0x7fff,fr7       ; saturation
482
        set_fr_iimmed   0x7fff,0x7fff,fr8
483
        cmmachs         fr7,fr8,acc0,cc5,0
484
        test_spr_bits   0x3c,2,0xc,msr0         ; msr0.sie is set
485
        test_spr_bits   2,1,1,msr0              ; msr0.ovf is set
486
        test_spr_bits   1,0,1,msr0              ; msr0.aovf is set
487
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt is set
488
        test_accg_immed         0x7f,accg0
489
        test_acc_limmed 0xffff,0xffff,acc0
490
        test_accg_immed         0x7f,accg1
491
        test_acc_limmed 0xffff,0xffff,acc1
492
 
493
        set_accg_immed  0x80,accg0              ; saturation
494
        set_acc_immed   0,acc0
495
        set_accg_immed  0x80,accg1
496
        set_acc_immed   0,acc1
497
        set_fr_iimmed   0xffff,0,fr7
498
        set_fr_iimmed   1,0xffff,fr8
499
        cmmachs         fr7,fr8,acc0,cc5,0
500
        test_spr_bits   0x3c,2,0x8,msr0         ; msr0.sie is set
501
        test_spr_bits   2,1,1,msr0              ; msr0.ovf is set
502
        test_spr_bits   1,0,1,msr0              ; msr0.aovf is set
503
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt is set
504
        test_accg_immed         0x80,accg0
505
        test_acc_immed  0,acc0
506
        test_accg_immed         0x80,accg1
507
        test_acc_immed  0,acc1
508
 
509
        set_fr_iimmed   0x0000,0x8000,fr7       ; saturation
510
        set_fr_iimmed   0x7fff,0x7fff,fr8
511
        cmmachs         fr7,fr8,acc0,cc5,0
512
        test_spr_bits   0x3c,2,0x4,msr0         ; msr0.sie is set
513
        test_spr_bits   2,1,1,msr0              ; msr0.ovf is set
514
        test_spr_bits   1,0,1,msr0              ; msr0.aovf is set
515
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt is set
516
        test_accg_immed         0x80,accg0
517
        test_acc_immed  0,acc0
518
        test_accg_immed         0x80,accg1
519
        test_acc_immed  0,acc1
520
 
521
        ; Positive operands
522
        set_spr_immed   0x0,msr0
523
        set_accg_immed  0x0,accg0
524
        set_acc_immed   0x0,acc0
525
        set_accg_immed  0x0,accg1
526
        set_acc_immed   0x0,acc1
527
        set_fr_iimmed   2,3,fr7         ; multiply small numbers
528
        set_fr_iimmed   3,2,fr8
529
        cmmachs         fr7,fr8,acc0,cc0,0
530
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
531
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
532
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
533
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
534
        test_accg_immed         0,accg0
535
        test_acc_immed  0,acc0
536
        test_accg_immed         0,accg1
537
        test_acc_immed  0,acc1
538
 
539
        set_fr_iimmed   0,1,fr7         ; multiply by 0
540
        set_fr_iimmed   2,0,fr8
541
        cmmachs         fr7,fr8,acc0,cc0,0
542
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
543
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
544
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
545
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
546
        test_accg_immed         0,accg0
547
        test_acc_immed  0,acc0
548
        test_accg_immed         0,accg1
549
        test_acc_immed  0,acc1
550
 
551
        set_fr_iimmed   2,1,fr7         ; multiply by 1
552
        set_fr_iimmed   1,2,fr8
553
        cmmachs         fr7,fr8,acc0,cc0,0
554
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
555
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
556
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
557
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
558
        test_accg_immed         0,accg0
559
        test_acc_immed  0,acc0
560
        test_accg_immed         0,accg1
561
        test_acc_immed  0,acc1
562
 
563
        set_fr_iimmed   0x3fff,2,fr7    ; 15 bit result
564
        set_fr_iimmed   2,0x3fff,fr8
565
        cmmachs         fr7,fr8,acc0,cc0,0
566
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
567
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
568
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
569
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
570
        test_accg_immed         0,accg0
571
        test_acc_immed  0,acc0
572
        test_accg_immed         0,accg1
573
        test_acc_immed  0,acc1
574
 
575
        set_fr_iimmed   0x4000,2,fr7    ; 16 bit result
576
        set_fr_iimmed   2,0x4000,fr8
577
        cmmachs         fr7,fr8,acc0,cc0,0
578
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
579
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
580
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
581
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
582
        test_accg_immed         0,accg0
583
        test_acc_immed  0,acc0
584
        test_accg_immed         0,accg1
585
        test_acc_immed  0,acc1
586
 
587
        set_fr_iimmed   0x7fff,0x7fff,fr7       ; max positive result
588
        set_fr_iimmed   0x7fff,0x7fff,fr8
589
        cmmachs         fr7,fr8,acc0,cc0,0
590
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
591
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
592
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
593
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
594
        test_accg_immed         0,accg0
595
        test_acc_immed  0,acc0
596
        test_accg_immed         0,accg1
597
        test_acc_immed  0,acc1
598
 
599
        ; Mixed operands
600
        set_fr_iimmed   2,0xfffd,fr7            ; multiply small numbers
601
        set_fr_iimmed   0xfffd,2,fr8
602
        cmmachs         fr7,fr8,acc0,cc0,0
603
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
604
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
605
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
606
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
607
        test_accg_immed         0,accg0
608
        test_acc_immed  0,acc0
609
        test_accg_immed         0,accg1
610
        test_acc_immed  0,acc1
611
 
612
        set_fr_iimmed   0xfffe,1,fr7            ; multiply by 1
613
        set_fr_iimmed   1,0xfffe,fr8
614
        cmmachs         fr7,fr8,acc0,cc0,0
615
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
616
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
617
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
618
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
619
        test_accg_immed         0,accg0
620
        test_acc_immed  0,acc0
621
        test_accg_immed         0,accg1
622
        test_acc_immed  0,acc1
623
 
624
        set_fr_iimmed   0xfffe,0,fr7            ; multiply by 0
625
        set_fr_iimmed   0,0xfffe,fr8
626
        cmmachs         fr7,fr8,acc0,cc0,0
627
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
628
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
629
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
630
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
631
        test_accg_immed         0,accg0
632
        test_acc_immed  0,acc0
633
        test_accg_immed         0,accg1
634
        test_acc_immed  0,acc1
635
 
636
        set_fr_iimmed   0x2001,0xfffe,fr7       ; 15 bit result
637
        set_fr_iimmed   0xfffe,0x2001,fr8
638
        cmmachs         fr7,fr8,acc0,cc0,0
639
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
640
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
641
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
642
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
643
        test_accg_immed         0,accg0
644
        test_acc_immed  0,acc0
645
        test_accg_immed         0,accg1
646
        test_acc_immed  0,acc1
647
 
648
        set_fr_iimmed   0x4000,0xfffe,fr7       ; 16 bit result
649
        set_fr_iimmed   0xfffe,0x4000,fr8
650
        cmmachs         fr7,fr8,acc0,cc4,0
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         0,accg0
656
        test_acc_immed  0,acc0
657
        test_accg_immed         0,accg1
658
        test_acc_immed  0,acc1
659
 
660
        set_fr_iimmed   0x7fff,0x8000,fr7       ; max negative result
661
        set_fr_iimmed   0x8000,0x7fff,fr8
662
        cmmachs         fr7,fr8,acc0,cc4,0
663
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
664
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
665
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
666
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
667
        test_accg_immed         0,accg0
668
        test_acc_immed  0,acc0
669
        test_accg_immed         0,accg1
670
        test_acc_immed  0,acc1
671
 
672
        ; Negative operands
673
        set_fr_iimmed   0xfffe,0xfffd,fr7               ; multiply small numbers
674
        set_fr_iimmed   0xfffd,0xfffe,fr8
675
        cmmachs         fr7,fr8,acc0,cc4,0
676
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
677
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
678
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
679
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
680
        test_accg_immed         0,accg0
681
        test_acc_immed  0,acc0
682
        test_accg_immed         0,accg1
683
        test_acc_immed  0,acc1
684
 
685
        set_fr_iimmed   0xffff,0xfffe,fr7               ; multiply by -1
686
        set_fr_iimmed   0xfffe,0xffff,fr8
687
        cmmachs         fr7,fr8,acc0,cc4,0
688
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
689
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
690
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
691
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
692
        test_accg_immed         0,accg0
693
        test_acc_immed  0,acc0
694
        test_accg_immed         0,accg1
695
        test_acc_immed  0,acc1
696
 
697
        set_fr_iimmed   0x8001,0x8001,fr7       ; almost max positive result
698
        set_fr_iimmed   0x8001,0x8001,fr8
699
        cmmachs         fr7,fr8,acc0,cc4,0
700
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
701
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
702
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
703
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
704
        test_accg_immed         0,accg0
705
        test_acc_immed  0,acc0
706
        test_accg_immed         0,accg1
707
        test_acc_immed  0,acc1
708
 
709
        set_fr_iimmed   0x8000,0x8000,fr7       ; max positive result
710
        set_fr_iimmed   0x8000,0x8000,fr8
711
        cmmachs         fr7,fr8,acc0,cc4,0
712
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
713
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
714
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
715
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
716
        test_accg_immed         0,accg0
717
        test_acc_immed  0,acc0
718
        test_accg_immed         0,accg1
719
        test_acc_immed  0,acc1
720
 
721
        set_accg_immed  0x7f,accg0              ; saturation
722
        set_acc_immed   0xffffffff,acc0
723
        set_accg_immed  0x7f,accg1
724
        set_acc_immed   0xffffffff,acc1
725
        set_fr_iimmed   1,1,fr7
726
        set_fr_iimmed   1,1,fr8
727
        cmmachs         fr7,fr8,acc0,cc4,0
728
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
729
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
730
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
731
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
732
        test_accg_immed         0x7f,accg0              ; saturation
733
        test_acc_immed  0xffffffff,acc0
734
        test_accg_immed         0x7f,accg1
735
        test_acc_immed  0xffffffff,acc1
736
 
737
        set_fr_iimmed   0x7fff,0x7fff,fr7       ; saturation
738
        set_fr_iimmed   0x7fff,0x7fff,fr8
739
        cmmachs         fr7,fr8,acc0,cc4,0
740
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
741
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
742
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
743
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
744
        test_accg_immed         0x7f,accg0              ; saturation
745
        test_acc_immed  0xffffffff,acc0
746
        test_accg_immed         0x7f,accg1
747
        test_acc_immed  0xffffffff,acc1
748
 
749
        set_accg_immed  0x80,accg0              ; saturation
750
        set_acc_immed   0,acc0
751
        set_accg_immed  0x80,accg1
752
        set_acc_immed   0,acc1
753
        set_fr_iimmed   0xffff,0,fr7
754
        set_fr_iimmed   1,0xffff,fr8
755
        cmmachs         fr7,fr8,acc0,cc4,0
756
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
757
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
758
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
759
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
760
        test_accg_immed         0x80,accg0              ; saturation
761
        test_acc_immed  0,acc0
762
        test_accg_immed         0x80,accg1
763
        test_acc_immed  0,acc1
764
 
765
        set_fr_iimmed   0x0000,0x8000,fr7       ; saturation
766
        set_fr_iimmed   0x7fff,0x7fff,fr8
767
        cmmachs         fr7,fr8,acc0,cc4,0
768
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
769
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
770
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
771
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
772
        test_accg_immed         0x80,accg0              ; saturation
773
        test_acc_immed  0,acc0
774
        test_accg_immed         0x80,accg1
775
        test_acc_immed  0,acc1
776
 
777
        ; Positive operands
778
        set_spr_immed   0x0,msr0
779
        set_accg_immed  0x0,accg0
780
        set_acc_immed   0x0,acc0
781
        set_accg_immed  0x0,accg1
782
        set_acc_immed   0x0,acc1
783
        set_fr_iimmed   2,3,fr7         ; multiply small numbers
784
        set_fr_iimmed   3,2,fr8
785
        cmmachs         fr7,fr8,acc0,cc1,1
786
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
787
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
788
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
789
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
790
        test_accg_immed         0,accg0
791
        test_acc_immed  0,acc0
792
        test_accg_immed         0,accg1
793
        test_acc_immed  0,acc1
794
 
795
        set_fr_iimmed   0,1,fr7         ; multiply by 0
796
        set_fr_iimmed   2,0,fr8
797
        cmmachs         fr7,fr8,acc0,cc1,1
798
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
799
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
800
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
801
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
802
        test_accg_immed         0,accg0
803
        test_acc_immed  0,acc0
804
        test_accg_immed         0,accg1
805
        test_acc_immed  0,acc1
806
 
807
        set_fr_iimmed   2,1,fr7         ; multiply by 1
808
        set_fr_iimmed   1,2,fr8
809
        cmmachs         fr7,fr8,acc0,cc1,1
810
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
811
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
812
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
813
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
814
        test_accg_immed         0,accg0
815
        test_acc_immed  0,acc0
816
        test_accg_immed         0,accg1
817
        test_acc_immed  0,acc1
818
 
819
        set_fr_iimmed   0x3fff,2,fr7    ; 15 bit result
820
        set_fr_iimmed   2,0x3fff,fr8
821
        cmmachs         fr7,fr8,acc0,cc1,1
822
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
823
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
824
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
825
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
826
        test_accg_immed         0,accg0
827
        test_acc_immed  0,acc0
828
        test_accg_immed         0,accg1
829
        test_acc_immed  0,acc1
830
 
831
        set_fr_iimmed   0x4000,2,fr7    ; 16 bit result
832
        set_fr_iimmed   2,0x4000,fr8
833
        cmmachs         fr7,fr8,acc0,cc1,1
834
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
835
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
836
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
837
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
838
        test_accg_immed         0,accg0
839
        test_acc_immed  0,acc0
840
        test_accg_immed         0,accg1
841
        test_acc_immed  0,acc1
842
 
843
        set_fr_iimmed   0x7fff,0x7fff,fr7       ; max positive result
844
        set_fr_iimmed   0x7fff,0x7fff,fr8
845
        cmmachs         fr7,fr8,acc0,cc1,1
846
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
847
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
848
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
849
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
850
        test_accg_immed         0,accg0
851
        test_acc_immed  0,acc0
852
        test_accg_immed         0,accg1
853
        test_acc_immed  0,acc1
854
 
855
        ; Mixed operands
856
        set_fr_iimmed   2,0xfffd,fr7            ; multiply small numbers
857
        set_fr_iimmed   0xfffd,2,fr8
858
        cmmachs         fr7,fr8,acc0,cc1,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         0,accg0
864
        test_acc_immed  0,acc0
865
        test_accg_immed         0,accg1
866
        test_acc_immed  0,acc1
867
 
868
        set_fr_iimmed   0xfffe,1,fr7            ; multiply by 1
869
        set_fr_iimmed   1,0xfffe,fr8
870
        cmmachs         fr7,fr8,acc0,cc1,1
871
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
872
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
873
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
874
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
875
        test_accg_immed         0,accg0
876
        test_acc_immed  0,acc0
877
        test_accg_immed         0,accg1
878
        test_acc_immed  0,acc1
879
 
880
        set_fr_iimmed   0xfffe,0,fr7            ; multiply by 0
881
        set_fr_iimmed   0,0xfffe,fr8
882
        cmmachs         fr7,fr8,acc0,cc1,1
883
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
884
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
885
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
886
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
887
        test_accg_immed         0,accg0
888
        test_acc_immed  0,acc0
889
        test_accg_immed         0,accg1
890
        test_acc_immed  0,acc1
891
 
892
        set_fr_iimmed   0x2001,0xfffe,fr7       ; 15 bit result
893
        set_fr_iimmed   0xfffe,0x2001,fr8
894
        cmmachs         fr7,fr8,acc0,cc1,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         0,accg0
900
        test_acc_immed  0,acc0
901
        test_accg_immed         0,accg1
902
        test_acc_immed  0,acc1
903
 
904
        set_fr_iimmed   0x4000,0xfffe,fr7       ; 16 bit result
905
        set_fr_iimmed   0xfffe,0x4000,fr8
906
        cmmachs         fr7,fr8,acc0,cc5,1
907
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
908
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
909
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
910
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
911
        test_accg_immed         0,accg0
912
        test_acc_immed  0,acc0
913
        test_accg_immed         0,accg1
914
        test_acc_immed  0,acc1
915
 
916
        set_fr_iimmed   0x7fff,0x8000,fr7       ; max negative result
917
        set_fr_iimmed   0x8000,0x7fff,fr8
918
        cmmachs         fr7,fr8,acc0,cc5,1
919
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
920
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
921
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
922
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
923
        test_accg_immed         0,accg0
924
        test_acc_immed  0,acc0
925
        test_accg_immed         0,accg1
926
        test_acc_immed  0,acc1
927
 
928
        ; Negative operands
929
        set_fr_iimmed   0xfffe,0xfffd,fr7               ; multiply small numbers
930
        set_fr_iimmed   0xfffd,0xfffe,fr8
931
        cmmachs         fr7,fr8,acc0,cc5,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         0,accg0
937
        test_acc_immed  0,acc0
938
        test_accg_immed         0,accg1
939
        test_acc_immed  0,acc1
940
 
941
        set_fr_iimmed   0xffff,0xfffe,fr7               ; multiply by -1
942
        set_fr_iimmed   0xfffe,0xffff,fr8
943
        cmmachs         fr7,fr8,acc0,cc5,1
944
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
945
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
946
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
947
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
948
        test_accg_immed         0,accg0
949
        test_acc_immed  0,acc0
950
        test_accg_immed         0,accg1
951
        test_acc_immed  0,acc1
952
 
953
        set_fr_iimmed   0x8001,0x8001,fr7       ; almost max positive result
954
        set_fr_iimmed   0x8001,0x8001,fr8
955
        cmmachs         fr7,fr8,acc0,cc5,1
956
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
957
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
958
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
959
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
960
        test_accg_immed         0,accg0
961
        test_acc_immed  0,acc0
962
        test_accg_immed         0,accg1
963
        test_acc_immed  0,acc1
964
 
965
        set_fr_iimmed   0x8000,0x8000,fr7       ; max positive result
966
        set_fr_iimmed   0x8000,0x8000,fr8
967
        cmmachs         fr7,fr8,acc0,cc5,1
968
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
969
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
970
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
971
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
972
        test_accg_immed         0,accg0
973
        test_acc_immed  0,acc0
974
        test_accg_immed         0,accg1
975
        test_acc_immed  0,acc1
976
 
977
        set_accg_immed  0x7f,accg0              ; saturation
978
        set_acc_immed   0xffffffff,acc0
979
        set_accg_immed  0x7f,accg1
980
        set_acc_immed   0xffffffff,acc1
981
        set_fr_iimmed   1,1,fr7
982
        set_fr_iimmed   1,1,fr8
983
        cmmachs         fr7,fr8,acc0,cc5,1
984
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
985
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
986
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
987
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
988
        test_accg_immed         0x7f,accg0              ; saturation
989
        test_acc_immed  0xffffffff,acc0
990
        test_accg_immed         0x7f,accg1
991
        test_acc_immed  0xffffffff,acc1
992
 
993
        set_fr_iimmed   0x7fff,0x7fff,fr7       ; saturation
994
        set_fr_iimmed   0x7fff,0x7fff,fr8
995
        cmmachs         fr7,fr8,acc0,cc5,1
996
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
997
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
998
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
999
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1000
        test_accg_immed         0x7f,accg0              ; saturation
1001
        test_acc_immed  0xffffffff,acc0
1002
        test_accg_immed         0x7f,accg1
1003
        test_acc_immed  0xffffffff,acc1
1004
 
1005
        set_accg_immed  0x80,accg0              ; saturation
1006
        set_acc_immed   0,acc0
1007
        set_accg_immed  0x80,accg1
1008
        set_acc_immed   0,acc1
1009
        set_fr_iimmed   0xffff,0,fr7
1010
        set_fr_iimmed   1,0xffff,fr8
1011
        cmmachs         fr7,fr8,acc0,cc5,1
1012
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1013
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1014
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1015
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1016
        test_accg_immed         0x80,accg0              ; saturation
1017
        test_acc_immed  0,acc0
1018
        test_accg_immed         0x80,accg1
1019
        test_acc_immed  0,acc1
1020
 
1021
        set_fr_iimmed   0x0000,0x8000,fr7       ; saturation
1022
        set_fr_iimmed   0x7fff,0x7fff,fr8
1023
        cmmachs         fr7,fr8,acc0,cc5,1
1024
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1025
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1026
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1027
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1028
        test_accg_immed         0x80,accg0              ; saturation
1029
        test_acc_immed  0,acc0
1030
        test_accg_immed         0x80,accg1
1031
        test_acc_immed  0,acc1
1032
 
1033
        ; Positive operands
1034
        set_spr_immed   0x0,msr0
1035
        set_accg_immed  0x0,accg0
1036
        set_acc_immed   0x0,acc0
1037
        set_accg_immed  0x0,accg1
1038
        set_acc_immed   0x0,acc1
1039
        set_fr_iimmed   2,3,fr7         ; multiply small numbers
1040
        set_fr_iimmed   3,2,fr8
1041
        cmmachs         fr7,fr8,acc0,cc2,1
1042
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1043
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1044
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1045
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1046
        test_accg_immed         0,accg0
1047
        test_acc_immed  0,acc0
1048
        test_accg_immed         0,accg1
1049
        test_acc_immed  0,acc1
1050
 
1051
        set_fr_iimmed   0,1,fr7         ; multiply by 0
1052
        set_fr_iimmed   2,0,fr8
1053
        cmmachs         fr7,fr8,acc0,cc2,0
1054
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1055
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1056
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1057
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1058
        test_accg_immed         0,accg0
1059
        test_acc_immed  0,acc0
1060
        test_accg_immed         0,accg1
1061
        test_acc_immed  0,acc1
1062
 
1063
        set_fr_iimmed   2,1,fr7         ; multiply by 1
1064
        set_fr_iimmed   1,2,fr8
1065
        cmmachs         fr7,fr8,acc0,cc2,1
1066
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1067
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1068
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1069
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1070
        test_accg_immed         0,accg0
1071
        test_acc_immed  0,acc0
1072
        test_accg_immed         0,accg1
1073
        test_acc_immed  0,acc1
1074
 
1075
        set_fr_iimmed   0x3fff,2,fr7    ; 15 bit result
1076
        set_fr_iimmed   2,0x3fff,fr8
1077
        cmmachs         fr7,fr8,acc0,cc2,0
1078
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1079
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1080
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1081
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1082
        test_accg_immed         0,accg0
1083
        test_acc_immed  0,acc0
1084
        test_accg_immed         0,accg1
1085
        test_acc_immed  0,acc1
1086
 
1087
        set_fr_iimmed   0x4000,2,fr7    ; 16 bit result
1088
        set_fr_iimmed   2,0x4000,fr8
1089
        cmmachs         fr7,fr8,acc0,cc2,1
1090
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1091
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1092
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1093
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1094
        test_accg_immed         0,accg0
1095
        test_acc_immed  0,acc0
1096
        test_accg_immed         0,accg1
1097
        test_acc_immed  0,acc1
1098
 
1099
        set_fr_iimmed   0x7fff,0x7fff,fr7       ; max positive result
1100
        set_fr_iimmed   0x7fff,0x7fff,fr8
1101
        cmmachs         fr7,fr8,acc0,cc2,0
1102
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1103
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1104
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1105
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1106
        test_accg_immed         0,accg0
1107
        test_acc_immed  0,acc0
1108
        test_accg_immed         0,accg1
1109
        test_acc_immed  0,acc1
1110
 
1111
        ; Mixed operands
1112
        set_fr_iimmed   2,0xfffd,fr7            ; multiply small numbers
1113
        set_fr_iimmed   0xfffd,2,fr8
1114
        cmmachs         fr7,fr8,acc0,cc2,1
1115
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1116
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1117
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1118
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1119
        test_accg_immed         0,accg0
1120
        test_acc_immed  0,acc0
1121
        test_accg_immed         0,accg1
1122
        test_acc_immed  0,acc1
1123
 
1124
        set_fr_iimmed   0xfffe,1,fr7            ; multiply by 1
1125
        set_fr_iimmed   1,0xfffe,fr8
1126
        cmmachs         fr7,fr8,acc0,cc2,0
1127
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1128
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1129
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1130
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1131
        test_accg_immed         0,accg0
1132
        test_acc_immed  0,acc0
1133
        test_accg_immed         0,accg1
1134
        test_acc_immed  0,acc1
1135
 
1136
        set_fr_iimmed   0xfffe,0,fr7            ; multiply by 0
1137
        set_fr_iimmed   0,0xfffe,fr8
1138
        cmmachs         fr7,fr8,acc0,cc2,1
1139
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1140
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1141
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1142
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1143
        test_accg_immed         0,accg0
1144
        test_acc_immed  0,acc0
1145
        test_accg_immed         0,accg1
1146
        test_acc_immed  0,acc1
1147
 
1148
        set_fr_iimmed   0x2001,0xfffe,fr7       ; 15 bit result
1149
        set_fr_iimmed   0xfffe,0x2001,fr8
1150
        cmmachs         fr7,fr8,acc0,cc2,0
1151
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1152
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1153
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1154
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1155
        test_accg_immed         0,accg0
1156
        test_acc_immed  0,acc0
1157
        test_accg_immed         0,accg1
1158
        test_acc_immed  0,acc1
1159
 
1160
        set_fr_iimmed   0x4000,0xfffe,fr7       ; 16 bit result
1161
        set_fr_iimmed   0xfffe,0x4000,fr8
1162
        cmmachs         fr7,fr8,acc0,cc6,1
1163
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1164
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1165
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1166
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1167
        test_accg_immed         0,accg0
1168
        test_acc_immed  0,acc0
1169
        test_accg_immed         0,accg1
1170
        test_acc_immed  0,acc1
1171
 
1172
        set_fr_iimmed   0x7fff,0x8000,fr7       ; max negative result
1173
        set_fr_iimmed   0x8000,0x7fff,fr8
1174
        cmmachs         fr7,fr8,acc0,cc6,0
1175
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1176
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1177
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1178
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1179
        test_accg_immed         0,accg0
1180
        test_acc_immed  0,acc0
1181
        test_accg_immed         0,accg1
1182
        test_acc_immed  0,acc1
1183
 
1184
        ; Negative operands
1185
        set_fr_iimmed   0xfffe,0xfffd,fr7               ; multiply small numbers
1186
        set_fr_iimmed   0xfffd,0xfffe,fr8
1187
        cmmachs         fr7,fr8,acc0,cc6,1
1188
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1189
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1190
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1191
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1192
        test_accg_immed         0,accg0
1193
        test_acc_immed  0,acc0
1194
        test_accg_immed         0,accg1
1195
        test_acc_immed  0,acc1
1196
 
1197
        set_fr_iimmed   0xffff,0xfffe,fr7               ; multiply by -1
1198
        set_fr_iimmed   0xfffe,0xffff,fr8
1199
        cmmachs         fr7,fr8,acc0,cc6,0
1200
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1201
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1202
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1203
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1204
        test_accg_immed         0,accg0
1205
        test_acc_immed  0,acc0
1206
        test_accg_immed         0,accg1
1207
        test_acc_immed  0,acc1
1208
 
1209
        set_fr_iimmed   0x8001,0x8001,fr7       ; almost max positive result
1210
        set_fr_iimmed   0x8001,0x8001,fr8
1211
        cmmachs         fr7,fr8,acc0,cc6,1
1212
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1213
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1214
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1215
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1216
        test_accg_immed         0,accg0
1217
        test_acc_immed  0,acc0
1218
        test_accg_immed         0,accg1
1219
        test_acc_immed  0,acc1
1220
 
1221
        set_fr_iimmed   0x8000,0x8000,fr7       ; max positive result
1222
        set_fr_iimmed   0x8000,0x8000,fr8
1223
        cmmachs         fr7,fr8,acc0,cc6,0
1224
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1225
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1226
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1227
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1228
        test_accg_immed         0,accg0
1229
        test_acc_immed  0,acc0
1230
        test_accg_immed         0,accg1
1231
        test_acc_immed  0,acc1
1232
 
1233
        set_accg_immed  0x7f,accg0              ; saturation
1234
        set_acc_immed   0xffffffff,acc0
1235
        set_accg_immed  0x7f,accg1
1236
        set_acc_immed   0xffffffff,acc1
1237
        set_fr_iimmed   1,1,fr7
1238
        set_fr_iimmed   1,1,fr8
1239
        cmmachs         fr7,fr8,acc0,cc6,1
1240
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1241
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1242
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1243
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1244
        test_accg_immed         0x7f,accg0              ; saturation
1245
        test_acc_immed  0xffffffff,acc0
1246
        test_accg_immed         0x7f,accg1
1247
        test_acc_immed  0xffffffff,acc1
1248
 
1249
        set_fr_iimmed   0x7fff,0x7fff,fr7       ; saturation
1250
        set_fr_iimmed   0x7fff,0x7fff,fr8
1251
        cmmachs         fr7,fr8,acc0,cc6,0
1252
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1253
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1254
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1255
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1256
        test_accg_immed         0x7f,accg0              ; saturation
1257
        test_acc_immed  0xffffffff,acc0
1258
        test_accg_immed         0x7f,accg1
1259
        test_acc_immed  0xffffffff,acc1
1260
 
1261
        set_accg_immed  0x80,accg0              ; saturation
1262
        set_acc_immed   0,acc0
1263
        set_accg_immed  0x80,accg1
1264
        set_acc_immed   0,acc1
1265
        set_fr_iimmed   0xffff,0,fr7
1266
        set_fr_iimmed   1,0xffff,fr8
1267
        cmmachs         fr7,fr8,acc0,cc6,1
1268
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1269
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1270
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1271
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1272
        test_accg_immed         0x80,accg0              ; saturation
1273
        test_acc_immed  0,acc0
1274
        test_accg_immed         0x80,accg1
1275
        test_acc_immed  0,acc1
1276
 
1277
        set_fr_iimmed   0x0000,0x8000,fr7       ; saturation
1278
        set_fr_iimmed   0x7fff,0x7fff,fr8
1279
        cmmachs         fr7,fr8,acc0,cc6,0
1280
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1281
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1282
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1283
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1284
        test_accg_immed         0x80,accg0              ; saturation
1285
        test_acc_immed  0,acc0
1286
        test_accg_immed         0x80,accg1
1287
        test_acc_immed  0,acc1
1288
;
1289
        ; Positive operands
1290
        set_spr_immed   0x0,msr0
1291
        set_accg_immed  0x0,accg0
1292
        set_acc_immed   0x0,acc0
1293
        set_accg_immed  0x0,accg1
1294
        set_acc_immed   0x0,acc1
1295
        set_fr_iimmed   2,3,fr7         ; multiply small numbers
1296
        set_fr_iimmed   3,2,fr8
1297
        cmmachs         fr7,fr8,acc0,cc3,1
1298
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1299
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1300
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1301
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1302
        test_accg_immed         0,accg0
1303
        test_acc_immed  0,acc0
1304
        test_accg_immed         0,accg1
1305
        test_acc_immed  0,acc1
1306
 
1307
        set_fr_iimmed   0,1,fr7         ; multiply by 0
1308
        set_fr_iimmed   2,0,fr8
1309
        cmmachs         fr7,fr8,acc0,cc3,0
1310
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1311
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1312
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1313
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1314
        test_accg_immed         0,accg0
1315
        test_acc_immed  0,acc0
1316
        test_accg_immed         0,accg1
1317
        test_acc_immed  0,acc1
1318
 
1319
        set_fr_iimmed   2,1,fr7         ; multiply by 1
1320
        set_fr_iimmed   1,2,fr8
1321
        cmmachs         fr7,fr8,acc0,cc3,1
1322
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1323
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1324
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1325
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1326
        test_accg_immed         0,accg0
1327
        test_acc_immed  0,acc0
1328
        test_accg_immed         0,accg1
1329
        test_acc_immed  0,acc1
1330
 
1331
        set_fr_iimmed   0x3fff,2,fr7    ; 15 bit result
1332
        set_fr_iimmed   2,0x3fff,fr8
1333
        cmmachs         fr7,fr8,acc0,cc3,0
1334
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1335
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1336
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1337
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1338
        test_accg_immed         0,accg0
1339
        test_acc_immed  0,acc0
1340
        test_accg_immed         0,accg1
1341
        test_acc_immed  0,acc1
1342
 
1343
        set_fr_iimmed   0x4000,2,fr7    ; 16 bit result
1344
        set_fr_iimmed   2,0x4000,fr8
1345
        cmmachs         fr7,fr8,acc0,cc3,1
1346
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1347
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1348
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1349
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1350
        test_accg_immed         0,accg0
1351
        test_acc_immed  0,acc0
1352
        test_accg_immed         0,accg1
1353
        test_acc_immed  0,acc1
1354
 
1355
        set_fr_iimmed   0x7fff,0x7fff,fr7       ; max positive result
1356
        set_fr_iimmed   0x7fff,0x7fff,fr8
1357
        cmmachs         fr7,fr8,acc0,cc3,0
1358
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1359
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1360
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1361
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1362
        test_accg_immed         0,accg0
1363
        test_acc_immed  0,acc0
1364
        test_accg_immed         0,accg1
1365
        test_acc_immed  0,acc1
1366
 
1367
        ; Mixed operands
1368
        set_fr_iimmed   2,0xfffd,fr7            ; multiply small numbers
1369
        set_fr_iimmed   0xfffd,2,fr8
1370
        cmmachs         fr7,fr8,acc0,cc3,1
1371
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1372
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1373
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1374
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1375
        test_accg_immed         0,accg0
1376
        test_acc_immed  0,acc0
1377
        test_accg_immed         0,accg1
1378
        test_acc_immed  0,acc1
1379
 
1380
        set_fr_iimmed   0xfffe,1,fr7            ; multiply by 1
1381
        set_fr_iimmed   1,0xfffe,fr8
1382
        cmmachs         fr7,fr8,acc0,cc3,0
1383
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1384
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1385
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1386
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1387
        test_accg_immed         0,accg0
1388
        test_acc_immed  0,acc0
1389
        test_accg_immed         0,accg1
1390
        test_acc_immed  0,acc1
1391
 
1392
        set_fr_iimmed   0xfffe,0,fr7            ; multiply by 0
1393
        set_fr_iimmed   0,0xfffe,fr8
1394
        cmmachs         fr7,fr8,acc0,cc3,1
1395
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1396
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1397
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1398
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1399
        test_accg_immed         0,accg0
1400
        test_acc_immed  0,acc0
1401
        test_accg_immed         0,accg1
1402
        test_acc_immed  0,acc1
1403
 
1404
        set_fr_iimmed   0x2001,0xfffe,fr7       ; 15 bit result
1405
        set_fr_iimmed   0xfffe,0x2001,fr8
1406
        cmmachs         fr7,fr8,acc0,cc3,0
1407
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1408
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1409
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1410
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1411
        test_accg_immed         0,accg0
1412
        test_acc_immed  0,acc0
1413
        test_accg_immed         0,accg1
1414
        test_acc_immed  0,acc1
1415
 
1416
        set_fr_iimmed   0x4000,0xfffe,fr7       ; 16 bit result
1417
        set_fr_iimmed   0xfffe,0x4000,fr8
1418
        cmmachs         fr7,fr8,acc0,cc7,1
1419
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1420
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1421
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1422
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1423
        test_accg_immed         0,accg0
1424
        test_acc_immed  0,acc0
1425
        test_accg_immed         0,accg1
1426
        test_acc_immed  0,acc1
1427
 
1428
        set_fr_iimmed   0x7fff,0x8000,fr7       ; max negative result
1429
        set_fr_iimmed   0x8000,0x7fff,fr8
1430
        cmmachs         fr7,fr8,acc0,cc7,0
1431
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1432
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1433
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1434
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1435
        test_accg_immed         0,accg0
1436
        test_acc_immed  0,acc0
1437
        test_accg_immed         0,accg1
1438
        test_acc_immed  0,acc1
1439
 
1440
        ; Negative operands
1441
        set_fr_iimmed   0xfffe,0xfffd,fr7               ; multiply small numbers
1442
        set_fr_iimmed   0xfffd,0xfffe,fr8
1443
        cmmachs         fr7,fr8,acc0,cc7,1
1444
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1445
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1446
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1447
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1448
        test_accg_immed         0,accg0
1449
        test_acc_immed  0,acc0
1450
        test_accg_immed         0,accg1
1451
        test_acc_immed  0,acc1
1452
 
1453
        set_fr_iimmed   0xffff,0xfffe,fr7               ; multiply by -1
1454
        set_fr_iimmed   0xfffe,0xffff,fr8
1455
        cmmachs         fr7,fr8,acc0,cc7,0
1456
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1457
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1458
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1459
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1460
        test_accg_immed         0,accg0
1461
        test_acc_immed  0,acc0
1462
        test_accg_immed         0,accg1
1463
        test_acc_immed  0,acc1
1464
 
1465
        set_fr_iimmed   0x8001,0x8001,fr7       ; almost max positive result
1466
        set_fr_iimmed   0x8001,0x8001,fr8
1467
        cmmachs         fr7,fr8,acc0,cc7,1
1468
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1469
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1470
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1471
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1472
        test_accg_immed         0,accg0
1473
        test_acc_immed  0,acc0
1474
        test_accg_immed         0,accg1
1475
        test_acc_immed  0,acc1
1476
 
1477
        set_fr_iimmed   0x8000,0x8000,fr7       ; max positive result
1478
        set_fr_iimmed   0x8000,0x8000,fr8
1479
        cmmachs         fr7,fr8,acc0,cc7,0
1480
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1481
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1482
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1483
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1484
        test_accg_immed         0,accg0
1485
        test_acc_immed  0,acc0
1486
        test_accg_immed         0,accg1
1487
        test_acc_immed  0,acc1
1488
 
1489
        set_accg_immed  0x7f,accg0              ; saturation
1490
        set_acc_immed   0xffffffff,acc0
1491
        set_accg_immed  0x7f,accg1
1492
        set_acc_immed   0xffffffff,acc1
1493
        set_fr_iimmed   1,1,fr7
1494
        set_fr_iimmed   1,1,fr8
1495
        cmmachs         fr7,fr8,acc0,cc7,1
1496
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1497
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1498
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1499
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1500
        test_accg_immed         0x7f,accg0              ; saturation
1501
        test_acc_immed  0xffffffff,acc0
1502
        test_accg_immed         0x7f,accg1
1503
        test_acc_immed  0xffffffff,acc1
1504
 
1505
        set_fr_iimmed   0x7fff,0x7fff,fr7       ; saturation
1506
        set_fr_iimmed   0x7fff,0x7fff,fr8
1507
        cmmachs         fr7,fr8,acc0,cc7,0
1508
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1509
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1510
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1511
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1512
        test_accg_immed         0x7f,accg0              ; saturation
1513
        test_acc_immed  0xffffffff,acc0
1514
        test_accg_immed         0x7f,accg1
1515
        test_acc_immed  0xffffffff,acc1
1516
 
1517
        set_accg_immed  0x80,accg0              ; saturation
1518
        set_acc_immed   0,acc0
1519
        set_accg_immed  0x80,accg1
1520
        set_acc_immed   0,acc1
1521
        set_fr_iimmed   0xffff,0,fr7
1522
        set_fr_iimmed   1,0xffff,fr8
1523
        cmmachs         fr7,fr8,acc0,cc7,1
1524
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1525
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1526
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1527
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1528
        test_accg_immed         0x80,accg0              ; saturation
1529
        test_acc_immed  0,acc0
1530
        test_accg_immed         0x80,accg1
1531
        test_acc_immed  0,acc1
1532
 
1533
        set_fr_iimmed   0x0000,0x8000,fr7       ; saturation
1534
        set_fr_iimmed   0x7fff,0x7fff,fr8
1535
        cmmachs         fr7,fr8,acc0,cc7,0
1536
        test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
1537
        test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
1538
        test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
1539
        test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
1540
        test_accg_immed         0x80,accg0              ; saturation
1541
        test_acc_immed  0,acc0
1542
        test_accg_immed         0x80,accg1
1543
        test_acc_immed  0,acc1
1544
 
1545
        pass

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.