Initial commit to Gerrit
[profile/ivi/orc.git] / testsuite / test.orc
1
2 .function orc_add2_rshift_add_s16_22_op
3 .dest 2 d1 int16_t
4 .source 2 s1 int16_t
5 .source 2 s2 int16_t
6 .source 2 s3 int16_t
7 .temp 2 t1
8
9 addw t1, s2, s3
10 addw t1, t1, 2
11 shrsw t1, t1, 2
12 addw d1, s1, t1
13
14
15 .function orc_add2_rshift_add_s16_22
16 .dest 2 d1 int16_t
17 .source 2 s1 int16_t
18 .source 2 s2 int16_t
19 .temp 2 t1
20
21 addw t1, s1, s2
22 addw t1, t1, 2
23 shrsw t1, t1, 2
24 addw d1, d1, t1
25
26
27 .function orc_add2_rshift_sub_s16_22_op
28 .dest 2 d1 int16_t
29 .source 2 s1 int16_t
30 .source 2 s2 int16_t
31 .source 2 s3 int16_t
32 .temp 2 t1
33
34 addw t1, s2, s3
35 addw t1, t1, 2
36 shrsw t1, t1, 2
37 subw d1, s1, t1
38
39
40 .function orc_add2_rshift_sub_s16_22
41 .dest 2 d1 int16_t
42 .source 2 s1 int16_t
43 .source 2 s2 int16_t
44 .temp 2 t1
45
46 addw t1, s1, s2
47 addw t1, t1, 2
48 shrsw t1, t1, 2
49 subw d1, d1, t1
50
51
52 .function orc_add2_rshift_add_s16_11_op
53 .dest 2 d1 int16_t
54 .source 2 s1 int16_t
55 .source 2 s2 int16_t
56 .source 2 s3 int16_t
57 .temp 2 t1
58
59 avgsw t1, s2, s3
60 addw d1, s1, t1
61
62
63 .function orc_add2_rshift_add_s16_11
64 .dest 2 d1 int16_t
65 .source 2 s1 int16_t
66 .source 2 s2 int16_t
67 .temp 2 t1
68
69 avgsw t1, s1, s2
70 addw d1, d1, t1
71
72
73 .function orc_add2_rshift_sub_s16_11_op
74 .dest 2 d1 int16_t
75 .source 2 s1 int16_t
76 .source 2 s2 int16_t
77 .source 2 s3 int16_t
78 .temp 2 t1
79
80 avgsw t1, s2, s3
81 subw d1, s1, t1
82
83
84 .function orc_add2_rshift_sub_s16_11
85 .dest 2 d1 int16_t
86 .source 2 s1 int16_t
87 .source 2 s2 int16_t
88 .temp 2 t1
89
90 avgsw t1, s1, s2
91 subw d1, d1, t1
92
93
94 .function orc_add_const_rshift_s16_11
95 .dest 2 d1 int16_t
96 .source 2 s1 int16_t
97 .temp 2 t1
98
99 addw t1, s1, 1
100 shrsw d1, t1, 1
101
102
103 .function orc_add_const_rshift_s16
104 .dest 2 d1 int16_t
105 .param 2 p1
106 .param 2 p2
107 .temp 2 t1
108
109 addw t1, d1, p1
110 shrsw d1, t1, p2
111
112
113 .function orc_add_s16
114 .dest 2 d1 int16_t
115 .source 2 s1 int16_t
116 .source 2 s2 int16_t
117
118 addw d1, s1, s2
119
120
121 .function orc_add_s16_2d
122 .flags 2d
123 .dest 2 d1 int16_t
124 .source 2 s1 int16_t
125
126 addw d1, d1, s1
127
128
129 .function orc_addc_rshift_s16
130 .dest 2 d1 int16_t
131 .source 2 s1 int16_t
132 .source 2 s2 int16_t
133 .temp 2 t1
134 .param 2 p1
135
136 addw t1, s1, s2
137 shrsw d1, t1, p1
138
139
140 .function orc_lshift1_s16
141 .dest 2 d1 int16_t
142 .source 2 s1 int16_t
143
144 shlw d1, s1, 1
145
146
147 .function orc_lshift2_s16
148 .dest 2 d1 int16_t
149 .source 2 s1 int16_t
150
151 shlw d1, s1, 2
152
153
154 .function orc_lshift_s16_ip
155 .dest 2 d1 int16_t
156 .param 2 p1
157
158 shlw d1, d1, p1
159
160
161 .function orc_mas2_add_s16_op
162 .dest 2 d1 int16_t
163 .source 2 s0 int16_t
164 .source 2 s1 int16_t
165 .source 2 s2 int16_t
166 .temp 2 t1
167 .temp 4 t2
168 .param 2 p1
169 .param 4 p2
170 .param 4 p3
171
172 addw t1, s1, s2
173 mulswl t2, t1, p1
174 addl t2, t2, p2
175 shrsl t2, t2, p3
176 convlw t1, t2
177 addw d1, s0, t1
178
179
180 .function orc_mas2_add_s16_ip
181 .dest 2 d1 int16_t
182 .source 2 s1 int16_t
183 .source 2 s2 int16_t
184 .temp 2 t1
185 .temp 4 t2
186 .param 2 p1
187 .param 4 p2
188 .param 4 p3
189
190 addw t1, s1, s2
191 mulswl t2, t1, p1
192 addl t2, t2, p2
193 shrsl t2, t2, p3
194 convlw t1, t2
195 addw d1, d1, t1
196
197
198 .function orc_mas2_sub_s16_op
199 .dest 2 d1 int16_t
200 .source 2 s0 int16_t
201 .source 2 s1 int16_t
202 .source 2 s2 int16_t
203 .temp 2 t1
204 .temp 4 t2
205 .param 2 p1
206 .param 4 p2
207 .param 4 p3
208
209 addw t1, s1, s2
210 mulswl t2, t1, p1
211 addl t2, t2, p2
212 shrsl t2, t2, p3
213 convlw t1, t2
214 subw d1, s0, t1
215
216
217 .function orc_mas2_sub_s16_ip
218 .dest 2 d1 int16_t
219 .source 2 s1 int16_t
220 .source 2 s2 int16_t
221 .temp 2 t1
222 .temp 4 t2
223 .param 2 p1
224 .param 4 p2
225 .param 4 p3
226
227 addw t1, s1, s2
228 mulswl t2, t1, p1
229 addl t2, t2, p2
230 shrsl t2, t2, p3
231 convlw t1, t2
232 subw d1, d1, t1
233
234
235 .function orc_mas4_across_add_s16_1991_op
236 .dest 2 d1 int16_t
237 .source 2 s0 int16_t
238 .source 2 s1 int16_t
239 .source 2 s2 int16_t
240 .source 2 s3 int16_t
241 .source 2 s4 int16_t
242 .param 4 p1
243 .param 4 p2
244 .temp 2 t1
245 .temp 2 t2
246 .temp 4 t3
247 .temp 4 t4
248
249 addw t1, s2, s3
250 mulswl t3, t1, 9
251 addw t2, s1, s4
252 convswl t4, t2
253 subl t3, t3, t4
254 addl t3, t3, p1
255 shrsl t3, t3, p2
256 convlw t1, t3
257 addw d1, s0, t1
258
259
260 .function orc_mas4_across_add_s16_1991_ip
261 .dest 2 d1 int16_t
262 .source 2 s1 int16_t
263 .source 2 s2 int16_t
264 .source 2 s3 int16_t
265 .source 2 s4 int16_t
266 .param 4 p1
267 .param 4 p2
268 .temp 2 t1
269 .temp 2 t2
270 .temp 4 t3
271 .temp 4 t4
272
273 addw t1, s2, s3
274 mulswl t3, t1, 9
275 addw t2, s1, s4
276 convswl t4, t2
277 subl t3, t3, t4
278 addl t3, t3, p1
279 shrsl t3, t3, p2
280 convlw t1, t3
281 addw d1, d1, t1
282
283
284 .function orc_mas4_across_sub_s16_1991_op
285 .dest 2 d1 int16_t
286 .source 2 s0 int16_t
287 .source 2 s1 int16_t
288 .source 2 s2 int16_t
289 .source 2 s3 int16_t
290 .source 2 s4 int16_t
291 .param 4 p1
292 .param 4 p2
293 .temp 2 t1
294 .temp 2 t2
295 .temp 4 t3
296 .temp 4 t4
297
298 addw t1, s2, s3
299 mulswl t3, t1, 9
300 addw t2, s1, s4
301 convswl t4, t2
302 subl t3, t3, t4
303 addl t3, t3, p1
304 shrsl t3, t3, p2
305 convlw t1, t3
306 subw d1, s0, t1
307
308
309 .function orc_mas4_across_sub_s16_1991_ip
310 .dest 2 d1 int16_t
311 .source 2 s1 int16_t
312 .source 2 s2 int16_t
313 .source 2 s3 int16_t
314 .source 2 s4 int16_t
315 .param 4 p1
316 .param 4 p2
317 .temp 2 t1
318 .temp 2 t2
319 .temp 4 t3
320 .temp 4 t4
321
322 addw t1, s2, s3
323 mulswl t3, t1, 9
324 addw t2, s1, s4
325 convswl t4, t2
326 subl t3, t3, t4
327 addl t3, t3, p1
328 shrsl t3, t3, p2
329 convlw t1, t3
330 subw d1, d1, t1
331
332
333 .function orc_subtract_s16
334 .dest 2 d1 int16_t
335 .source 2 s1 int16_t
336 .source 2 s2 int16_t
337
338 subw d1, s1, s2
339
340
341 .function orc_add_s16_u8
342 .dest 2 d1 int16_t
343 .source 2 s1 int16_t
344 .source 1 s2
345 .temp 2 t1
346
347 convubw t1, s2
348 addw d1, t1, s1
349
350
351 .function orc_add_s16_u8_2d
352 .flags 2d
353 .dest 2 d1 int16_t
354 .source 1 s1
355 .temp 2 t1
356
357 convubw t1, s1
358 addw d1, d1, t1
359
360
361 .function orc_convert_s16_u8
362 .dest 2 d1
363 .source 1 s1
364
365 convubw d1, s1
366
367
368 .function orc_convert_u8_s16
369 .dest 1 d1
370 .source 2 s1 int16_t
371
372 convsuswb d1, s1
373
374
375 .function orc_offsetconvert_u8_s16
376 .dest 1 d1
377 .source 2 s1 int16_t
378 .temp 2 t1
379
380 addw t1, s1, 128
381 convsuswb d1, t1
382
383
384 .function orc_offsetconvert_s16_u8
385 .dest 2 d1 int16_t
386 .source 1 s1
387 .temp 2 t1
388
389 convubw t1, s1
390 subw d1, t1, 128
391
392
393 .function orc_subtract_s16_u8
394 .dest 2 d1 int16_t
395 .source 2 s1 int16_t
396 .source 1 s2
397 .temp 2 t1
398
399 convubw t1, s2
400 subw d1, s1, t1
401
402
403 .function orc_multiply_and_add_s16_u8
404 .dest 2 d1 int16_t
405 .source 2 s1 int16_t
406 .source 1 s2
407 .temp 2 t1
408
409 convubw t1, s2
410 mullw t1, t1, s1
411 addw d1, d1, t1
412
413
414 .function orc_splat_s16_ns
415 .dest 2 d1 int16_t
416 .param 2 p1
417
418 copyw d1, p1
419
420
421 .function orc_splat_s16_2d_4xn
422 .n 4
423 .flags 2d
424 .dest 2 d1 int16_t
425 .param 2 p1
426
427 copyw d1, p1
428
429
430 .function orc_splat_s16_2d_8xn
431 .n 8
432 .flags 2d
433 .dest 2 d1 int16_t
434 .param 2 p1
435
436 copyw d1, p1
437
438
439 .function orc_splat_s16_2d
440 .flags 2d
441 .dest 2 d1 int16_t
442 .param 2 p1
443
444 copyw d1, p1
445
446
447 .function orc_splat_u8_ns
448 .dest 1 d1
449 .param 1 p1
450
451 copyb d1, p1
452
453
454 .function orc_splat_u8_2d
455 .flags 2d
456 .dest 1 d1
457 .param 1 p1
458
459 copyb d1, p1
460
461
462 .function orc_average_u8
463 .dest 1 d1
464 .source 1 s1
465 .source 1 s2
466
467 avgub d1, s1, s2
468
469
470 .function orc_rrshift6_add_s16_2d
471 .flags 2d
472 .dest 1 d1 uint8_t
473 .source 2 s1 int16_t
474 .source 2 s2 int16_t
475 .temp 2 t1
476
477 addw t1, s2, 32
478 shrsw t1, t1, 6
479 addw t1, s1, t1
480 convsuswb d1, t1
481
482
483 .function orc_rrshift6_sub_s16_2d
484 .flags 2d
485 .dest 2 d1 int16_t
486 .dest 2 d2 int16_t
487 .temp 2 t1
488
489 subw t1, d2, 8160
490 shrsw t1, t1, 6
491 copyw d2, t1
492 subw d1, d1, t1
493
494
495 .function orc_rrshift6_s16_ip_2d
496 .flags 2d
497 .dest 2 d1 int16_t
498 .temp 2 t1
499
500 subw t1, d1, 8160
501 shrsw d1, t1, 6
502
503
504 .function orc_rrshift6_s16_ip
505 .dest 2 d1 int16_t
506 .temp 2 t1
507
508 subw t1, d1, 8160
509 shrsw d1, t1, 6
510
511
512 .function orc_unpack_yuyv_y
513 .dest 1 d1
514 .source 2 s1
515
516 select0wb d1, s1
517
518
519 .function orc_unpack_yuyv_u
520 .dest 1 d1
521 .source 4 s1
522 .temp 2 t1
523
524 select0lw t1, s1
525 select1wb d1, t1
526
527
528 .function orc_unpack_yuyv_v
529 .dest 1 d1
530 .source 4 s1
531 .temp 2 t1
532
533 select1lw t1, s1
534 select1wb d1, t1
535
536
537 .function orc_packyuyv
538 .dest 4 d1
539 .source 2 s1 uint8_t
540 .source 1 s2
541 .source 1 s3
542 .temp 1 t1
543 .temp 1 t2
544 .temp 2 t3
545 .temp 2 t4
546 .temp 2 t5
547
548 copyw t5, s1
549 select0wb t1, t5
550 select1wb t2, t5
551 mergebw t3, t1, s2
552 mergebw t4, t2, s3
553 mergewl d1, t3, t4
554
555
556 .function orc_unpack_uyvy_y
557 .dest 1 d1
558 .source 2 s1
559
560 select1wb d1, s1
561
562
563 .function orc_unpack_uyvy_u
564 .dest 1 d1
565 .source 4 s1
566 .temp 2 t1
567
568 select0lw t1, s1
569 select0wb d1, t1
570
571
572 .function orc_unpack_uyvy_v
573 .dest 1 d1
574 .source 4 s1
575 .temp 2 t1
576
577 select1lw t1, s1
578 select0wb d1, t1
579
580
581 .function orc_interleave2_s16
582 .dest 4 d1 int16_t
583 .source 2 s1 int16_t
584 .source 2 s2 int16_t
585
586 mergewl d1, s1, s2
587
588
589 .function orc_interleave2_rrshift1_s16
590 .dest 4 d1 int16_t
591 .source 2 s1 int16_t
592 .source 2 s2 int16_t
593 .temp 2 t1
594 .temp 2 t2
595
596 addw t1, s1, 1
597 shrsw t1, t1, 1
598 addw t2, s2, 1
599 shrsw t2, t2, 1
600 mergewl d1, t1, t2
601
602
603 .function orc_deinterleave2_s16
604 .dest 2 d1 int16_t
605 .dest 2 d2 int16_t
606 .source 4 s1 int16_t
607 .temp 4 t1
608
609 copyl t1, s1
610 select0lw d1, t1
611 select1lw d2, t1
612
613
614 .function orc_deinterleave2_lshift1_s16
615 .dest 2 d1 int16_t
616 .dest 2 d2 int16_t
617 .source 4 s1 int16_t
618 .temp 4 t1
619 .temp 2 t2
620 .temp 2 t3
621
622 copyl t1, s1
623 select0lw t2, t1
624 shlw d1, t2, 1
625 select1lw t3, t1
626 shlw d2, t3, 1
627
628
629 .function orc_haar_deint_lshift1_split_s16
630 .dest 2 d1 int16_t
631 .dest 2 d2 int16_t
632 .source 4 s1 int16_t
633 .temp 2 t1
634 .temp 2 t2
635 .temp 4 t3
636
637 copyl t3, s1
638 select0lw t1, t3
639 select1lw t2, t3
640 shlw t1, t1, 1
641 shlw t2, t2, 1
642 subw t2, t2, t1
643 copyw d2, t2
644 avgsw t2, t2, 0
645 addw d1, t1, t2
646
647
648 .function orc_haar_deint_split_s16
649 .dest 2 d1 int16_t
650 .dest 2 d2 int16_t
651 .source 4 s1 int16_t
652 .temp 2 t1
653 .temp 2 t2
654 .temp 4 t3
655
656 copyl t3, s1
657 select0lw t1, t3
658 select1lw t2, t3
659 subw t2, t2, t1
660 copyw d2, t2
661 avgsw t2, t2, 0
662 addw d1, t1, t2
663
664
665 .function orc_haar_split_s16_lo
666 .dest 2 d1 int16_t
667 .source 2 s1 int16_t
668 .source 2 s2 int16_t
669 .temp 2 t1
670 .temp 2 t2
671
672 copyw t1, s1
673 subw t2, s2, t1
674 avgsw t2, t2, 0
675 addw d1, t1, t2
676
677
678 .function orc_haar_split_s16_hi
679 .dest 2 d1 int16_t
680 .source 2 s1 int16_t
681 .source 2 s2 int16_t
682
683 subw d1, s2, s1
684
685
686 .function orc_haar_split_s16_op
687 .dest 2 d1 int16_t
688 .dest 2 d2 int16_t
689 .source 2 s1 int16_t
690 .source 2 s2 int16_t
691 .temp 2 t1
692 .temp 2 t2
693
694 copyw t1, s1
695 subw t2, s2, t1
696 copyw d2, t2
697 avgsw t2, t2, 0
698 addw d1, t1, t2
699
700
701 .function orc_haar_split_s16
702 .dest 2 d1 int16_t
703 .dest 2 d2 int16_t
704 .temp 2 t1
705 .temp 2 t2
706
707 copyw t1, d1
708 copyw t2, d2
709 subw t2, t2, t1
710 copyw d2, t2
711 avgsw t2, t2, 0
712 addw d1, t1, t2
713
714
715 .function orc_haar_synth_s16_lo
716 .dest 2 d1 int16_t
717 .source 2 s1 int16_t
718 .source 2 s2 int16_t
719 .temp 2 t1
720
721 avgsw t1, s2, 0
722 subw d1, s1, t1
723
724
725 .function orc_haar_synth_s16_hi
726 .dest 2 d1 int16_t
727 .source 2 s1 int16_t
728 .source 2 s2 int16_t
729 .temp 2 t1
730 .temp 2 t2
731 .temp 2 t3
732
733 copyw t2, s2
734 avgsw t3, t2, 0
735 subw t1, s1, t3
736 addw d1, t2, t1
737
738
739 .function orc_haar_synth_s16_op
740 .dest 2 d1 int16_t
741 .dest 2 d2 int16_t
742 .source 2 s1 int16_t
743 .source 2 s2 int16_t
744 .temp 2 t1
745 .temp 2 t2
746 .temp 2 t3
747
748 copyw t2, s2
749 avgsw t3, t2, 0
750 subw t1, s1, t3
751 copyw d1, t1
752 addw d2, t2, t1
753
754
755 .function orc_haar_synth_s16
756 .dest 2 d1 int16_t
757 .dest 2 d2 int16_t
758 .temp 2 t1
759 .temp 2 t2
760 .temp 2 t3
761
762 copyw t1, d1
763 copyw t2, d2
764 avgsw t3, t2, 0
765 subw t1, t1, t3
766 copyw d1, t1
767 addw d2, t2, t1
768
769
770 .function orc_haar_synth_rrshift1_int_s16
771 .dest 4 d1 int16_t
772 .source 2 s1 int16_t
773 .source 2 s2 int16_t
774 .temp 2 t1
775 .temp 2 t2
776
777 copyw t2, s2
778 avgsw t1, t2, 0
779 subw t1, s1, t1
780 addw t2, t2, t1
781 avgsw t1, t1, 0
782 avgsw t2, t2, 0
783 mergewl d1, t1, t2
784
785
786 .function orc_haar_synth_int_s16
787 .dest 4 d1 int16_t
788 .source 2 s1 int16_t
789 .source 2 s2 int16_t
790 .temp 2 t1
791 .temp 2 t2
792
793 copyw t2, s2
794 avgsw t1, t2, 0
795 subw t1, s1, t1
796 addw t2, t2, t1
797 mergewl d1, t1, t2
798
799
800 .function orc_haar_sub_s16
801 .dest 2 d1 int16_t
802 .source 2 s1 int16_t
803
804 subw d1, d1, s1
805
806
807 .function orc_haar_add_half_s16
808 .dest 2 d1 int16_t
809 .source 2 s1 int16_t
810 .temp 2 t1
811
812 avgsw t1, s1, 0
813 addw d1, d1, t1
814
815
816 .function orc_haar_add_s16
817 .dest 2 d1 int16_t
818 .source 2 s1 int16_t
819
820 addw d1, d1, s1
821
822
823 .function orc_haar_sub_half_s16
824 .dest 2 d1 int16_t
825 .source 2 s1 int16_t
826 .temp 2 t1
827
828 avgsw t1, s1, 0
829 subw d1, d1, t1
830
831
832 .function orc_sum_u8
833 .accumulator 4 a1 int32_t
834 .source 1 s1
835 .temp 2 t1
836 .temp 4 t2
837
838 convubw t1, s1
839 convuwl t2, t1
840 accl a1, t2
841
842
843 .function orc_sum_s16
844 .accumulator 4 a1 int32_t
845 .source 2 s1 int16_t
846 .temp 4 t1
847
848 convswl t1, s1
849 accl a1, t1
850
851
852 .function orc_sum_square_diff_u8
853 .accumulator 4 a1 int32_t
854 .source 1 s1
855 .source 1 s2
856 .temp 2 t1
857 .temp 2 t2
858 .temp 4 t3
859
860 convubw t1, s1
861 convubw t2, s2
862 subw t1, t1, t2
863 mullw t1, t1, t1
864 convuwl t3, t1
865 accl a1, t3
866
867
868 .function orc_dequantise_s16_2d_4xn
869 .n 4
870 .flags 2d
871 .dest 2 d1 int16_t
872 .source 2 s1 int16_t
873 .param 2 p1
874 .param 2 p2
875 .temp 2 t1
876 .temp 2 t2
877
878 copyw t1, s1
879 signw t2, t1
880 absw t1, t1
881 mullw t1, t1, p1
882 addw t1, t1, p2
883 shrsw t1, t1, 2
884 mullw d1, t1, t2
885
886
887 .function orc_dequantise_s16_2d_8xn
888 .n 8
889 .flags 2d
890 .dest 2 d1 int16_t
891 .source 2 s1 int16_t
892 .param 2 p1
893 .param 2 p2
894 .temp 2 t1
895 .temp 2 t2
896
897 copyw t1, s1
898 signw t2, t1
899 absw t1, t1
900 mullw t1, t1, p1
901 addw t1, t1, p2
902 shrsw t1, t1, 2
903 mullw d1, t1, t2
904
905
906 .function orc_dequantise_s16_ip_2d_8xn
907 .n 8
908 .flags 2d
909 .dest 2 d1 int16_t
910 .param 2 p1
911 .param 2 p2
912 .temp 2 t1
913 .temp 2 t2
914
915 copyw t1, d1
916 signw t2, t1
917 absw t1, t1
918 mullw t1, t1, p1
919 addw t1, t1, p2
920 shrsw t1, t1, 2
921 mullw d1, t1, t2
922
923
924 .function orc_dequantise_s16_ip_2d
925 .flags 2d
926 .dest 2 d1 int16_t
927 .param 2 p1
928 .param 2 p2
929 .temp 2 t1
930 .temp 2 t2
931
932 copyw t1, d1
933 signw t2, t1
934 absw t1, t1
935 mullw t1, t1, p1
936 addw t1, t1, p2
937 shrsw t1, t1, 2
938 mullw d1, t1, t2
939
940
941 .function orc_dequantise_s16_ip
942 .dest 2 d1 int16_t
943 .param 2 p1
944 .param 2 p2
945 .temp 2 t1
946 .temp 2 t2
947
948 copyw t1, d1
949 signw t2, t1
950 absw t1, t1
951 mullw t1, t1, p1
952 addw t1, t1, p2
953 shrsw t1, t1, 2
954 mullw d1, t1, t2
955
956
957 .function orc_dequantise_s16
958 .dest 2 d1 int16_t
959 .source 2 s1 int16_t
960 .param 2 p1
961 .param 2 p2
962 .temp 2 t1
963 .temp 2 t2
964
965 copyw t1, s1
966 signw t2, t1
967 absw t1, t1
968 mullw t1, t1, p1
969 addw t1, t1, p2
970 shrsw t1, t1, 2
971 mullw d1, t1, t2
972
973
974 .function orc_dequantise_var_s16_ip
975 .dest 2 d1 int16_t
976 .source 2 s1 int16_t
977 .source 2 s2 int16_t
978 .temp 2 t1
979 .temp 2 t2
980
981 copyw t1, d1
982 signw t2, t1
983 absw t1, t1
984 mullw t1, t1, s1
985 addw t1, t1, s2
986 shrsw t1, t1, 2
987 mullw d1, t1, t2
988
989
990 # only works for values between -16384 and 16384
991 .function orc_quantise1_s16
992 .dest 2 d1 int16_t
993 .source 2 s1 int16_t
994 .param 2 p1
995 .param 2 p2
996 .param 2 p3
997 .temp 2 t1
998 .temp 2 t2
999
1000 copyw t1, s1
1001 signw t2, t1
1002 absw t1, t1
1003 shlw t1, t1, 2
1004 subw t1, t1, p2
1005 mulhuw t1, t1, p1
1006 shruw t1, t1, p3
1007 mullw d1, t1, t2
1008
1009
1010 # only works for values between -16384 and 16384
1011 .function orc_quantise2_s16
1012 .dest 2 d1 int16_t
1013 .source 2 s1 int16_t
1014 .param 2 p1
1015 .param 2 p2
1016 .temp 2 t1
1017 .temp 2 t2
1018
1019 copyw t1, s1
1020 signw t2, t1
1021 absw t1, t1
1022 shlw t1, t1, 2
1023 subw t1, t1, p2
1024 shruw t1, t1, p1
1025 mullw d1, t1, t2
1026
1027
1028 # only works for values between -16384 and 16384
1029 .function orc_quantdequant1_s16
1030 .dest 2 d1 int16_t
1031 .dest 2 d2 int16_t
1032 .param 2 p1
1033 .param 2 p2
1034 .param 2 p3
1035 .param 2 p4
1036 .param 2 p5
1037 .temp 2 t1
1038 .temp 2 t2
1039
1040 copyw t1, d2
1041 signw t2, t1
1042 absw t1, t1
1043 shlw t1, t1, 2
1044 subw t1, t1, p2
1045 mulhuw t1, t1, p1
1046 shruw t1, t1, p3
1047 mullw t2, t1, t2
1048 copyw d1, t2
1049 signw t2, t2
1050 mullw t1, t1, p4
1051 addw t1, t1, p5
1052 shrsw t1, t1, 2
1053 mullw d2, t1, t2
1054
1055
1056 # only works for values between -16384 and 16384
1057 .function orc_quantdequant3_s16
1058 .dest 2 d1 int16_t
1059 .dest 2 d2 int16_t
1060 .param 2 p1
1061 .param 2 p2
1062 .param 2 p3
1063 .param 2 p4
1064 .param 2 p5
1065 .param 4 p6
1066 .temp 2 t1
1067 .temp 2 t2
1068 .temp 4 t3
1069
1070 copyw t1, d2
1071 signw t2, t1
1072 absw t1, t1
1073 shlw t1, t1, 2
1074 subw t1, t1, p2
1075 muluwl t3, t1, p1
1076 addl t3, t3, p6
1077 shrul t3, t3, p3
1078 convlw t1, t3
1079 mullw t2, t1, t2
1080 copyw d1, t2
1081 signw t2, t2
1082 mullw t1, t1, p4
1083 addw t1, t1, p5
1084 shrsw t1, t1, 2
1085 mullw d2, t1, t2
1086
1087
1088 # only works for values between -16384 and 16384
1089 .function orc_quantdequant2_s16
1090 .dest 2 d1 int16_t
1091 .dest 2 d2 int16_t
1092 .param 2 p1
1093 .param 2 p2
1094 .param 2 p4
1095 .param 2 p5
1096 .temp 2 t1
1097 .temp 2 t2
1098
1099 copyw t1, d2
1100 signw t2, t1
1101 absw t1, t1
1102 shlw t1, t1, 2
1103 subw t1, t1, p2
1104 shruw t1, t1, p1
1105 mullw t2, t1, t2
1106 copyw d1, t2
1107 signw t2, t2
1108 mullw t1, t1, p4
1109 addw t1, t1, p5
1110 shrsw t1, t1, 2
1111 mullw d2, t1, t2
1112
1113
1114
1115 .function orc_downsample_vert_u8
1116 .dest 1 d1
1117 .source 1 s1
1118 .source 1 s2
1119 .source 1 s3
1120 .source 1 s4
1121 .temp 2 t1
1122 .temp 2 t2
1123 .temp 2 t3
1124
1125 convubw t1, s1
1126 convubw t2, s4
1127 addw t1, t1, t2
1128 mullw t1, t1, 6
1129 convubw t2, s2
1130 convubw t3, s3
1131 addw t2, t2, t3
1132 mullw t2, t2, 26
1133 addw t2, t2, t1
1134 addw t2, t2, 32
1135 shruw t2, t2, 6
1136 convwb d1, t2
1137
1138
1139 .function orc_downsample_horiz_u8
1140 .dest 1 d1
1141 .source 2 s1 uint8_t
1142 .source 2 s2 uint8_t
1143 .temp 2 t1
1144 .temp 2 t2
1145 .temp 1 t3
1146 .temp 2 t4
1147 .temp 2 t5
1148 .temp 2 t6
1149
1150 copyw t1, s1
1151 copyw t2, s2
1152 select0wb t3, t1
1153 convubw t4, t3
1154 select1wb t3, t2
1155 convubw t5, t3
1156 addw t4, t4, t5
1157 mullw t4, t4, 6
1158 select1wb t3, t1
1159 convubw t5, t3
1160 select0wb t3, t2
1161 convubw t6, t3
1162 addw t5, t5, t6
1163 mullw t5, t5, 26
1164 addw t4, t4, t5
1165 addw t4, t4, 32
1166 shruw t4, t4, 6
1167 convwb d1, t4
1168
1169
1170 .function orc_stats_moment_s16
1171 .source 2 s1 int16_t
1172 .accumulator 4 a1 int32_t
1173 .temp 2 t1
1174 .temp 4 t2
1175
1176 absw t1, s1
1177 subw t1, t1, 2
1178 maxsw t1, t1, 0
1179 convuwl t2, t1
1180 accl a1, t2
1181
1182
1183 .function orc_stats_above_s16
1184 .source 2 s1 int16_t
1185 .accumulator 4 a1 int32_t
1186 .temp 2 t1
1187 .temp 4 t2
1188
1189 absw t1, s1
1190 subw t1, t1, 1
1191 maxsw t1, t1, 0
1192 minsw t1, t1, 1
1193 convuwl t2, t1
1194 accl a1, t2
1195
1196
1197 .function orc_accw
1198 .accumulator 2 a1 int
1199 .source 2 s1 int16_t
1200 .temp 2 t1
1201
1202 absw t1, s1
1203 accw a1, t1
1204
1205
1206 .function orc_avg2_8xn_u8
1207 .flags 2d
1208 .n 8
1209 .dest 1 d1 uint8_t
1210 .source 1 s1 uint8_t
1211 .source 1 s2 uint8_t
1212
1213 avgub d1, s1, s2
1214
1215
1216 .function orc_avg2_12xn_u8
1217 .flags 2d
1218 .n 12
1219 .dest 1 d1 uint8_t
1220 .source 1 s1 uint8_t
1221 .source 1 s2 uint8_t
1222
1223 avgub d1, s1, s2
1224
1225
1226 .function orc_avg2_16xn_u8
1227 .flags 2d
1228 .n 16
1229 .dest 1 d1 uint8_t
1230 .source 1 s1 uint8_t
1231 .source 1 s2 uint8_t
1232
1233 avgub d1, s1, s2
1234
1235
1236 .function orc_avg2_32xn_u8
1237 .flags 2d
1238 .n 32
1239 .dest 1 d1 uint8_t
1240 .source 1 s1 uint8_t
1241 .source 1 s2 uint8_t
1242
1243 avgub d1, s1, s2
1244
1245
1246 .function orc_avg2_nxm_u8
1247 .flags 2d
1248 .dest 1 d1 uint8_t
1249 .source 1 s1 uint8_t
1250 .source 1 s2 uint8_t
1251
1252 avgub d1, s1, s2
1253
1254
1255 .function orc_combine4_8xn_u8
1256 .flags 2d
1257 .n 8
1258 .dest 1 d1 uint8_t
1259 .source 1 s1 uint8_t
1260 .source 1 s2 uint8_t
1261 .source 1 s3 uint8_t
1262 .source 1 s4 uint8_t
1263 .param 2 p1
1264 .param 2 p2
1265 .param 2 p3
1266 .param 2 p4
1267 .temp 2 t1
1268 .temp 2 t2
1269
1270 convubw t1, s1
1271 mullw t2, t1, p1
1272 convubw t1, s2
1273 mullw t1, t1, p2
1274 addw t2, t2, t1
1275 convubw t1, s3
1276 mullw t1, t1, p3
1277 addw t2, t2, t1
1278 convubw t1, s4
1279 mullw t1, t1, p4
1280 addw t2, t2, t1
1281 addw t2, t2, 8
1282 convsuswb d1, t2
1283
1284
1285 .function orc_combine4_12xn_u8
1286 .flags 2d
1287 .n 12
1288 .dest 1 d1 uint8_t
1289 .source 1 s1 uint8_t
1290 .source 1 s2 uint8_t
1291 .source 1 s3 uint8_t
1292 .source 1 s4 uint8_t
1293 .param 2 p1
1294 .param 2 p2
1295 .param 2 p3
1296 .param 2 p4
1297 .temp 2 t1
1298 .temp 2 t2
1299
1300 convubw t1, s1
1301 mullw t2, t1, p1
1302 convubw t1, s2
1303 mullw t1, t1, p2
1304 addw t2, t2, t1
1305 convubw t1, s3
1306 mullw t1, t1, p3
1307 addw t2, t2, t1
1308 convubw t1, s4
1309 mullw t1, t1, p4
1310 addw t2, t2, t1
1311 addw t2, t2, 8
1312 convsuswb d1, t2
1313
1314
1315 .function orc_combine4_16xn_u8
1316 .flags 2d
1317 .n 16
1318 .dest 1 d1 uint8_t
1319 .source 1 s1 uint8_t
1320 .source 1 s2 uint8_t
1321 .source 1 s3 uint8_t
1322 .source 1 s4 uint8_t
1323 .param 2 p1
1324 .param 2 p2
1325 .param 2 p3
1326 .param 2 p4
1327 .temp 2 t1
1328 .temp 2 t2
1329
1330 convubw t1, s1
1331 mullw t2, t1, p1
1332 convubw t1, s2
1333 mullw t1, t1, p2
1334 addw t2, t2, t1
1335 convubw t1, s3
1336 mullw t1, t1, p3
1337 addw t2, t2, t1
1338 convubw t1, s4
1339 mullw t1, t1, p4
1340 addw t2, t2, t1
1341 addw t2, t2, 8
1342 convsuswb d1, t2
1343
1344
1345 .function orc_combine4_24xn_u8
1346 .flags 2d
1347 .n 24
1348 .dest 1 d1 uint8_t
1349 .source 1 s1 uint8_t
1350 .source 1 s2 uint8_t
1351 .source 1 s3 uint8_t
1352 .source 1 s4 uint8_t
1353 .param 2 p1
1354 .param 2 p2
1355 .param 2 p3
1356 .param 2 p4
1357 .temp 2 t1
1358 .temp 2 t2
1359
1360 convubw t1, s1
1361 mullw t2, t1, p1
1362 convubw t1, s2
1363 mullw t1, t1, p2
1364 addw t2, t2, t1
1365 convubw t1, s3
1366 mullw t1, t1, p3
1367 addw t2, t2, t1
1368 convubw t1, s4
1369 mullw t1, t1, p4
1370 addw t2, t2, t1
1371 addw t2, t2, 8
1372 convsuswb d1, t2
1373
1374
1375 .function orc_combine4_32xn_u8
1376 .flags 2d
1377 .n 32
1378 .dest 1 d1 uint8_t
1379 .source 1 s1 uint8_t
1380 .source 1 s2 uint8_t
1381 .source 1 s3 uint8_t
1382 .source 1 s4 uint8_t
1383 .param 2 p1
1384 .param 2 p2
1385 .param 2 p3
1386 .param 2 p4
1387 .temp 2 t1
1388 .temp 2 t2
1389
1390 convubw t1, s1
1391 mullw t2, t1, p1
1392 convubw t1, s2
1393 mullw t1, t1, p2
1394 addw t2, t2, t1
1395 convubw t1, s3
1396 mullw t1, t1, p3
1397 addw t2, t2, t1
1398 convubw t1, s4
1399 mullw t1, t1, p4
1400 addw t2, t2, t1
1401 addw t2, t2, 8
1402 convsuswb d1, t2
1403
1404
1405 .function orc_combine4_nxm_u8
1406 .flags 2d
1407 .dest 1 d1 uint8_t
1408 .source 1 s1 uint8_t
1409 .source 1 s2 uint8_t
1410 .source 1 s3 uint8_t
1411 .source 1 s4 uint8_t
1412 .param 2 p1
1413 .param 2 p2
1414 .param 2 p3
1415 .param 2 p4
1416 .temp 2 t1
1417 .temp 2 t2
1418
1419 convubw t1, s1
1420 mullw t2, t1, p1
1421 convubw t1, s2
1422 mullw t1, t1, p2
1423 addw t2, t2, t1
1424 convubw t1, s3
1425 mullw t1, t1, p3
1426 addw t2, t2, t1
1427 convubw t1, s4
1428 mullw t1, t1, p4
1429 addw t2, t2, t1
1430 addw t2, t2, 8
1431 shrsw t2, t2, 4
1432 convsuswb d1, t2
1433
1434
1435 .function orc_combine2_8xn_u8
1436 .flags 2d
1437 .n 8
1438 .dest 1 d1 uint8_t
1439 .source 1 s1 uint8_t
1440 .source 1 s2 uint8_t
1441 .param 2 p1
1442 .param 2 p2
1443 .param 2 p3
1444 .param 2 p4
1445 .temp 2 t1
1446 .temp 2 t2
1447
1448 convubw t1, s1
1449 convubw t2, s2
1450 mullw t1, t1, p1
1451 mullw t2, t2, p2
1452 addw t1, t1, t2
1453 addw t1, t1, p3
1454 shrsw t1, t1, p4
1455 convsuswb d1, t1
1456
1457
1458
1459 .function orc_combine2_12xn_u8
1460 .flags 2d
1461 .n 12
1462 .dest 1 d1 uint8_t
1463 .source 1 s1 uint8_t
1464 .source 1 s2 uint8_t
1465 .param 2 p1
1466 .param 2 p2
1467 .param 2 p3
1468 .param 2 p4
1469 .temp 2 t1
1470 .temp 2 t2
1471
1472 convubw t1, s1
1473 convubw t2, s2
1474 mullw t1, t1, p1
1475 mullw t2, t2, p2
1476 addw t1, t1, t2
1477 addw t1, t1, p3
1478 shrsw t1, t1, p4
1479 convsuswb d1, t1
1480
1481
1482
1483 .function orc_combine2_16xn_u8
1484 .flags 2d
1485 .n 16
1486 .dest 1 d1 uint8_t
1487 .source 1 s1 uint8_t
1488 .source 1 s2 uint8_t
1489 .param 2 p1
1490 .param 2 p2
1491 .param 2 p3
1492 .param 2 p4
1493 .temp 2 t1
1494 .temp 2 t2
1495
1496 convubw t1, s1
1497 convubw t2, s2
1498 mullw t1, t1, p1
1499 mullw t2, t2, p2
1500 addw t1, t1, t2
1501 addw t1, t1, p3
1502 shrsw t1, t1, p4
1503 convsuswb d1, t1
1504
1505
1506
1507 .function orc_combine2_nxm_u8
1508 .flags 2d
1509 .dest 1 d1 uint8_t
1510 .source 1 s1 uint8_t
1511 .source 1 s2 uint8_t
1512 .param 2 p1
1513 .param 2 p2
1514 .param 2 p3
1515 .param 2 p4
1516 .temp 2 t1
1517 .temp 2 t2
1518
1519 convubw t1, s1
1520 convubw t2, s2
1521 mullw t1, t1, p1
1522 mullw t2, t2, p2
1523 addw t1, t1, t2
1524 addw t1, t1, p3
1525 shrsw t1, t1, p4
1526 convsuswb d1, t1
1527
1528
1529
1530 .function orc_sad_nxm_u8
1531 .flags 2d
1532 .accumulator 4 a1 uint32_t
1533 .source 1 s1 uint8_t
1534 .source 1 s2 uint8_t
1535
1536 accsadubl a1, s1, s2
1537
1538
1539 .function orc_sad_8x8_u8
1540 .flags 2d
1541 .n 8
1542 .m 8
1543 .accumulator 4 a1 uint32_t
1544 .source 1 s1 uint8_t
1545 .source 1 s2 uint8_t
1546
1547 accsadubl a1, s1, s2
1548
1549
1550
1551 .function orc_sad_12x12_u8
1552 .flags 2d
1553 .n 12
1554 .m 12
1555 .accumulator 4 a1 uint32_t
1556 .source 1 s1 uint8_t
1557 .source 1 s2 uint8_t
1558
1559 accsadubl a1, s1, s2
1560
1561
1562
1563 .function orc_sad_16xn_u8
1564 .flags 2d
1565 .n 16
1566 .accumulator 4 a1 uint32_t
1567 .source 1 s1 uint8_t
1568 .source 1 s2 uint8_t
1569
1570 accsadubl a1, s1, s2
1571
1572
1573
1574 .function orc_sad_32xn_u8
1575 .flags 2d
1576 .n 32
1577 .accumulator 4 a1 uint32_t
1578 .source 1 s1 uint8_t
1579 .source 1 s2 uint8_t
1580
1581 accsadubl a1, s1, s2
1582
1583
1584 .function convert_rgb_to_gray
1585 .dest 1 d1
1586 .source 4 s1
1587 .temp 1 l_t1
1588 .temp 2 l_t2
1589 .temp 2 l_gray2
1590
1591 # Red * ((0.299) * (1<<16) + 0.5)
1592 select0lw l_t2, s1
1593 select0wb l_t1, l_t2
1594 convubw l_gray2, l_t1
1595 swapw l_gray2, l_gray2
1596 mulhuw l_gray2, l_gray2, 19595
1597        
1598 # Green * ((0.587) * (1<<16) + 0.5)
1599 select0lw l_t2, s1
1600 select1wb l_t1, l_t2
1601 convubw l_t2, l_t1
1602 swapw l_t2, l_t2
1603 mulhuw l_t2, l_t2, 38470
1604 addusw l_gray2, l_gray2, l_t2
1605
1606 # Blue * ((0.114) * (1<<16) + 0.5)
1607 select1lw l_t2, s1
1608 select0wb l_t1, l_t2
1609 convubw l_t2, l_t1
1610 swapw l_t2, l_t2
1611 mulhuw l_t2, l_t2, 7471
1612 addusw l_gray2, l_gray2, l_t2
1613
1614 # Add 1/2 => (1 << (8 - 1))
1615 addusw l_gray2, l_gray2, 128
1616 select1wb d1, l_gray2
1617
1618
1619
1620 .function canny_calc_delta_x
1621 .dest 4 d1 int32_t
1622 .source 4 s1 uint8_t
1623 .source 4 s2 uint8_t
1624 .temp 2 t1
1625 .temp 2 t2
1626 .temp 1 t3
1627 .temp 2 t4
1628 .temp 1 t5
1629 .temp 2 t6
1630 .temp 4 t7
1631 .temp 4 td1
1632
1633 select0lw t2, s1
1634 select1wb t3, t2
1635 select0lw t4, s2
1636 select1wb t5, t4
1637 convubw t4, t3
1638 convubw t6, t5
1639 subw t1, t4, t6
1640 convswl t7, t1
1641 mulll td1, t7, t7
1642
1643 select1lw t2, s1
1644 select0wb t3, t2
1645 select1lw t4, s2
1646 select0wb t5, t4
1647 convubw t4, t3
1648 convubw t6, t5
1649 subw t1, t4, t6
1650 convswl t7, t1
1651 mulll t7, t7, t7
1652 addl td1, td1, t7
1653
1654 select1lw t2, s1
1655 select1wb t3, t2
1656 select1lw t4, s2
1657 select1wb t5, t4
1658 convubw t4, t3
1659 convubw t6, t5
1660 subw t1, t4, t6
1661 convswl t7, t1
1662 mulll t7, t7, t7
1663 addl d1, td1, t7
1664
1665
1666 .function i420_to_ayuv
1667 .dest 4 d1
1668 .source 1 y
1669 .source 1 u
1670 .source 1 v
1671 .param 1 a
1672 .temp 1 tu
1673 .temp 1 tv
1674 .temp 1 ty
1675 .temp 2 t1
1676 .temp 2 t2
1677
1678 loadupdb tu, u
1679 loadupdb tv, v
1680 loadb ty, y
1681 mergebw t1, a, ty
1682 mergebw t2, tu, tv
1683 mergewl d1, t1, t2
1684
1685
1686
1687 .function test_4x
1688 .dest 4 d1
1689 .source 4 s1
1690 .source 4 s2
1691
1692 x4 addusb d1, s1, s2
1693
1694
1695 .function test_4x_2
1696 .dest 4 d1
1697 .source 4 s1
1698 .param 4 p1
1699
1700 x4 addusb d1, s1, p1
1701
1702
1703 .function orc_splat_u16
1704 .dest 2 d1 uint16_t
1705 .param 2 p1
1706
1707 copyw d1, p1
1708
1709
1710 .function orc_splat_u32
1711 .dest 4 d1 uint32_t
1712 .param 4 p1
1713
1714 copyl d1, p1
1715
1716
1717 .function orc_splat_u16_2d
1718 .dest 2 d1 uint16_t
1719 .param 2 p1
1720 .flags 2d
1721
1722 copyw d1, p1
1723
1724
1725 .function orc_splat_u32_2d
1726 .dest 4 d1 uint32_t
1727 .param 4 p1
1728 .flags 2d
1729
1730 copyl d1, p1
1731
1732
1733 .function orc_copy_u16_2d
1734 .dest 2 d1
1735 .source 2 s1
1736 .flags 2d
1737
1738 copyw d1, s1
1739
1740
1741 .function orc_copy_u32_2d
1742 .dest 4 d1
1743 .source 4 s1
1744 .flags 2d
1745
1746 copyl d1, s1
1747
1748
1749 .function orc_composite_add_8888_8888_2d
1750 .flags 2d
1751 .dest 4 d1
1752 .source 4 s1
1753
1754 x4 addusb d1, d1, s1
1755
1756
1757 .function orc_composite_add_8_8_line
1758 .dest 1 d1
1759 .source 1 s1
1760
1761 addusb d1, d1, s1
1762
1763
1764 .function orc_composite_add_n_8_8_line
1765 .dest 1 d1
1766 .source 1 s1
1767 .param 2 p1
1768 .temp 2 t1
1769 .temp 1 t2
1770
1771 #compina t1, p1, s1
1772 convubw t1, s1
1773 mullw t1, t1, p1
1774 div255w t1, t1
1775 convwb t2, t1
1776 addusb d1, d1, t2
1777
1778
1779 .function orc_code_combine_add_u
1780 .dest 4 d1
1781 .source 4 s1
1782 .source 4 s2
1783 .temp 8 t1
1784 .temp 8 t2
1785 .temp 4 t3
1786
1787 x4 convubw t1, s1
1788 x4 convubw t2, s2
1789 splatw3q t2, t2
1790 x4 mullw t1, t1, t2
1791 x4 div255w t1, t1
1792 x4 convwb t3, t1
1793 x4 addusb d1, d1, t3
1794
1795
1796 .function orc_code_combine_add_u_n
1797 .dest 4 d1
1798 .source 4 s1
1799
1800 x4 addusb d1, d1, s1
1801
1802
1803 .function orc_code_combine_over_u
1804 .dest 4 d1
1805 .source 4 s1
1806 .source 4 s2
1807 .temp 8 t1
1808 .temp 8 t2
1809 .temp 4 t3
1810 .temp 4 d
1811 .temp 8 d_wide
1812
1813 #compin t1, s1, s2
1814 #compover d1, d1, t1
1815 x4 convubw t1, s1
1816 x4 convubw t2, s2
1817 splatw3q t2, t2
1818 x4 mullw t1, t1, t2
1819 x4 div255w t1, t1
1820 x4 convwb t3, t1
1821 # ((d) + (s) - ORC_MULDIV_255((d),(m)))
1822 loadl d, d1
1823 x4 convubw d_wide, d
1824 x4 xorw t1, t1, 0x00ff
1825 splatw3q t2, t1
1826 x4 mullw t1, d_wide, t2
1827 x4 div255w t1, t1
1828 x4 convwb d, t1
1829 x4 addusb d1, d, t3
1830
1831
1832 .function orc_code_combine_over_u_n
1833 .dest 4 d1
1834 .source 4 s1
1835 .temp 8 t1
1836 .temp 8 t2
1837 .temp 4 d
1838 .temp 4 s
1839 .temp 8 d_wide
1840
1841 loadl s, s1
1842 x4 convubw t1, s
1843 loadl d, d1
1844 x4 convubw d_wide, d
1845 x4 xorw t1, t1, 0x00ff
1846 splatw3q t2, t1
1847 x4 mullw t1, d_wide, t2
1848 x4 div255w t1, t1
1849 x4 convwb d, t1
1850 x4 addusb d1, d, s
1851
1852
1853 .function orc_code_combine_in_u
1854 .dest 4 d1
1855 .source 4 s1
1856 .source 4 s2
1857 .temp 8 d_wide
1858 .temp 8 s_wide
1859 .temp 8 m_wide
1860 .temp 8 t1
1861 .temp 8 t2
1862
1863 x4 convubw t1, s1
1864 x4 convubw t2, s2
1865 splatw3q t2, t2
1866 x4 mullw t1, t1, t2
1867 x4 div255w t1, t1
1868 # ORC_MULDIV_255((s),(m)), m is from dest
1869 x4 convubw d_wide, d1
1870 splatw3q t2, d_wide
1871 x4 mullw t1, t1, t2
1872 x4 div255w t1, t1
1873 x4 convwb d1, t1
1874
1875
1876
1877 .function orc_code_combine_in_u_n
1878 .dest 4 d1
1879 .source 4 s1
1880 .temp 8 d_wide
1881 .temp 8 s_wide
1882 .temp 8 m_wide
1883 .temp 8 t1
1884 .temp 8 t2
1885
1886 x4 convubw t1, s1
1887 # ORC_MULDIV_255((s),(m)), m is from dest
1888 x4 convubw d_wide, d1
1889 splatw3q t2, d_wide
1890 x4 mullw t1, t1, t2
1891 x4 div255w t1, t1
1892 x4 convwb d1, t1
1893
1894
1895 .function orc_code_combine_out_u
1896 .dest 4 d1
1897 .source 4 s1
1898 .source 4 s2
1899 .temp 8 d_wide
1900 .temp 8 s_wide
1901 .temp 8 m_wide
1902 .temp 8 t1
1903 .temp 8 t2
1904
1905 x4 convubw t1, s1
1906 x4 convubw t2, s2
1907 splatw3q t2, t2
1908 x4 mullw t1, t1, t2
1909 x4 div255w t1, t1
1910 # ORC_MULDIV_255((s),(m)), m is from dest
1911 x4 convubw d_wide, d1
1912 splatw3q t2, d_wide
1913 x4 xorw t2, t2, 0x00ff
1914 x4 mullw t1, t1, t2
1915 x4 div255w t1, t1
1916 x4 convwb d1, t1
1917
1918
1919
1920 .function orc_code_combine_out_u_n
1921 .dest 4 d1
1922 .source 4 s1
1923 .temp 8 d_wide
1924 .temp 8 s_wide
1925 .temp 8 m_wide
1926 .temp 8 t1
1927 .temp 8 t2
1928
1929 x4 convubw t1, s1
1930 # ORC_MULDIV_255((s),(m)), m is from dest
1931 x4 convubw d_wide, d1
1932 splatw3q t2, d_wide
1933 x4 xorw t2, t2, 0x00ff
1934 x4 mullw t1, t1, t2
1935 x4 div255w t1, t1
1936 x4 convwb d1, t1
1937
1938
1939 # atop: (ORC_DIVIDE_255((s)*(da))+ORC_DIVIDE_255((d)*(255-(sa))))
1940
1941 .function orc_code_combine_atop_u
1942 .dest 4 d1
1943 .source 4 s1
1944 .source 4 s2
1945 .temp 8 d_wide
1946 .temp 8 s_wide
1947 .temp 8 m_wide
1948 .temp 8 t1
1949 .temp 8 t2
1950 .temp 8 t3
1951 .temp 4 t4
1952 .temp 4 t5
1953
1954 x4 convubw t1, s1
1955 x4 convubw t2, s2
1956 splatw3q t2, t2
1957 x4 mullw t1, t1, t2
1958 x4 div255w t1, t1
1959
1960 x4 convubw d_wide, d1
1961 splatw3q t2, d_wide
1962 x4 mullw t3, t1, t2
1963 x4 div255w t3, t3
1964 x4 convwb t4, t3
1965
1966 x4 convubw d_wide, d1
1967 splatw3q t2, t1
1968 x4 xorw t2, t2, 0x00ff
1969 x4 mullw t1, d_wide, t2
1970 x4 div255w t1, t1
1971 x4 convwb t5, t1
1972
1973 x4 addusb d1, t4, t5
1974
1975
1976 .function orc_code_combine_atop_u_n
1977 .dest 4 d1
1978 .source 4 s1
1979 .temp 8 d_wide
1980 .temp 8 s_wide
1981 .temp 8 m_wide
1982 .temp 8 t1
1983 .temp 8 t2
1984 .temp 8 t3
1985 .temp 4 t4
1986 .temp 4 t5
1987
1988 x4 convubw t1, s1
1989
1990 x4 convubw d_wide, d1
1991 splatw3q t2, d_wide
1992 x4 mullw t3, t1, t2
1993 x4 div255w t3, t3
1994 x4 convwb t4, t3
1995
1996 x4 convubw d_wide, d1
1997 splatw3q t2, t1
1998 x4 xorw t2, t2, 0x00ff
1999 x4 mullw t1, d_wide, t2
2000 x4 div255w t1, t1
2001 x4 convwb t5, t1
2002
2003 x4 addusb d1, t4, t5
2004
2005
2006
2007 .function orc_code_combine_xor_u
2008 .dest 4 d1
2009 .source 4 s1
2010 .source 4 s2
2011 .temp 8 d_wide
2012 .temp 8 s_wide
2013 .temp 8 m_wide
2014 .temp 8 t1
2015 .temp 8 t2
2016 .temp 8 t3
2017 .temp 4 t4
2018 .temp 4 t5
2019
2020 x4 convubw t1, s1
2021 x4 convubw t2, s2
2022 splatw3q t2, t2
2023 x4 mullw t1, t1, t2
2024 x4 div255w t1, t1
2025
2026 x4 convubw d_wide, d1
2027 splatw3q t2, d_wide
2028 x4 xorw t2, t2, 0x00ff
2029 x4 mullw t3, t1, t2
2030 x4 div255w t3, t3
2031 x4 convwb t4, t3
2032
2033 x4 convubw d_wide, d1
2034 splatw3q t2, t1
2035 x4 xorw t2, t2, 0x00ff
2036 x4 mullw t1, d_wide, t2
2037 x4 div255w t1, t1
2038 x4 convwb t5, t1
2039
2040 x4 addusb d1, t4, t5
2041
2042
2043 .function orc_code_combine_xor_u_n
2044 .dest 4 d1
2045 .source 4 s1
2046 .temp 8 d_wide
2047 .temp 8 s_wide
2048 .temp 8 m_wide
2049 .temp 8 t1
2050 .temp 8 t2
2051 .temp 8 t3
2052 .temp 4 t4
2053 .temp 4 t5
2054
2055 x4 convubw t1, s1
2056 x4 convubw d_wide, d1
2057 splatw3q t2, d_wide
2058 x4 xorw t2, t2, 0x00ff
2059 x4 mullw t3, t1, t2
2060 x4 div255w t3, t3
2061 x4 convwb t4, t3
2062
2063 x4 convubw d_wide, d1
2064 splatw3q t2, t1
2065 x4 xorw t2, t2, 0x00ff
2066 x4 mullw t1, d_wide, t2
2067 x4 div255w t1, t1
2068 x4 convwb t5, t1
2069
2070 x4 addusb d1, t4, t5
2071
2072
2073
2074 .function orc_code_combine_add_ca
2075 .dest 4 d1
2076 .source 4 s1
2077 .source 4 s2
2078 .temp 8 t1
2079 .temp 8 t2
2080 .temp 4 t3
2081
2082 x4 convubw t1, s1
2083 x4 convubw t2, s2
2084 #splatw3q t2, t2
2085 x4 mullw t1, t1, t2
2086 x4 div255w t1, t1
2087 x4 convwb t3, t1
2088 x4 addusb d1, d1, t3
2089
2090
2091 .function orc_code_combine_add_ca_n
2092 .dest 4 d1
2093 .source 4 s1
2094
2095 x4 addusb d1, d1, s1
2096
2097
2098 .function orc_code_combine_over_ca
2099 .dest 4 d1
2100 .source 4 s1
2101 .source 4 s2
2102 .temp 8 t1
2103 .temp 8 t2
2104 .temp 4 d
2105 .temp 8 d_wide
2106 .temp 8 m_wide
2107 .temp 8 s_wide
2108 .temp 8 xa
2109 .temp 4 s
2110
2111 x4 convubw s_wide, s1
2112 x4 convubw m_wide, s2
2113 splatw3q xa, s_wide
2114 x4 mullw s_wide, s_wide, m_wide
2115 x4 div255w s_wide, s_wide
2116 x4 convwb s, s_wide
2117 x4 mullw m_wide, m_wide, xa
2118 x4 div255w m_wide, m_wide
2119 loadl d, d1
2120 x4 convubw d_wide, d
2121 x4 xorw m_wide, m_wide, 0x00ff
2122 x4 mullw t1, d_wide, m_wide
2123 x4 div255w t1, t1
2124 x4 convwb d, t1
2125 x4 addusb d1, d, s
2126
2127
2128
2129 .function orc_code_combine_over_ca_n
2130 .dest 4 d1
2131 .source 4 s1
2132 .temp 8 t1
2133 .temp 8 t2
2134 .temp 4 d
2135 .temp 8 d_wide
2136 .temp 8 m_wide
2137 .temp 8 s_wide
2138 .temp 8 xa
2139 .temp 4 s
2140
2141 x4 convubw s_wide, s1
2142 splatw3q xa, s_wide
2143 x4 convwb s, s_wide
2144 x4 copyw m_wide, xa
2145 loadl d, d1
2146 x4 convubw d_wide, d
2147 x4 xorw m_wide, m_wide, 0x00ff
2148 x4 mullw t1, d_wide, m_wide
2149 x4 div255w t1, t1
2150 x4 convwb d, t1
2151 x4 addusb d1, d, s
2152
2153
2154
2155 .function orc_composite_over_8888_8_8888_line
2156 .dest 4 d1
2157 .source 4 s1
2158 .source 1 s2
2159 .temp 8 t1
2160 .temp 8 t2
2161 .temp 4 t3
2162 .temp 4 d
2163 .temp 4 mask
2164 .temp 8 d_wide
2165
2166 x4 convubw t1, s1
2167 splatbl mask, s2
2168 x4 convubw t2, mask
2169 x4 mullw t1, t1, t2
2170 x4 div255w t1, t1
2171 x4 convwb t3, t1
2172 loadl d, d1
2173 x4 convubw d_wide, d
2174 x4 xorw t1, t1, 0x00ff
2175 splatw3q t2, t1
2176 x4 mullw t1, d_wide, t2
2177 x4 div255w t1, t1
2178 x4 convwb d, t1
2179 x4 addusb d1, d, t3
2180
2181
2182
2183 .function orc_composite_over_n_8888_8888_ca_2d
2184 #.flags 2d
2185 .dest 4 d1
2186 .source 4 s1
2187 .param 4 p1
2188 .temp 8 t1
2189 .temp 8 t2
2190 .temp 4 d
2191 .temp 8 d_wide
2192 .temp 8 m_wide
2193 .temp 8 s_wide
2194 .temp 8 xa
2195 .temp 4 s
2196
2197 x4 convubw s_wide, p1
2198 x4 convubw m_wide, s1
2199 splatw3q xa, s_wide
2200 x4 mullw s_wide, s_wide, m_wide
2201 x4 div255w s_wide, s_wide
2202 x4 convwb s, s_wide
2203 x4 mullw m_wide, m_wide, xa
2204 x4 div255w m_wide, m_wide
2205 loadl d, d1
2206 x4 convubw d_wide, d
2207 x4 xorw m_wide, m_wide, 0x00ff
2208 x4 mullw t1, d_wide, m_wide
2209 x4 div255w t1, t1
2210 x4 convwb d, t1
2211 x4 addusb d1, d, s
2212
2213
2214 .function cogorc_resample_horiz_1tap
2215 .dest 1 d1
2216 .source 1 s1
2217 .param 2 p1
2218 .param 2 p2
2219
2220 ldresnearb d1, s1, p1, p2
2221
2222
2223 .function cogorc_resample_horiz_2tap
2224 .dest 1 d1
2225 .source 1 s1
2226 .param 4 p1
2227 .param 4 p2
2228
2229 ldreslinb d1, s1, p1, p2
2230
2231
2232 .function test_float_constant_1
2233 .dest 4 d1
2234 .const 4 c1 2.0
2235
2236 copyl d1, c1
2237
2238
2239 .function test_float_constant_2
2240 .dest 4 d1
2241
2242 copyl d1, 2.0
2243
2244
2245 .function convert_fc32_to_int32
2246 .source 8 src #one complex float
2247 .dest 4 dst #one complex short
2248 .temp 8 scaled
2249 x2 mulf scaled, src, 32767.0
2250 .temp 8 lscaled
2251 x2 convfl lscaled, scaled
2252 x2 convlw dst, lscaled
2253
2254
2255 .function param64
2256 .dest 8 d
2257 .param 8 s
2258
2259 copyq d, s
2260
2261
2262 .function const64
2263 .dest 8 d
2264 .const 8 s 0x0123456789abcdef
2265
2266 copyq d, s
2267
2268
2269 .function param64_2
2270 .dest 8 d
2271 .longparam 8 p
2272 .temp 8 t
2273
2274 loadpq t, p
2275 copyq d, t
2276
2277
2278 .function pa_volume_s16ne_orc_2ch
2279 .dest 4 samples int16_t
2280 .longparam 8 vols
2281 .temp 8 v
2282 .temp 8 s
2283 .temp 8 ss
2284 .temp 8 m
2285 .temp 8 signc
2286
2287 loadpq v, vols
2288 x2 convuwl s, samples
2289 x2 convswl ss, samples
2290 x4 cmpgtsw signc, 0, s
2291 x4 andw signc, signc, v
2292 x4 mulhuw m, s, v
2293 x2 subl m, m, signc
2294 x2 shrul v, v, 16
2295 x2 mulll ss, ss, v
2296 x2 addl m, m, ss
2297 x2 convssslw samples, m
2298
2299