4 # as(mips64): -mabi=eabi -mdmx
5 # ld: -N -Ttext=0x80010000
8 .include "testutils.inc"
9 .include "utils-mdmx.inc"
22 ### Non-accumulator, non-CC-using .ob format ops.
25 ### ev = vector of single element
26 ### cv = vector of constant.
31 ld_ob $f8, 0x1122334455667788
32 ld_ob $f9, 0x66778899aabbccdd
34 ck_ob $f10, 0x7799bbddffffffff
36 writemsg "add.ob (ev)"
37 ld_ob $f8, 0x1122334455667788
38 ld_ob $f9, 0x66778899aabbccdd
39 add.ob $f10, $f8, $f9[6]
40 ck_ob $f10, 0x8899aabbccddeeff
42 writemsg "add.ob (cv)"
43 ld_ob $f8, 0x1122334455667788
44 add.ob $f10, $f8, 0x10
45 ck_ob $f10, 0x2132435465768798
49 ld_ob $f8, 0x1122334455667788
50 ld_ob $f9, 0x66778899aabbccdd
51 alni.ob $f10, $f8, $f9, 3
52 ck_ob $f10, 0x4455667788667788
56 ld_ob $f8, 0x1122334455667788
57 ld_ob $f9, 0x66778899aabbccdd
59 alnv.ob $f10, $f8, $f9, $4
60 ck_ob $f10, 0x66778866778899aa
64 ld_ob $f8, 0x1122334455667788
65 ld_ob $f9, 0x66778899aabbccdd
67 ck_ob $f10, 0x0022000000224488
69 writemsg "and.ob (ev)"
70 ld_ob $f8, 0x1122334455667788
71 ld_ob $f9, 0x66778899aabbccdd
72 and.ob $f10, $f8, $f9[4]
73 ck_ob $f10, 0x1100110011001188
75 writemsg "and.ob (cv)"
76 ld_ob $f8, 0x1122334455667788
77 and.ob $f10, $f8, 0x1e
78 ck_ob $f10, 0x1002120414061608
82 ld_ob $f8, 0x1122334455667788
83 ld_ob $f9, 0x66778899aabbccdd
85 ck_ob $f10, 0x66778899aabbccdd
87 writemsg "max.ob (ev)"
88 ld_ob $f8, 0x1122334455667788
89 ld_ob $f9, 0x66778899aabbccdd
90 max.ob $f10, $f8, $f9[7]
91 ck_ob $f10, 0x6666666666667788
93 writemsg "max.ob (cv)"
94 ld_ob $f8, 0x1122334455667788
95 max.ob $f10, $f8, 0x15
96 ck_ob $f10, 0x1522334455667788
100 ld_ob $f8, 0x1122334455667788
101 ld_ob $f9, 0x66778899aabbccdd
102 min.ob $f10, $f8, $f9
103 ck_ob $f10, 0x1122334455667788
105 writemsg "min.ob (ev)"
106 ld_ob $f8, 0x1122334455667788
107 ld_ob $f9, 0x66778899aabbccdd
108 min.ob $f10, $f8, $f9[7]
109 ck_ob $f10, 0x1122334455666666
111 writemsg "min.ob (cv)"
112 ld_ob $f8, 0x1122334455667788
113 min.ob $f10, $f8, 0x15
114 ck_ob $f10, 0x1115151515151515
117 writemsg "mul.ob (v)"
118 ld_ob $f8, 0x1122334455667788
119 ld_ob $f9, 0x0001020304050607
120 mul.ob $f10, $f8, $f9
121 ck_ob $f10, 0x002266ccffffffff
123 writemsg "mul.ob (ev)"
124 ld_ob $f8, 0x1122334455667788
125 ld_ob $f9, 0x0001020304050607
126 mul.ob $f10, $f8, $f9[4]
127 ck_ob $f10, 0x336699ccffffffff
129 writemsg "mul.ob (cv)"
130 ld_ob $f8, 0x1122334455667788
132 ck_ob $f10, 0x22446688aacceeff
135 writemsg "nor.ob (v)"
136 ld_ob $f8, 0x1122334455667788
137 ld_ob $f9, 0x66778899aabbccdd
138 nor.ob $f10, $f8, $f9
139 ck_ob $f10, 0x8888442200000022
141 writemsg "nor.ob (ev)"
142 ld_ob $f8, 0x1122334455667788
143 ld_ob $f9, 0x66778899aabbccdd
144 nor.ob $f10, $f8, $f9[6]
145 ck_ob $f10, 0x8888888888888800
147 writemsg "nor.ob (cv)"
148 ld_ob $f8, 0x1122334455667788
149 nor.ob $f10, $f8, 0x08
150 ck_ob $f10, 0xe6d5c4b3a2918077
154 ld_ob $f8, 0x1122334455667788
155 ld_ob $f9, 0x66778899aabbccdd
157 ck_ob $f10, 0x7777bbddffffffdd
159 writemsg "or.ob (ev)"
160 ld_ob $f8, 0x1122334455667788
161 ld_ob $f9, 0x66778899aabbccdd
162 or.ob $f10, $f8, $f9[6]
163 ck_ob $f10, 0x77777777777777ff
165 writemsg "or.ob (cv)"
166 ld_ob $f8, 0x1122334455667788
167 or.ob $f10, $f8, 0x08
168 ck_ob $f10, 0x192a3b4c5d6e7f88
171 writemsg "shfl.mixh.ob"
172 ld_ob $f8, 0x1122334455667788
173 ld_ob $f9, 0x66778899aabbccdd
174 shfl.mixh.ob $f10, $f8, $f9
175 ck_ob $f10, 0x1166227733884499
178 writemsg "shfl.mixl.ob"
179 ld_ob $f8, 0x1122334455667788
180 ld_ob $f9, 0x66778899aabbccdd
181 shfl.mixl.ob $f10, $f8, $f9
182 ck_ob $f10, 0x55aa66bb77cc88dd
185 writemsg "shfl.pach.ob"
186 ld_ob $f8, 0x1122334455667788
187 ld_ob $f9, 0x66778899aabbccdd
188 shfl.pach.ob $f10, $f8, $f9
189 ck_ob $f10, 0x113355776688aacc
192 writemsg "shfl.upsl.ob"
193 ld_ob $f8, 0x1122334455667788
194 shfl.upsl.ob $f10, $f8, $f8
195 ck_ob $f10, 0x005500660077ff88
198 writemsg "sll.ob (v)"
199 ld_ob $f8, 0x1122334455667788
200 ld_ob $f9, 0x0001020304050607
201 sll.ob $f10, $f8, $f9
202 ck_ob $f10, 0x1144cc2050c0c000
204 writemsg "sll.ob (ev)"
205 ld_ob $f8, 0x1122334455667788
206 ld_ob $f9, 0x0001020304050607
207 sll.ob $f10, $f8, $f9[3]
208 ck_ob $f10, 0x1020304050607080
210 writemsg "sll.ob (cv)"
211 ld_ob $f8, 0x1122334455667788
213 ck_ob $f10, 0x22446688aaccee10
216 writemsg "srl.ob (v)"
217 ld_ob $f8, 0x1122334455667788
218 ld_ob $f9, 0x0001020304050607
219 srl.ob $f10, $f8, $f9
220 ck_ob $f10, 0x11110c0805030101
222 writemsg "srl.ob (ev)"
223 ld_ob $f8, 0x1122334455667788
224 ld_ob $f9, 0x0001020304050607
225 srl.ob $f10, $f8, $f9[3]
226 ck_ob $f10, 0x0102030405060708
228 writemsg "srl.ob (cv)"
229 ld_ob $f8, 0x1122334455667788
231 ck_ob $f10, 0x081119222a333b44
234 writemsg "sub.ob (v)"
235 ld_ob $f8, 0x1122334455667788
236 ld_ob $f9, 0x0001020304050607
237 sub.ob $f10, $f8, $f9
238 ck_ob $f10, 0x1121314151617181
240 writemsg "sub.ob (ev)"
241 ld_ob $f8, 0x1122334455667788
242 ld_ob $f9, 0x66778899aabbccdd
243 sub.ob $f10, $f8, $f9[7]
244 ck_ob $f10, 0x0000000000001122
246 writemsg "sub.ob (cv)"
247 ld_ob $f8, 0x1122334455667788
248 sub.ob $f10, $f8, 0x10
249 ck_ob $f10, 0x0112233445566778
252 writemsg "xor.ob (v)"
253 ld_ob $f8, 0x1122334455667788
254 ld_ob $f9, 0x66778899aabbccdd
255 xor.ob $f10, $f8, $f9
256 ck_ob $f10, 0x7755bbddffddbb55
258 writemsg "xor.ob (ev)"
259 ld_ob $f8, 0x1122334455667788
260 ld_ob $f9, 0x66778899aabbccdd
261 xor.ob $f10, $f8, $f9[6]
262 ck_ob $f10, 0x66554433221100ff
264 writemsg "xor.ob (cv)"
265 ld_ob $f8, 0x1122334455667788
266 xor.ob $f10, $f8, 0x08
267 ck_ob $f10, 0x192a3b4c5d6e7f80
271 ### Accumulator .ob format ops (in order: rd/wr, math, scale/round)
274 ### ev = vector of single element
275 ### cv = vector of constant.
279 writemsg "wacl.ob / rac[hml].ob"
280 ld_ob $f8, 0x8001028304850687
281 ld_ob $f9, 0x1011121314151617
283 ck_acc_ob 0xff0000ff00ff00ff, 0x8001028304850687, 0x1011121314151617
285 # Note: relies on data left in accumulator by previous test.
286 writemsg "wach.ob / rac[hml].ob"
287 ld_ob $f8, 0x2021222324252627
289 ck_acc_ob 0x2021222324252627, 0x8001028304850687, 0x1011121314151617
292 writemsg "adda.ob (v)"
293 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
294 ld_ob $f8, 0x1122334455667788
295 ld_ob $f9, 0x66778899aabbccdd
297 ck_acc_ob 0x0001020304050607, 0x0000000000010101, 0x7799bbddff214365
299 writemsg "adda.ob (ev)"
300 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
301 ld_ob $f8, 0x1122334455667788
302 ld_ob $f9, 0x66778899aabbccdd
304 ck_acc_ob 0x0001020304050607, 0x0000000001010101, 0xccddeeff10213243
306 writemsg "adda.ob (cv)"
307 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
308 ld_ob $f8, 0x1122334455667788
310 ck_acc_ob 0x0001020304050607, 0x0000000000000000, 0x30415263748596a7
313 writemsg "addl.ob (v)"
314 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
315 ld_ob $f8, 0x1122334455667788
316 ld_ob $f9, 0x66778899aabbccdd
318 ck_acc_ob 0x0000000000000000, 0x0000000000010101, 0x7799bbddff214365
320 writemsg "addl.ob (ev)"
321 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
322 ld_ob $f8, 0x1122334455667788
323 ld_ob $f9, 0x66778899aabbccdd
325 ck_acc_ob 0x0000000000000000, 0x0000000001010101, 0xccddeeff10213243
327 writemsg "addl.ob (cv)"
328 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
329 ld_ob $f8, 0x1122334455667788
331 ck_acc_ob 0x0000000000000000, 0x0000000000000000, 0x30415263748596a7
334 writemsg "mula.ob (v)"
335 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
336 ld_ob $f8, 0x1122334455667788
337 ld_ob $f9, 0x66778899aabbccdd
339 ck_acc_ob 0x0001020304050607, 0x060f1b28384a5e75, 0xc6ce18a47282d468
341 writemsg "mula.ob (ev)"
342 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
343 ld_ob $f8, 0x1122334455667788
344 ld_ob $f9, 0x66778899aabbccdd
346 ck_acc_ob 0x0001020304050607, 0x0c1825313e4a5663, 0x6bd641ac1782ed58
348 writemsg "mula.ob (cv)"
349 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
350 ld_ob $f8, 0x1122334455667788
352 ck_acc_ob 0x0001020304050607, 0x020406080a0c0e10, 0x0f1e2d3c4b5a6978
355 writemsg "mull.ob (v)"
356 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
357 ld_ob $f8, 0x1122334455667788
358 ld_ob $f9, 0x66778899aabbccdd
360 ck_acc_ob 0x0000000000000000, 0x060f1b28384a5e75, 0xc6ce18a47282d468
362 writemsg "mull.ob (ev)"
363 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
364 ld_ob $f8, 0x1122334455667788
365 ld_ob $f9, 0x66778899aabbccdd
367 ck_acc_ob 0x0000000000000000, 0x0c1825313e4a5663, 0x6bd641ac1782ed58
369 writemsg "mull.ob (cv)"
370 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
371 ld_ob $f8, 0x1122334455667788
373 ck_acc_ob 0x0000000000000000, 0x020406080a0c0e10, 0x0f1e2d3c4b5a6978
376 writemsg "muls.ob (v)"
377 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
378 ld_ob $f8, 0x1122334455667788
379 ld_ob $f9, 0x66778899aabbccdd
381 ck_acc_ob 0xff00010203040506, 0xf9f0e4d7c7b5a18a, 0x3a32e85c8e7e2c98
383 writemsg "muls.ob (ev)"
384 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
385 ld_ob $f8, 0x1122334455667788
386 ld_ob $f9, 0x66778899aabbccdd
388 ck_acc_ob 0xff00010203040506, 0xf3e7dacec1b5a99c, 0x952abf54e97e13a8
390 writemsg "muls.ob (cv)"
391 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
392 ld_ob $f8, 0x1122334455667788
394 ck_acc_ob 0xff00010203040506, 0xfdfbf9f7f5f3f1ef, 0xf1e2d3c4b5a69788
397 writemsg "mulsl.ob (v)"
398 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
399 ld_ob $f8, 0x1122334455667788
400 ld_ob $f9, 0x66778899aabbccdd
402 ck_acc_ob 0xffffffffffffffff, 0xf9f0e4d7c7b5a18a, 0x3a32e85c8e7e2c98
404 writemsg "mulsl.ob (ev)"
405 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
406 ld_ob $f8, 0x1122334455667788
407 ld_ob $f9, 0x66778899aabbccdd
409 ck_acc_ob 0xffffffffffffffff, 0xf3e7dacec1b5a99c, 0x952abf54e97e13a8
411 writemsg "mulsl.ob (cv)"
412 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
413 ld_ob $f8, 0x1122334455667788
415 ck_acc_ob 0xffffffffffffffff, 0xfdfbf9f7f5f3f1ef, 0xf1e2d3c4b5a69788
418 writemsg "suba.ob (v)"
419 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
420 ld_ob $f8, 0x1122334455667788
421 ld_ob $f9, 0x66778899aabbccdd
423 ck_acc_ob 0xff00010203040506, 0xffffffffffffffff, 0xabababababababab
425 writemsg "suba.ob (ev)"
426 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
427 ld_ob $f8, 0x1122334455667788
428 ld_ob $f9, 0x66778899aabbccdd
430 ck_acc_ob 0xff00010203040506, 0xffffffffffffffff, 0x566778899aabbccd
432 writemsg "suba.ob (cv)"
433 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
434 ld_ob $f8, 0x1122334455667788
436 ck_acc_ob 0xff01020304050607, 0xff00000000000000, 0xf203142536475869
439 writemsg "subl.ob (v)"
440 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
441 ld_ob $f8, 0x1122334455667788
442 ld_ob $f9, 0x66778899aabbccdd
444 ck_acc_ob 0xffffffffffffffff, 0xffffffffffffffff, 0xabababababababab
446 writemsg "subl.ob (ev)"
447 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
448 ld_ob $f8, 0x1122334455667788
449 ld_ob $f9, 0x66778899aabbccdd
451 ck_acc_ob 0xffffffffffffffff, 0xffffffffffffffff, 0x566778899aabbccd
453 writemsg "subl.ob (cv)"
454 ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000
455 ld_ob $f8, 0x1122334455667788
457 ck_acc_ob 0xff00000000000000, 0xff00000000000000, 0xf203142536475869
460 writemsg "rnau.ob (v)"
461 ld_acc_ob 0x0000000000000000, 0x0000000003030303, 0x40424446f8fafcfe
462 ld_ob $f8, 0x0001020304050607
464 ck_ob $f9, 0x4021110940201008
466 writemsg "rnau.ob (ev)"
467 ld_acc_ob 0x0000000000000000, 0x0000000003030303, 0x40424446f8fafcfe
468 ld_ob $f8, 0x0001020304050607
470 ck_ob $f9, 0x080809097f7f8080
472 writemsg "rnau.ob (cv)"
473 ld_acc_ob 0x0000000000000000, 0x0000000003030303, 0x40424446f8fafcfe
475 ck_ob $f9, 0x10111112feffffff
478 writemsg "rneu.ob (v)"
479 ld_acc_ob 0x0000000000000000, 0x0000000003030303, 0x40424446f8fafcfe
480 ld_ob $f8, 0x0001020304050607
482 ck_ob $f9, 0x4021110940201008
484 writemsg "rneu.ob (ev)"
485 ld_acc_ob 0x0000000000000000, 0x0000000003030303, 0x40424446f8fafcfe
486 ld_ob $f8, 0x0001020304050607
488 ck_ob $f9, 0x080808097f7f8080
490 writemsg "rneu.ob (cv)"
491 ld_acc_ob 0x0000000000000000, 0x0000000003030303, 0x40424446f8fafcfe
493 ck_ob $f9, 0x10101112fefeffff
496 writemsg "rzu.ob (v)"
497 ld_acc_ob 0x0000000000000000, 0x0000000003030303, 0x40424446f8fafcfe
498 ld_ob $f8, 0x0001020304050607
500 ck_ob $f9, 0x402111083f1f0f07
502 writemsg "rzu.ob (ev)"
503 ld_acc_ob 0x0000000000000000, 0x0000000003030303, 0x40424446f8fafcfe
504 ld_ob $f8, 0x0001020304050607
506 ck_ob $f9, 0x080808087f7f7f7f
508 writemsg "rzu.ob (cv)"
509 ld_acc_ob 0x0000000000000000, 0x0000000003030303, 0x40424446f8fafcfe
511 ck_ob $f9, 0x10101111fefeffff
515 ### CC-using .ob format ops.
518 ### ev = vector of single element
519 ### cv = vector of constant.
523 writemsg "c.eq.ob (v)"
524 ld_ob $f8, 0x0001010202030304
525 ld_ob $f9, 0x0101020203030404
530 writemsg "c.eq.ob (ev)"
531 ld_ob $f8, 0x0001010202030304
532 ld_ob $f9, 0x0101020203030404
537 writemsg "c.eq.ob (cv)"
538 ld_ob $f8, 0x0001010202030304
544 writemsg "c.le.ob (v)"
545 ld_ob $f8, 0x0001010202030304
546 ld_ob $f9, 0x0101020203030404
551 writemsg "c.le.ob (ev)"
552 ld_ob $f8, 0x0001010202030304
553 ld_ob $f9, 0x0101020203030404
558 writemsg "c.le.ob (cv)"
559 ld_ob $f8, 0x0001010202030304
565 writemsg "c.lt.ob (v)"
566 ld_ob $f8, 0x0001010202030304
567 ld_ob $f9, 0x0101020203030404
572 writemsg "c.lt.ob (ev)"
573 ld_ob $f8, 0x0001010202030304
574 ld_ob $f9, 0x0101020203030404
579 writemsg "c.lt.ob (cv)"
580 ld_ob $f8, 0x0001010202030304
586 writemsg "pickf.ob (v)"
587 ld_ob $f8, 0x0001020304050607
588 ld_ob $f9, 0x08090a0b0c0d0e0f
589 clrset_fp_cc 0xff, 0xaa
590 pickf.ob $f10, $f8, $f9
591 ck_ob $f10, 0x08010a030c050e07
593 writemsg "pickf.ob (ev)"
594 ld_ob $f8, 0x0001020304050607
595 ld_ob $f9, 0x08090a0b0c0d0e0f
596 clrset_fp_cc 0xff, 0xaa
597 pickf.ob $f10, $f8, $f9[4]
598 ck_ob $f10, 0x0b010b030b050b07
600 writemsg "pickf.ob (cv)"
601 ld_ob $f8, 0x0001020304050607
602 clrset_fp_cc 0xff, 0xaa
603 pickf.ob $f10, $f8, 0x10
604 ck_ob $f10, 0x1001100310051007
607 writemsg "pickt.ob (v)"
608 ld_ob $f8, 0x0001020304050607
609 ld_ob $f9, 0x08090a0b0c0d0e0f
610 clrset_fp_cc 0xff, 0xaa
611 pickt.ob $f10, $f8, $f9
612 ck_ob $f10, 0x0009020b040d060f
614 writemsg "pickt.ob (ev)"
615 ld_ob $f8, 0x0001020304050607
616 ld_ob $f9, 0x08090a0b0c0d0e0f
617 clrset_fp_cc 0xff, 0xaa
618 pickt.ob $f10, $f8, $f9[5]
619 ck_ob $f10, 0x000a020a040a060a
621 writemsg "pickt.ob (cv)"
622 ld_ob $f8, 0x0001020304050607
623 clrset_fp_cc 0xff, 0xaa
624 pickt.ob $f10, $f8, 0x10
625 ck_ob $f10, 0x0010021004100610