1 /*****************************************************************************
2 * pixel.asm: sparc pixel metrics
3 *****************************************************************************
4 * Copyright (C) 2005-2012 x264 project
6 * Authors: Phil Jensen <philj@csufresno.edu>
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.
22 * This program is also available under a commercial proprietary license.
23 * For more information, contact us at licensing@x264.com.
24 *****************************************************************************/
26 ! VIS optimized SAD for UltraSPARC
29 .global x264_pixel_sad_8x8_vis
30 x264_pixel_sad_8x8_vis:
35 alignaddr %i0, %g0, %l0
38 faligndata %f0, %f2, %f4
40 alignaddr %i2, %g0, %l2
43 faligndata %f6, %f8, %f10
49 alignaddr %i0, %g0, %l0
52 faligndata %f0, %f2, %f4
54 alignaddr %i2, %g0, %l2
57 faligndata %f6, %f8, %f10
63 alignaddr %i0, %g0, %l0
66 faligndata %f0, %f2, %f4
68 alignaddr %i2, %g0, %l2
71 faligndata %f6, %f8, %f10
77 alignaddr %i0, %g0, %l0
80 faligndata %f0, %f2, %f4
82 alignaddr %i2, %g0, %l2
85 faligndata %f6, %f8, %f10
91 alignaddr %i0, %g0, %l0
94 faligndata %f0, %f2, %f4
96 alignaddr %i2, %g0, %l2
99 faligndata %f6, %f8, %f10
103 pdist %f4, %f10, %f12
105 alignaddr %i0, %g0, %l0
108 faligndata %f0, %f2, %f4
110 alignaddr %i2, %g0, %l2
113 faligndata %f6, %f8, %f10
117 pdist %f4, %f10, %f12
119 alignaddr %i0, %g0, %l0
122 faligndata %f0, %f2, %f4
124 alignaddr %i2, %g0, %l2
127 faligndata %f6, %f8, %f10
131 pdist %f4, %f10, %f12
133 alignaddr %i0, %g0, %l0
136 faligndata %f0, %f2, %f4
138 alignaddr %i2, %g0, %l2
141 faligndata %f6, %f8, %f10
145 pdist %f4, %f10, %f12
153 .global x264_pixel_sad_8x16_vis
154 x264_pixel_sad_8x16_vis:
159 alignaddr %i0, %g0, %l0
162 faligndata %f0, %f2, %f4
164 alignaddr %i2, %g0, %l2
167 faligndata %f6, %f8, %f10
171 pdist %f4, %f10, %f12
173 alignaddr %i0, %g0, %l0
176 faligndata %f0, %f2, %f4
178 alignaddr %i2, %g0, %l2
181 faligndata %f6, %f8, %f10
185 pdist %f4, %f10, %f12
187 alignaddr %i0, %g0, %l0
190 faligndata %f0, %f2, %f4
192 alignaddr %i2, %g0, %l2
195 faligndata %f6, %f8, %f10
199 pdist %f4, %f10, %f12
201 alignaddr %i0, %g0, %l0
204 faligndata %f0, %f2, %f4
206 alignaddr %i2, %g0, %l2
209 faligndata %f6, %f8, %f10
213 pdist %f4, %f10, %f12
215 alignaddr %i0, %g0, %l0
218 faligndata %f0, %f2, %f4
220 alignaddr %i2, %g0, %l2
223 faligndata %f6, %f8, %f10
227 pdist %f4, %f10, %f12
229 alignaddr %i0, %g0, %l0
232 faligndata %f0, %f2, %f4
234 alignaddr %i2, %g0, %l2
237 faligndata %f6, %f8, %f10
241 pdist %f4, %f10, %f12
243 alignaddr %i0, %g0, %l0
246 faligndata %f0, %f2, %f4
248 alignaddr %i2, %g0, %l2
251 faligndata %f6, %f8, %f10
255 pdist %f4, %f10, %f12
257 alignaddr %i0, %g0, %l0
260 faligndata %f0, %f2, %f4
262 alignaddr %i2, %g0, %l2
265 faligndata %f6, %f8, %f10
269 pdist %f4, %f10, %f12
271 alignaddr %i0, %g0, %l0
274 faligndata %f0, %f2, %f4
276 alignaddr %i2, %g0, %l2
279 faligndata %f6, %f8, %f10
283 pdist %f4, %f10, %f12
285 alignaddr %i0, %g0, %l0
288 faligndata %f0, %f2, %f4
290 alignaddr %i2, %g0, %l2
293 faligndata %f6, %f8, %f10
297 pdist %f4, %f10, %f12
299 alignaddr %i0, %g0, %l0
302 faligndata %f0, %f2, %f4
304 alignaddr %i2, %g0, %l2
307 faligndata %f6, %f8, %f10
311 pdist %f4, %f10, %f12
313 alignaddr %i0, %g0, %l0
316 faligndata %f0, %f2, %f4
318 alignaddr %i2, %g0, %l2
321 faligndata %f6, %f8, %f10
325 pdist %f4, %f10, %f12
327 alignaddr %i0, %g0, %l0
330 faligndata %f0, %f2, %f4
332 alignaddr %i2, %g0, %l2
335 faligndata %f6, %f8, %f10
339 pdist %f4, %f10, %f12
341 alignaddr %i0, %g0, %l0
344 faligndata %f0, %f2, %f4
346 alignaddr %i2, %g0, %l2
349 faligndata %f6, %f8, %f10
353 pdist %f4, %f10, %f12
355 alignaddr %i0, %g0, %l0
358 faligndata %f0, %f2, %f4
360 alignaddr %i2, %g0, %l2
363 faligndata %f6, %f8, %f10
367 pdist %f4, %f10, %f12
369 alignaddr %i0, %g0, %l0
372 faligndata %f0, %f2, %f4
374 alignaddr %i2, %g0, %l2
377 faligndata %f6, %f8, %f10
381 pdist %f4, %f10, %f12
389 .global x264_pixel_sad_16x8_vis
390 x264_pixel_sad_16x8_vis:
393 fzero %f12 ! zero out the accumulator used for pdist
395 sub %i1, 8, %i1 ! reduce stride by 8, since we are moving forward 8 each block
396 sub %i3, 8, %i3 ! same here, reduce stride by 8
398 alignaddr %i0, %g0, %l0
401 faligndata %f0, %f2, %f4
403 alignaddr %i2, %g0, %l2
406 faligndata %f6, %f8, %f10
410 pdist %f4, %f10, %f12
412 alignaddr %i0, %g0, %l0
415 faligndata %f0, %f2, %f4
417 alignaddr %i2, %g0, %l2
420 faligndata %f6, %f8, %f10
424 pdist %f4, %f10, %f12
426 alignaddr %i0, %g0, %l0
429 faligndata %f0, %f2, %f4
431 alignaddr %i2, %g0, %l2
434 faligndata %f6, %f8, %f10
438 pdist %f4, %f10, %f12
440 alignaddr %i0, %g0, %l0
443 faligndata %f0, %f2, %f4
445 alignaddr %i2, %g0, %l2
448 faligndata %f6, %f8, %f10
452 pdist %f4, %f10, %f12
454 alignaddr %i0, %g0, %l0
457 faligndata %f0, %f2, %f4
459 alignaddr %i2, %g0, %l2
462 faligndata %f6, %f8, %f10
466 pdist %f4, %f10, %f12
468 alignaddr %i0, %g0, %l0
471 faligndata %f0, %f2, %f4
473 alignaddr %i2, %g0, %l2
476 faligndata %f6, %f8, %f10
480 pdist %f4, %f10, %f12
482 alignaddr %i0, %g0, %l0
485 faligndata %f0, %f2, %f4
487 alignaddr %i2, %g0, %l2
490 faligndata %f6, %f8, %f10
494 pdist %f4, %f10, %f12
496 alignaddr %i0, %g0, %l0
499 faligndata %f0, %f2, %f4
501 alignaddr %i2, %g0, %l2
504 faligndata %f6, %f8, %f10
508 pdist %f4, %f10, %f12
510 alignaddr %i0, %g0, %l0
513 faligndata %f0, %f2, %f4
515 alignaddr %i2, %g0, %l2
518 faligndata %f6, %f8, %f10
522 pdist %f4, %f10, %f12
524 alignaddr %i0, %g0, %l0
527 faligndata %f0, %f2, %f4
529 alignaddr %i2, %g0, %l2
532 faligndata %f6, %f8, %f10
536 pdist %f4, %f10, %f12
538 alignaddr %i0, %g0, %l0
541 faligndata %f0, %f2, %f4
543 alignaddr %i2, %g0, %l2
546 faligndata %f6, %f8, %f10
550 pdist %f4, %f10, %f12
552 alignaddr %i0, %g0, %l0
555 faligndata %f0, %f2, %f4
557 alignaddr %i2, %g0, %l2
560 faligndata %f6, %f8, %f10
564 pdist %f4, %f10, %f12
566 alignaddr %i0, %g0, %l0
569 faligndata %f0, %f2, %f4
571 alignaddr %i2, %g0, %l2
574 faligndata %f6, %f8, %f10
578 pdist %f4, %f10, %f12
580 alignaddr %i0, %g0, %l0
583 faligndata %f0, %f2, %f4
585 alignaddr %i2, %g0, %l2
588 faligndata %f6, %f8, %f10
592 pdist %f4, %f10, %f12
594 alignaddr %i0, %g0, %l0
597 faligndata %f0, %f2, %f4
599 alignaddr %i2, %g0, %l2
602 faligndata %f6, %f8, %f10
606 pdist %f4, %f10, %f12
608 alignaddr %i0, %g0, %l0
611 faligndata %f0, %f2, %f4
613 alignaddr %i2, %g0, %l2
616 faligndata %f6, %f8, %f10
620 pdist %f4, %f10, %f12
628 .global x264_pixel_sad_16x16_vis
629 x264_pixel_sad_16x16_vis:
632 fzero %f12 ! zero out the accumulator used for pdist
634 sub %i1, 8, %i1 ! reduce stride by 8, since we are moving forward 8 each block
635 sub %i3, 8, %i3 ! same here, reduce stride by 8
637 alignaddr %i0, %g0, %l0
640 faligndata %f0, %f2, %f4
642 alignaddr %i2, %g0, %l2
645 faligndata %f6, %f8, %f10
649 pdist %f4, %f10, %f12
651 alignaddr %i0, %g0, %l0
654 faligndata %f0, %f2, %f4
656 alignaddr %i2, %g0, %l2
659 faligndata %f6, %f8, %f10
663 pdist %f4, %f10, %f12
665 alignaddr %i0, %g0, %l0
668 faligndata %f0, %f2, %f4
670 alignaddr %i2, %g0, %l2
673 faligndata %f6, %f8, %f10
677 pdist %f4, %f10, %f12
679 alignaddr %i0, %g0, %l0
682 faligndata %f0, %f2, %f4
684 alignaddr %i2, %g0, %l2
687 faligndata %f6, %f8, %f10
691 pdist %f4, %f10, %f12
693 alignaddr %i0, %g0, %l0
696 faligndata %f0, %f2, %f4
698 alignaddr %i2, %g0, %l2
701 faligndata %f6, %f8, %f10
705 pdist %f4, %f10, %f12
707 alignaddr %i0, %g0, %l0
710 faligndata %f0, %f2, %f4
712 alignaddr %i2, %g0, %l2
715 faligndata %f6, %f8, %f10
719 pdist %f4, %f10, %f12
721 alignaddr %i0, %g0, %l0
724 faligndata %f0, %f2, %f4
726 alignaddr %i2, %g0, %l2
729 faligndata %f6, %f8, %f10
733 pdist %f4, %f10, %f12
735 alignaddr %i0, %g0, %l0
738 faligndata %f0, %f2, %f4
740 alignaddr %i2, %g0, %l2
743 faligndata %f6, %f8, %f10
747 pdist %f4, %f10, %f12
749 alignaddr %i0, %g0, %l0
752 faligndata %f0, %f2, %f4
754 alignaddr %i2, %g0, %l2
757 faligndata %f6, %f8, %f10
761 pdist %f4, %f10, %f12
763 alignaddr %i0, %g0, %l0
766 faligndata %f0, %f2, %f4
768 alignaddr %i2, %g0, %l2
771 faligndata %f6, %f8, %f10
775 pdist %f4, %f10, %f12
777 alignaddr %i0, %g0, %l0
780 faligndata %f0, %f2, %f4
782 alignaddr %i2, %g0, %l2
785 faligndata %f6, %f8, %f10
789 pdist %f4, %f10, %f12
791 alignaddr %i0, %g0, %l0
794 faligndata %f0, %f2, %f4
796 alignaddr %i2, %g0, %l2
799 faligndata %f6, %f8, %f10
803 pdist %f4, %f10, %f12
805 alignaddr %i0, %g0, %l0
808 faligndata %f0, %f2, %f4
810 alignaddr %i2, %g0, %l2
813 faligndata %f6, %f8, %f10
817 pdist %f4, %f10, %f12
819 alignaddr %i0, %g0, %l0
822 faligndata %f0, %f2, %f4
824 alignaddr %i2, %g0, %l2
827 faligndata %f6, %f8, %f10
831 pdist %f4, %f10, %f12
833 alignaddr %i0, %g0, %l0
836 faligndata %f0, %f2, %f4
838 alignaddr %i2, %g0, %l2
841 faligndata %f6, %f8, %f10
845 pdist %f4, %f10, %f12
847 alignaddr %i0, %g0, %l0
850 faligndata %f0, %f2, %f4
852 alignaddr %i2, %g0, %l2
855 faligndata %f6, %f8, %f10
859 pdist %f4, %f10, %f12
861 alignaddr %i0, %g0, %l0
864 faligndata %f0, %f2, %f4
866 alignaddr %i2, %g0, %l2
869 faligndata %f6, %f8, %f10
873 pdist %f4, %f10, %f12
875 alignaddr %i0, %g0, %l0
878 faligndata %f0, %f2, %f4
880 alignaddr %i2, %g0, %l2
883 faligndata %f6, %f8, %f10
887 pdist %f4, %f10, %f12
889 alignaddr %i0, %g0, %l0
892 faligndata %f0, %f2, %f4
894 alignaddr %i2, %g0, %l2
897 faligndata %f6, %f8, %f10
901 pdist %f4, %f10, %f12
903 alignaddr %i0, %g0, %l0
906 faligndata %f0, %f2, %f4
908 alignaddr %i2, %g0, %l2
911 faligndata %f6, %f8, %f10
915 pdist %f4, %f10, %f12
917 alignaddr %i0, %g0, %l0
920 faligndata %f0, %f2, %f4
922 alignaddr %i2, %g0, %l2
925 faligndata %f6, %f8, %f10
929 pdist %f4, %f10, %f12
931 alignaddr %i0, %g0, %l0
934 faligndata %f0, %f2, %f4
936 alignaddr %i2, %g0, %l2
939 faligndata %f6, %f8, %f10
943 pdist %f4, %f10, %f12
945 alignaddr %i0, %g0, %l0
948 faligndata %f0, %f2, %f4
950 alignaddr %i2, %g0, %l2
953 faligndata %f6, %f8, %f10
957 pdist %f4, %f10, %f12
959 alignaddr %i0, %g0, %l0
962 faligndata %f0, %f2, %f4
964 alignaddr %i2, %g0, %l2
967 faligndata %f6, %f8, %f10
971 pdist %f4, %f10, %f12
973 alignaddr %i0, %g0, %l0
976 faligndata %f0, %f2, %f4
978 alignaddr %i2, %g0, %l2
981 faligndata %f6, %f8, %f10
985 pdist %f4, %f10, %f12
987 alignaddr %i0, %g0, %l0
990 faligndata %f0, %f2, %f4
992 alignaddr %i2, %g0, %l2
995 faligndata %f6, %f8, %f10
999 pdist %f4, %f10, %f12
1001 alignaddr %i0, %g0, %l0
1004 faligndata %f0, %f2, %f4
1006 alignaddr %i2, %g0, %l2
1009 faligndata %f6, %f8, %f10
1013 pdist %f4, %f10, %f12
1015 alignaddr %i0, %g0, %l0
1018 faligndata %f0, %f2, %f4
1020 alignaddr %i2, %g0, %l2
1023 faligndata %f6, %f8, %f10
1027 pdist %f4, %f10, %f12
1029 alignaddr %i0, %g0, %l0
1032 faligndata %f0, %f2, %f4
1034 alignaddr %i2, %g0, %l2
1037 faligndata %f6, %f8, %f10
1041 pdist %f4, %f10, %f12
1043 alignaddr %i0, %g0, %l0
1046 faligndata %f0, %f2, %f4
1048 alignaddr %i2, %g0, %l2
1051 faligndata %f6, %f8, %f10
1055 pdist %f4, %f10, %f12
1057 alignaddr %i0, %g0, %l0
1060 faligndata %f0, %f2, %f4
1062 alignaddr %i2, %g0, %l2
1065 faligndata %f6, %f8, %f10
1069 pdist %f4, %f10, %f12
1071 alignaddr %i0, %g0, %l0
1074 faligndata %f0, %f2, %f4
1076 alignaddr %i2, %g0, %l2
1079 faligndata %f6, %f8, %f10
1083 pdist %f4, %f10, %f12