History

Remove sad.asm from the processing lib, move satd_sad from the encoder to the common lib

sad.asm as used in processing is an exact subset of the code in satd_sad.asm in the encoder.

Martin Storsjö committed 12 years ago

Commit 37619011 parent ac1dbf57 files · +3 −224Browse files

Showing the changes to codec/processing/src (1 of 7 files). Show all

Unified · Split

codec/processing/src/asm/sad.asm+0−220
@@ -1,220 +0,0 @@
1;*!
2;* \copy
3;* Copyright (c) 2009-2013, Cisco Systems
4;* All rights reserved.
5;*
6;* Redistribution and use in source and binary forms, with or without
7;* modification, are permitted provided that the following conditions
8;* are met:
9;*
10;* * Redistributions of source code must retain the above copyright
11;* notice, this list of conditions and the following disclaimer.
12;*
13;* * Redistributions in binary form must reproduce the above copyright
14;* notice, this list of conditions and the following disclaimer in
15;* the documentation and/or other materials provided with the
16;* distribution.
17;*
18;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19;* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20;* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21;* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22;* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
23;* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24;* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25;* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27;* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28;* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29;* POSSIBILITY OF SUCH DAMAGE.
30;*
31;*
32;* sad.asm
33;*
34;* Abstract
35;* WelsSampleSad8x8_sse21
36;*
37;* History
38;* 8/5/2009 Created
39;*
40;*
41;*************************************************************************/
42
43%include "asm_inc.asm"
44
45;***********************************************************************
46; Macros and other preprocessor constants
47;***********************************************************************
48%macro CACHE_SPLIT_CHECK 3 ; address, width, cacheline
49and %1, 0x1f|(%3>>1)
50cmp %1, (32-%2)|(%3>>1)
51%endmacro
52
53%macro SSE2_GetSad8x4 0
54 movq xmm0, [r0]
55 movq xmm1, [r0+r1]
56 lea r0, [r0+2*r1]
57 movhps xmm0, [r0]
58 movhps xmm1, [r0+r1]
59
60 movq xmm2, [r2]
61 movq xmm3, [r2+r3]
62 lea r2, [r2+2*r3]
63 movhps xmm2, [r2]
64 movhps xmm3, [r2+r3]
65 psadbw xmm0, xmm2
66 psadbw xmm1, xmm3
67 paddw xmm6, xmm0
68 paddw xmm6, xmm1
69%endmacro
70
71
72;***********************************************************************
73; Code
74;***********************************************************************
75SECTION .text
76
77WELS_EXTERN WelsSampleSad8x8_sse21
78WelsSampleSad8x8_sse21:
79 ;mov ecx, [esp+12]
80 ;mov edx, ecx
81 ;CACHE_SPLIT_CHECK edx, 8, 64
82 ;jle near .pixel_sad_8x8_nsplit
83 ;push ebx
84 ;push edi
85 ;mov eax, [esp+12]
86 ;mov ebx, [esp+16]
87
88 %assign push_num 0
89 mov r2, arg3
90 push r2
91 CACHE_SPLIT_CHECK r2, 8, 64
92 jle near .pixel_sad_8x8_nsplit
93 pop r2
94%ifdef X86_32
95 push r3
96 push r4
97 push r5
98%endif
99 %assign push_num 3
100 mov r0, arg1
101 mov r1, arg2
102 SIGN_EXTENTION r1, r1d
103 pxor xmm7, xmm7
104
105 ;ecx r2, edx r4, edi r5
106
107 mov r5, r2
108 and r5, 0x07
109 sub r2, r5
110 mov r4, 8
111 sub r4, r5
112
113 shl r5, 3
114 shl r4, 3
115 movd xmm5, r5d
116 movd xmm6, r4d
117 mov r5, 8
118 add r5, r2
119 mov r3, arg4
120 SIGN_EXTENTION r3, r3d
121 movq xmm0, [r0]
122 movhps xmm0, [r0+r1]
123
124 movq xmm1, [r2]
125 movq xmm2, [r5]
126 movhps xmm1, [r2+r3]
127 movhps xmm2, [r5+r3]
128 psrlq xmm1, xmm5
129 psllq xmm2, xmm6
130 por xmm1, xmm2
131
132 psadbw xmm0, xmm1
133 paddw xmm7, xmm0
134
135 lea r0, [r0+2*r1]
136 lea r2, [r2+2*r3]
137 lea r5, [r5+2*r3]
138
139 movq xmm0, [r0]
140 movhps xmm0, [r0+r1]
141
142 movq xmm1, [r2]
143 movq xmm2, [r5]
144 movhps xmm1, [r2+r3]
145 movhps xmm2, [r5+r3]
146 psrlq xmm1, xmm5
147 psllq xmm2, xmm6
148 por xmm1, xmm2
149
150 psadbw xmm0, xmm1
151 paddw xmm7, xmm0
152
153 lea r0, [r0+2*r1]
154 lea r2, [r2+2*r3]
155 lea r5, [r5+2*r3]
156
157 movq xmm0, [r0]
158 movhps xmm0, [r0+r1]
159
160 movq xmm1, [r2]
161 movq xmm2, [r5]
162 movhps xmm1, [r2+r3]
163 movhps xmm2, [r5+r3]
164 psrlq xmm1, xmm5
165 psllq xmm2, xmm6
166 por xmm1, xmm2
167
168 psadbw xmm0, xmm1
169 paddw xmm7, xmm0
170
171 lea r0, [r0+2*r1]
172 lea r2, [r2+2*r3]
173 lea r5, [r5+2*r3]
174
175 movq xmm0, [r0]
176 movhps xmm0, [r0+r1]
177
178 movq xmm1, [r2]
179 movq xmm2, [r5]
180 movhps xmm1, [r2+r3]
181 movhps xmm2, [r5+r3]
182 psrlq xmm1, xmm5
183 psllq xmm2, xmm6
184 por xmm1, xmm2
185
186 psadbw xmm0, xmm1
187 paddw xmm7, xmm0
188
189 movhlps xmm0, xmm7
190 paddw xmm0, xmm7
191 movd retrd, xmm0
192%ifdef X86_32
193 pop r5
194 pop r4
195 pop r3
196%endif
197 jmp .return
198
199.pixel_sad_8x8_nsplit:
200 ;push ebx
201 ;mov eax, [esp+8]
202 ;mov ebx, [esp+12]
203 ;mov edx, [esp+20]
204
205 pop r2
206 %assign push_num 0
207 LOAD_4_PARA
208 SIGN_EXTENTION r1, r1d
209 SIGN_EXTENTION r3, r3d
210 pxor xmm6, xmm6
211 SSE2_GetSad8x4
212 lea r0, [r0+2*r1]
213 lea r2, [r2+2*r3]
214 SSE2_GetSad8x4
215 movhlps xmm0, xmm6
216 paddw xmm0, xmm6
217 movd retrd, xmm0
218 LOAD_4_PARA_POP
219.return:
220 ret

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t