38cf056d00190f7db0ebc0553f4f87082e6ed439
[x264/x264-sandbox.git] / common / sparc / pixel.asm
1 /*****************************************************************************
2  * pixel.asm: h264 encoder library
3  *****************************************************************************
4  * Copyright (C) 2005 x264 project
5  * $Id: $
6  *
7  * Authors: Phil Jensen <philj@csufresno.edu>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
22  *****************************************************************************/
23
24 ! VIS optimized SAD for UltraSPARC
25
26 .text
27 .align 4
28 .global x264_pixel_sad_8x8_vis
29 x264_pixel_sad_8x8_vis:
30         save %sp, -120, %sp
31
32         fzero %f12
33
34         alignaddr %i0, %g0, %l0
35         ldd [%l0], %f0
36         ldd [%l0+8], %f2
37         faligndata %f0, %f2, %f4
38
39         alignaddr %i2, %g0, %l2
40         ldd [%l2], %f6
41         ldd [%l2+8], %f8
42         faligndata %f6, %f8, %f10
43
44         add %i0, %i1, %i0
45         add %i2, %i3, %i2
46         pdist %f4, %f10, %f12
47
48         alignaddr %i0, %g0, %l0
49         ldd [%l0], %f0
50         ldd [%l0+8], %f2
51         faligndata %f0, %f2, %f4
52
53         alignaddr %i2, %g0, %l2
54         ldd [%l2], %f6
55         ldd [%l2+8], %f8
56         faligndata %f6, %f8, %f10
57
58         add %i0, %i1, %i0
59         add %i2, %i3, %i2
60         pdist %f4, %f10, %f12
61
62         alignaddr %i0, %g0, %l0
63         ldd [%l0], %f0
64         ldd [%l0+8], %f2
65         faligndata %f0, %f2, %f4
66
67         alignaddr %i2, %g0, %l2
68         ldd [%l2], %f6
69         ldd [%l2+8], %f8
70         faligndata %f6, %f8, %f10
71
72         add %i0, %i1, %i0
73         add %i2, %i3, %i2
74         pdist %f4, %f10, %f12
75
76         alignaddr %i0, %g0, %l0
77         ldd [%l0], %f0
78         ldd [%l0+8], %f2
79         faligndata %f0, %f2, %f4
80
81         alignaddr %i2, %g0, %l2
82         ldd [%l2], %f6
83         ldd [%l2+8], %f8
84         faligndata %f6, %f8, %f10
85
86         add %i0, %i1, %i0
87         add %i2, %i3, %i2
88         pdist %f4, %f10, %f12
89
90         alignaddr %i0, %g0, %l0
91         ldd [%l0], %f0
92         ldd [%l0+8], %f2
93         faligndata %f0, %f2, %f4
94
95         alignaddr %i2, %g0, %l2
96         ldd [%l2], %f6
97         ldd [%l2+8], %f8
98         faligndata %f6, %f8, %f10
99
100         add %i0, %i1, %i0
101         add %i2, %i3, %i2
102         pdist %f4, %f10, %f12
103
104         alignaddr %i0, %g0, %l0
105         ldd [%l0], %f0
106         ldd [%l0+8], %f2
107         faligndata %f0, %f2, %f4
108
109         alignaddr %i2, %g0, %l2
110         ldd [%l2], %f6
111         ldd [%l2+8], %f8
112         faligndata %f6, %f8, %f10
113
114         add %i0, %i1, %i0
115         add %i2, %i3, %i2
116         pdist %f4, %f10, %f12
117
118         alignaddr %i0, %g0, %l0
119         ldd [%l0], %f0
120         ldd [%l0+8], %f2
121         faligndata %f0, %f2, %f4
122
123         alignaddr %i2, %g0, %l2
124         ldd [%l2], %f6
125         ldd [%l2+8], %f8
126         faligndata %f6, %f8, %f10
127
128         add %i0, %i1, %i0
129         add %i2, %i3, %i2
130         pdist %f4, %f10, %f12
131
132         alignaddr %i0, %g0, %l0
133         ldd [%l0], %f0
134         ldd [%l0+8], %f2
135         faligndata %f0, %f2, %f4
136
137         alignaddr %i2, %g0, %l2
138         ldd [%l2], %f6
139         ldd [%l2+8], %f8
140         faligndata %f6, %f8, %f10
141
142         add %i0, %i1, %i0
143         add %i2, %i3, %i2
144         pdist %f4, %f10, %f12
145
146         std %f12, [%fp-24]
147         ld [%fp-20], %i0
148
149         ret
150         restore