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