]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - sim/testsuite/sim/frv/fr550/cmcpxru.cgs
This commit was manufactured by cvs2svn to create branch
[thirdparty/binutils-gdb.git] / sim / testsuite / sim / frv / fr550 / cmcpxru.cgs
1 # frv testcase for cmcpxru $GRi,$GRj,$GRk,$CCi,$cond
2 # mach: all
3
4 .include "../testutils.inc"
5
6 start
7
8 .global cmcpxru
9 cmcpxru:
10 set_spr_immed 0x1b1b,cccr
11
12 set_fr_iimmed 4,2,fr7 ; multiply small numbers
13 set_fr_iimmed 5,3,fr8
14 cmcpxru fr7,fr8,acc0,cc0,1
15 test_accg_immed 0,accg0
16 test_acc_immed 14,acc0
17
18 set_fr_iimmed 1,2,fr7 ; multiply by 1
19 set_fr_iimmed 3,1,fr8
20 cmcpxru fr7,fr8,acc0,cc0,1
21 test_accg_immed 0,accg0
22 test_acc_immed 1,acc0
23
24 set_fr_iimmed 0,2,fr7 ; multiply by 0
25 set_fr_iimmed 2,0,fr8
26 cmcpxru fr7,fr8,acc0,cc0,1
27 test_accg_immed 0,accg0
28 test_acc_immed 0,acc0
29
30 set_fr_iimmed 0x3fff,1,fr7 ; 15 bit result
31 set_fr_iimmed 2,0x0001,fr8
32 cmcpxru fr7,fr8,acc0,cc0,1
33 test_accg_immed 0,accg0
34 test_acc_limmed 0x0000,0x7ffd,acc0
35
36 set_fr_iimmed 0x4000,1,fr7 ; 16 bit result
37 set_fr_iimmed 4,0x0001,fr8
38 cmcpxru fr7,fr8,acc0,cc0,1
39 test_accg_immed 0,accg0
40 test_acc_limmed 0x0000,0xffff,acc0
41
42 set_fr_iimmed 0x8000,1,fr7 ; 17 bit result
43 set_fr_iimmed 4,0x0001,fr8
44 cmcpxru fr7,fr8,acc0,cc0,1
45 test_accg_immed 0,accg0
46 test_acc_immed 0x0001ffff,acc0
47
48 set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
49 set_fr_iimmed 0x7fff,0x7fff,fr8
50 cmcpxru fr7,fr8,acc0,cc4,1
51 test_accg_immed 0,accg0
52 test_acc_immed 0x3fff0001,acc0
53
54 set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result
55 set_fr_iimmed 0x8000,0x0000,fr8
56 cmcpxru fr7,fr8,acc0,cc4,1
57 test_accg_immed 0,accg0
58 test_acc_limmed 0x4000,0x0000,acc0
59
60 set_fr_iimmed 0xffff,0x0000,fr7 ; max positive result
61 set_fr_iimmed 0xffff,0xffff,fr8
62 cmcpxru fr7,fr8,acc0,cc4,1
63 test_accg_immed 0,accg0
64 test_acc_limmed 0xfffe,0x0001,acc0
65
66 set_fr_iimmed 0x0000,0x0001,fr7 ; saturation
67 set_fr_iimmed 0xffff,0x0001,fr8
68 cmcpxru fr7,fr8,acc0,cc4,1
69 test_spr_bits 0x3c,2,0x8,msr0 ; msr0.sie is set
70 test_spr_bits 2,1,1,msr0 ; msr0.ovf is set
71 test_spr_bits 1,0,1,msr0 ; msr0.aovf is set
72 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set
73 test_accg_immed 0,accg0
74 test_acc_immed 0,acc0
75
76 set_fr_iimmed 0x0000,0xffff,fr7 ; saturation
77 set_fr_iimmed 0xffff,0xffff,fr8
78 cmcpxru fr7,fr8,acc0,cc4,1
79 test_spr_bits 0x3c,2,0x8,msr0 ; msr0.sie is set
80 test_spr_bits 2,1,1,msr0 ; msr0.ovf is set
81 test_spr_bits 1,0,1,msr0 ; msr0.aovf is set
82 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set
83 test_accg_immed 0,accg0
84 test_acc_immed 0,acc0
85
86 set_fr_iimmed 0xfffe,0xffff,fr7 ; saturation
87 set_fr_iimmed 0xffff,0xffff,fr8
88 cmcpxru fr7,fr8,acc0,cc4,1
89 test_spr_bits 0x3c,2,0x8,msr0 ; msr0.sie is set
90 test_spr_bits 2,1,1,msr0 ; msr0.ovf is set
91 test_spr_bits 1,0,1,msr0 ; msr0.aovf is set
92 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set
93 test_accg_immed 0,accg0
94 test_acc_immed 0,acc0
95
96 set_fr_iimmed 4,2,fr7 ; multiply small numbers
97 set_fr_iimmed 5,3,fr8
98 cmcpxru fr7,fr8,acc0,cc1,0
99 test_accg_immed 0,accg0
100 test_acc_immed 14,acc0
101
102 set_fr_iimmed 1,2,fr7 ; multiply by 1
103 set_fr_iimmed 3,1,fr8
104 cmcpxru fr7,fr8,acc0,cc1,0
105 test_accg_immed 0,accg0
106 test_acc_immed 1,acc0
107
108 set_fr_iimmed 0,2,fr7 ; multiply by 0
109 set_fr_iimmed 2,0,fr8
110 cmcpxru fr7,fr8,acc0,cc1,0
111 test_accg_immed 0,accg0
112 test_acc_immed 0,acc0
113
114 set_fr_iimmed 0x3fff,1,fr7 ; 15 bit result
115 set_fr_iimmed 2,0x0001,fr8
116 cmcpxru fr7,fr8,acc0,cc1,0
117 test_accg_immed 0,accg0
118 test_acc_limmed 0x0000,0x7ffd,acc0
119
120 set_fr_iimmed 0x4000,1,fr7 ; 16 bit result
121 set_fr_iimmed 4,0x0001,fr8
122 cmcpxru fr7,fr8,acc0,cc1,0
123 test_accg_immed 0,accg0
124 test_acc_limmed 0x0000,0xffff,acc0
125
126 set_fr_iimmed 0x8000,1,fr7 ; 17 bit result
127 set_fr_iimmed 4,0x0001,fr8
128 cmcpxru fr7,fr8,acc0,cc1,0
129 test_accg_immed 0,accg0
130 test_acc_immed 0x0001ffff,acc0
131
132 set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
133 set_fr_iimmed 0x7fff,0x7fff,fr8
134 cmcpxru fr7,fr8,acc0,cc5,0
135 test_accg_immed 0,accg0
136 test_acc_immed 0x3fff0001,acc0
137
138 set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result
139 set_fr_iimmed 0x8000,0x0000,fr8
140 cmcpxru fr7,fr8,acc0,cc5,0
141 test_accg_immed 0,accg0
142 test_acc_limmed 0x4000,0x0000,acc0
143
144 set_fr_iimmed 0xffff,0x0000,fr7 ; max positive result
145 set_fr_iimmed 0xffff,0xffff,fr8
146 cmcpxru fr7,fr8,acc0,cc5,0
147 test_accg_immed 0,accg0
148 test_acc_limmed 0xfffe,0x0001,acc0
149
150 set_fr_iimmed 0x0000,0x0001,fr7 ; saturation
151 set_fr_iimmed 0xffff,0x0001,fr8
152 cmcpxru fr7,fr8,acc0,cc5,0
153 test_spr_bits 0x3c,2,0x8,msr0 ; msr0.sie is set
154 test_spr_bits 2,1,1,msr0 ; msr0.ovf is set
155 test_spr_bits 1,0,1,msr0 ; msr0.aovf is set
156 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set
157 test_accg_immed 0,accg0
158 test_acc_immed 0,acc0
159
160 set_fr_iimmed 0x0000,0xffff,fr7 ; saturation
161 set_fr_iimmed 0xffff,0xffff,fr8
162 cmcpxru fr7,fr8,acc0,cc5,0
163 test_spr_bits 0x3c,2,0x8,msr0 ; msr0.sie is set
164 test_spr_bits 2,1,1,msr0 ; msr0.ovf is set
165 test_spr_bits 1,0,1,msr0 ; msr0.aovf is set
166 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set
167 test_accg_immed 0,accg0
168 test_acc_immed 0,acc0
169
170 set_fr_iimmed 0xfffe,0xffff,fr7 ; saturation
171 set_fr_iimmed 0xffff,0xffff,fr8
172 cmcpxru fr7,fr8,acc0,cc5,0
173 test_spr_bits 0x3c,2,0x8,msr0 ; msr0.sie is set
174 test_spr_bits 2,1,1,msr0 ; msr0.ovf is set
175 test_spr_bits 1,0,1,msr0 ; msr0.aovf is set
176 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set
177 test_accg_immed 0,accg0
178 test_acc_immed 0,acc0
179
180 set_spr_immed 0,msr0
181 set_accg_immed 0x00000011,accg0
182 set_acc_immed 0x11111111,acc0
183 set_fr_iimmed 4,2,fr7 ; multiply small numbers
184 set_fr_iimmed 5,3,fr8
185 cmcpxru fr7,fr8,acc0,cc0,0
186 test_accg_immed 0x00000011,accg0
187 test_acc_immed 0x11111111,acc0
188
189 set_fr_iimmed 1,2,fr7 ; multiply by 1
190 set_fr_iimmed 3,1,fr8
191 cmcpxru fr7,fr8,acc0,cc0,0
192 test_accg_immed 0x00000011,accg0
193 test_acc_immed 0x11111111,acc0
194
195 set_fr_iimmed 0,2,fr7 ; multiply by 0
196 set_fr_iimmed 2,0,fr8
197 cmcpxru fr7,fr8,acc0,cc0,0
198 test_accg_immed 0x00000011,accg0
199 test_acc_immed 0x11111111,acc0
200
201 set_fr_iimmed 0x3fff,1,fr7 ; 15 bit result
202 set_fr_iimmed 2,0x0001,fr8
203 cmcpxru fr7,fr8,acc0,cc0,0
204 test_accg_immed 0x00000011,accg0
205 test_acc_immed 0x11111111,acc0
206
207 set_fr_iimmed 0x4000,1,fr7 ; 16 bit result
208 set_fr_iimmed 4,0x0001,fr8
209 cmcpxru fr7,fr8,acc0,cc0,0
210 test_accg_immed 0x00000011,accg0
211 test_acc_immed 0x11111111,acc0
212
213 set_fr_iimmed 0x8000,1,fr7 ; 17 bit result
214 set_fr_iimmed 4,0x0001,fr8
215 cmcpxru fr7,fr8,acc0,cc0,0
216 test_accg_immed 0x00000011,accg0
217 test_acc_immed 0x11111111,acc0
218
219 set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
220 set_fr_iimmed 0x7fff,0x7fff,fr8
221 cmcpxru fr7,fr8,acc0,cc4,0
222 test_accg_immed 0x00000011,accg0
223 test_acc_immed 0x11111111,acc0
224
225 set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result
226 set_fr_iimmed 0x8000,0x0000,fr8
227 cmcpxru fr7,fr8,acc0,cc4,0
228 test_accg_immed 0x00000011,accg0
229 test_acc_immed 0x11111111,acc0
230
231 set_fr_iimmed 0xffff,0x0000,fr7 ; max positive result
232 set_fr_iimmed 0xffff,0xffff,fr8
233 cmcpxru fr7,fr8,acc0,cc4,0
234 test_accg_immed 0x00000011,accg0
235 test_acc_immed 0x11111111,acc0
236
237 set_fr_iimmed 0x0000,0x0001,fr7 ; saturation
238 set_fr_iimmed 0xffff,0x0001,fr8
239 cmcpxru fr7,fr8,acc0,cc4,0
240 test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
241 test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
242 test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
243 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is always set
244 test_accg_immed 0x00000011,accg0
245 test_acc_immed 0x11111111,acc0
246
247 set_fr_iimmed 0x0000,0xffff,fr7 ; saturation
248 set_fr_iimmed 0xffff,0xffff,fr8
249 cmcpxru fr7,fr8,acc0,cc4,0
250 test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
251 test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
252 test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
253 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is always set
254 test_accg_immed 0x00000011,accg0
255 test_acc_immed 0x11111111,acc0
256
257 set_fr_iimmed 0xfffe,0xffff,fr7 ; saturation
258 set_fr_iimmed 0xffff,0xffff,fr8
259 cmcpxru fr7,fr8,acc0,cc4,0
260 test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
261 test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
262 test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
263 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is always set
264 test_accg_immed 0x00000011,accg0
265 test_acc_immed 0x11111111,acc0
266
267 set_spr_immed 0,msr0
268 set_accg_immed 0x00000011,accg0
269 set_acc_immed 0x11111111,acc0
270 set_fr_iimmed 4,2,fr7 ; multiply small numbers
271 set_fr_iimmed 5,3,fr8
272 cmcpxru fr7,fr8,acc0,cc1,1
273 test_accg_immed 0x00000011,accg0
274 test_acc_immed 0x11111111,acc0
275
276 set_fr_iimmed 1,2,fr7 ; multiply by 1
277 set_fr_iimmed 3,1,fr8
278 cmcpxru fr7,fr8,acc0,cc1,1
279 test_accg_immed 0x00000011,accg0
280 test_acc_immed 0x11111111,acc0
281
282 set_fr_iimmed 0,2,fr7 ; multiply by 0
283 set_fr_iimmed 2,0,fr8
284 cmcpxru fr7,fr8,acc0,cc1,1
285 test_accg_immed 0x00000011,accg0
286 test_acc_immed 0x11111111,acc0
287
288 set_fr_iimmed 0x3fff,1,fr7 ; 15 bit result
289 set_fr_iimmed 2,0x0001,fr8
290 cmcpxru fr7,fr8,acc0,cc1,1
291 test_accg_immed 0x00000011,accg0
292 test_acc_immed 0x11111111,acc0
293
294 set_fr_iimmed 0x4000,1,fr7 ; 16 bit result
295 set_fr_iimmed 4,0x0001,fr8
296 cmcpxru fr7,fr8,acc0,cc1,1
297 test_accg_immed 0x00000011,accg0
298 test_acc_immed 0x11111111,acc0
299
300 set_fr_iimmed 0x8000,1,fr7 ; 17 bit result
301 set_fr_iimmed 4,0x0001,fr8
302 cmcpxru fr7,fr8,acc0,cc1,1
303 test_accg_immed 0x00000011,accg0
304 test_acc_immed 0x11111111,acc0
305
306 set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
307 set_fr_iimmed 0x7fff,0x7fff,fr8
308 cmcpxru fr7,fr8,acc0,cc5,1
309 test_accg_immed 0x00000011,accg0
310 test_acc_immed 0x11111111,acc0
311
312 set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result
313 set_fr_iimmed 0x8000,0x0000,fr8
314 cmcpxru fr7,fr8,acc0,cc5,1
315 test_accg_immed 0x00000011,accg0
316 test_acc_immed 0x11111111,acc0
317
318 set_fr_iimmed 0xffff,0x0000,fr7 ; max positive result
319 set_fr_iimmed 0xffff,0xffff,fr8
320 cmcpxru fr7,fr8,acc0,cc5,1
321 test_accg_immed 0x00000011,accg0
322 test_acc_immed 0x11111111,acc0
323
324 set_fr_iimmed 0x0000,0x0001,fr7 ; saturation
325 set_fr_iimmed 0xffff,0x0001,fr8
326 cmcpxru fr7,fr8,acc0,cc5,1
327 test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
328 test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
329 test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
330 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is always set
331 test_accg_immed 0x00000011,accg0
332 test_acc_immed 0x11111111,acc0
333
334 set_fr_iimmed 0x0000,0xffff,fr7 ; saturation
335 set_fr_iimmed 0xffff,0xffff,fr8
336 cmcpxru fr7,fr8,acc0,cc5,1
337 test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
338 test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
339 test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
340 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is always set
341 test_accg_immed 0x00000011,accg0
342 test_acc_immed 0x11111111,acc0
343
344 set_fr_iimmed 0xfffe,0xffff,fr7 ; saturation
345 set_fr_iimmed 0xffff,0xffff,fr8
346 cmcpxru fr7,fr8,acc0,cc5,1
347 test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
348 test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
349 test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
350 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is always set
351 test_accg_immed 0x00000011,accg0
352 test_acc_immed 0x11111111,acc0
353
354 set_spr_immed 0,msr0
355 set_accg_immed 0x00000011,accg0
356 set_acc_immed 0x11111111,acc0
357 set_fr_iimmed 4,2,fr7 ; multiply small numbers
358 set_fr_iimmed 5,3,fr8
359 cmcpxru fr7,fr8,acc0,cc2,1
360 test_accg_immed 0x00000011,accg0
361 test_acc_immed 0x11111111,acc0
362
363 set_fr_iimmed 1,2,fr7 ; multiply by 1
364 set_fr_iimmed 3,1,fr8
365 cmcpxru fr7,fr8,acc0,cc2,1
366 test_accg_immed 0x00000011,accg0
367 test_acc_immed 0x11111111,acc0
368
369 set_fr_iimmed 0,2,fr7 ; multiply by 0
370 set_fr_iimmed 2,0,fr8
371 cmcpxru fr7,fr8,acc0,cc2,1
372 test_accg_immed 0x00000011,accg0
373 test_acc_immed 0x11111111,acc0
374
375 set_fr_iimmed 0x3fff,1,fr7 ; 15 bit result
376 set_fr_iimmed 2,0x0001,fr8
377 cmcpxru fr7,fr8,acc0,cc2,1
378 test_accg_immed 0x00000011,accg0
379 test_acc_immed 0x11111111,acc0
380
381 set_fr_iimmed 0x4000,1,fr7 ; 16 bit result
382 set_fr_iimmed 4,0x0001,fr8
383 cmcpxru fr7,fr8,acc0,cc2,1
384 test_accg_immed 0x00000011,accg0
385 test_acc_immed 0x11111111,acc0
386
387 set_fr_iimmed 0x8000,1,fr7 ; 17 bit result
388 set_fr_iimmed 4,0x0001,fr8
389 cmcpxru fr7,fr8,acc0,cc2,1
390 test_accg_immed 0x00000011,accg0
391 test_acc_immed 0x11111111,acc0
392
393 set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
394 set_fr_iimmed 0x7fff,0x7fff,fr8
395 cmcpxru fr7,fr8,acc0,cc6,1
396 test_accg_immed 0x00000011,accg0
397 test_acc_immed 0x11111111,acc0
398
399 set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result
400 set_fr_iimmed 0x8000,0x0000,fr8
401 cmcpxru fr7,fr8,acc0,cc6,1
402 test_accg_immed 0x00000011,accg0
403 test_acc_immed 0x11111111,acc0
404
405 set_fr_iimmed 0xffff,0x0000,fr7 ; max positive result
406 set_fr_iimmed 0xffff,0xffff,fr8
407 cmcpxru fr7,fr8,acc0,cc6,1
408 test_accg_immed 0x00000011,accg0
409 test_acc_immed 0x11111111,acc0
410
411 set_fr_iimmed 0x0000,0x0001,fr7 ; saturation
412 set_fr_iimmed 0xffff,0x0001,fr8
413 cmcpxru fr7,fr8,acc0,cc6,1
414 test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
415 test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
416 test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
417 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is always set
418 test_accg_immed 0x00000011,accg0
419 test_acc_immed 0x11111111,acc0
420
421 set_fr_iimmed 0x0000,0xffff,fr7 ; saturation
422 set_fr_iimmed 0xffff,0xffff,fr8
423 cmcpxru fr7,fr8,acc0,cc6,1
424 test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
425 test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
426 test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
427 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is always set
428 test_accg_immed 0x00000011,accg0
429 test_acc_immed 0x11111111,acc0
430
431 set_fr_iimmed 0xfffe,0xffff,fr7 ; saturation
432 set_fr_iimmed 0xffff,0xffff,fr8
433 cmcpxru fr7,fr8,acc0,cc6,1
434 test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
435 test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
436 test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
437 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is always set
438 test_accg_immed 0x00000011,accg0
439 test_acc_immed 0x11111111,acc0
440 ;
441 set_spr_immed 0,msr0
442 set_accg_immed 0x00000011,accg0
443 set_acc_immed 0x11111111,acc0
444 set_fr_iimmed 4,2,fr7 ; multiply small numbers
445 set_fr_iimmed 5,3,fr8
446 cmcpxru fr7,fr8,acc0,cc3,1
447 test_accg_immed 0x00000011,accg0
448 test_acc_immed 0x11111111,acc0
449
450 set_fr_iimmed 1,2,fr7 ; multiply by 1
451 set_fr_iimmed 3,1,fr8
452 cmcpxru fr7,fr8,acc0,cc3,1
453 test_accg_immed 0x00000011,accg0
454 test_acc_immed 0x11111111,acc0
455
456 set_fr_iimmed 0,2,fr7 ; multiply by 0
457 set_fr_iimmed 2,0,fr8
458 cmcpxru fr7,fr8,acc0,cc3,1
459 test_accg_immed 0x00000011,accg0
460 test_acc_immed 0x11111111,acc0
461
462 set_fr_iimmed 0x3fff,1,fr7 ; 15 bit result
463 set_fr_iimmed 2,0x0001,fr8
464 cmcpxru fr7,fr8,acc0,cc3,1
465 test_accg_immed 0x00000011,accg0
466 test_acc_immed 0x11111111,acc0
467
468 set_fr_iimmed 0x4000,1,fr7 ; 16 bit result
469 set_fr_iimmed 4,0x0001,fr8
470 cmcpxru fr7,fr8,acc0,cc3,1
471 test_accg_immed 0x00000011,accg0
472 test_acc_immed 0x11111111,acc0
473
474 set_fr_iimmed 0x8000,1,fr7 ; 17 bit result
475 set_fr_iimmed 4,0x0001,fr8
476 cmcpxru fr7,fr8,acc0,cc3,1
477 test_accg_immed 0x00000011,accg0
478 test_acc_immed 0x11111111,acc0
479
480 set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
481 set_fr_iimmed 0x7fff,0x7fff,fr8
482 cmcpxru fr7,fr8,acc0,cc7,1
483 test_accg_immed 0x00000011,accg0
484 test_acc_immed 0x11111111,acc0
485
486 set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result
487 set_fr_iimmed 0x8000,0x0000,fr8
488 cmcpxru fr7,fr8,acc0,cc7,1
489 test_accg_immed 0x00000011,accg0
490 test_acc_immed 0x11111111,acc0
491
492 set_fr_iimmed 0xffff,0x0000,fr7 ; max positive result
493 set_fr_iimmed 0xffff,0xffff,fr8
494 cmcpxru fr7,fr8,acc0,cc7,1
495 test_accg_immed 0x00000011,accg0
496 test_acc_immed 0x11111111,acc0
497
498 set_fr_iimmed 0x0000,0x0001,fr7 ; saturation
499 set_fr_iimmed 0xffff,0x0001,fr8
500 cmcpxru fr7,fr8,acc0,cc7,1
501 test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
502 test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
503 test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
504 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is always set
505 test_accg_immed 0x00000011,accg0
506 test_acc_immed 0x11111111,acc0
507
508 set_fr_iimmed 0x0000,0xffff,fr7 ; saturation
509 set_fr_iimmed 0xffff,0xffff,fr8
510 cmcpxru fr7,fr8,acc0,cc7,1
511 test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
512 test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
513 test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
514 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is always set
515 test_accg_immed 0x00000011,accg0
516 test_acc_immed 0x11111111,acc0
517
518 set_fr_iimmed 0xfffe,0xffff,fr7 ; saturation
519 set_fr_iimmed 0xffff,0xffff,fr8
520 cmcpxru fr7,fr8,acc0,cc7,1
521 test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
522 test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
523 test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
524 test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is always set
525 test_accg_immed 0x00000011,accg0
526 test_acc_immed 0x11111111,acc0
527
528 pass