History

Convert source files to unix newlines

Most files were converted in ff6b669176, but some (non C++ source files) were left with windows newlines.

Martin Storsjö committed 12 years ago

Commit 8f9a5461 parent dcf08c618 files · +8721 −8721Browse files

Showing the changes to codec/decoder (3 of 18 files). Show all

Unified · Split

3 files
  1. codec/decoder/core/asm/dct.asm +129 −129
  2. codec/decoder/core/asm/deblock.asm +2112 −2112
  3. codec/decoder/core/asm/mc_chroma.asm +317 −317
codec/decoder/core/asm/dct.asm+129−129
@@ -1,129 +1,129 @@
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−;* dct.asm
33−;*
34−;* Abstract
35−;* WelsDctFourT4_sse2
36−;*
37−;* History
38−;* 8/4/2009 Created
39−;*
40−;*
41−;*************************************************************************/
42−
43−%include "asm_inc.asm"
44−
45−BITS 32
46−
47−;*******************************************************************************
48−; Macros and other preprocessor constants
49−;*******************************************************************************
50−%macro MMX_SumSubDiv2 3
51− movq %3, %2
52− psraw %3, $1
53− paddw %3, %1
54− psraw %1, $1
55− psubw %1, %2
56−%endmacro
57−
58−%macro MMX_SumSub 3
59− movq %3, %2
60− psubw %2, %1
61− paddw %1, %3
62−%endmacro
63−
64−%macro MMX_IDCT 6
65− MMX_SumSub %4, %5, %6
66− MMX_SumSubDiv2 %3, %2, %1
67− MMX_SumSub %1, %4, %6
68− MMX_SumSub %3, %5, %6
69−%endmacro
70−
71−
72−%macro MMX_StoreDiff4P 5
73− movd %2, %5
74− punpcklbw %2, %4
75− paddw %1, %3
76− psraw %1, $6
77− paddsw %1, %2
78− packuswb %1, %2
79− movd %5, %1
80−%endmacro
81−
82−;*******************************************************************************
83−; Code
84−;*******************************************************************************
85−
86−SECTION .text
87−
88−WELS_EXTERN IdctResAddPred_mmx
89−
90−ALIGN 16
91−;*******************************************************************************
92−; void_t __cdecl IdctResAddPred_mmx( uint8_t *pPred, const int32_t kiStride, int16_t *pRs )
93−;*******************************************************************************
94−
95−IdctResAddPred_mmx:
96−
97−%define pushsize 0
98−%define pPred esp+pushsize+4
99−%define kiStride esp+pushsize+8
100−%define pRs esp+pushsize+12
101−
102− mov eax, [pRs ]
103− mov edx, [pPred ]
104− mov ecx, [kiStride]
105− movq mm0, [eax+ 0]
106− movq mm1, [eax+ 8]
107− movq mm2, [eax+16]
108− movq mm3, [eax+24]
109−
110− MMX_Trans4x4W mm0, mm1, mm2, mm3, mm4
111− MMX_IDCT mm1, mm2, mm3, mm4, mm0, mm6
112− MMX_Trans4x4W mm1, mm3, mm0, mm4, mm2
113− MMX_IDCT mm3, mm0, mm4, mm2, mm1, mm6
114−
115− WELS_Zero mm7
116− WELS_DW32 mm6
117−
118− MMX_StoreDiff4P mm3, mm0, mm6, mm7, [edx]
119− MMX_StoreDiff4P mm4, mm0, mm6, mm7, [edx+ecx]
120− lea edx, [edx+2*ecx]
121− MMX_StoreDiff4P mm1, mm0, mm6, mm7, [edx]
122− MMX_StoreDiff4P mm2, mm0, mm6, mm7, [edx+ecx]
123−
124−%undef pushsize
125−%undef pPred
126−%undef kiStride
127−%undef pRs
128− emms
129− ret
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+;* dct.asm
33+;*
34+;* Abstract
35+;* WelsDctFourT4_sse2
36+;*
37+;* History
38+;* 8/4/2009 Created
39+;*
40+;*
41+;*************************************************************************/
42+
43+%include "asm_inc.asm"
44+
45+BITS 32
46+
47+;*******************************************************************************
48+; Macros and other preprocessor constants
49+;*******************************************************************************
50+%macro MMX_SumSubDiv2 3
51+ movq %3, %2
52+ psraw %3, $1
53+ paddw %3, %1
54+ psraw %1, $1
55+ psubw %1, %2
56+%endmacro
57+
58+%macro MMX_SumSub 3
59+ movq %3, %2
60+ psubw %2, %1
61+ paddw %1, %3
62+%endmacro
63+
64+%macro MMX_IDCT 6
65+ MMX_SumSub %4, %5, %6
66+ MMX_SumSubDiv2 %3, %2, %1
67+ MMX_SumSub %1, %4, %6
68+ MMX_SumSub %3, %5, %6
69+%endmacro
70+
71+
72+%macro MMX_StoreDiff4P 5
73+ movd %2, %5
74+ punpcklbw %2, %4
75+ paddw %1, %3
76+ psraw %1, $6
77+ paddsw %1, %2
78+ packuswb %1, %2
79+ movd %5, %1
80+%endmacro
81+
82+;*******************************************************************************
83+; Code
84+;*******************************************************************************
85+
86+SECTION .text
87+
88+WELS_EXTERN IdctResAddPred_mmx
89+
90+ALIGN 16
91+;*******************************************************************************
92+; void_t __cdecl IdctResAddPred_mmx( uint8_t *pPred, const int32_t kiStride, int16_t *pRs )
93+;*******************************************************************************
94+
95+IdctResAddPred_mmx:
96+
97+%define pushsize 0
98+%define pPred esp+pushsize+4
99+%define kiStride esp+pushsize+8
100+%define pRs esp+pushsize+12
101+
102+ mov eax, [pRs ]
103+ mov edx, [pPred ]
104+ mov ecx, [kiStride]
105+ movq mm0, [eax+ 0]
106+ movq mm1, [eax+ 8]
107+ movq mm2, [eax+16]
108+ movq mm3, [eax+24]
109+
110+ MMX_Trans4x4W mm0, mm1, mm2, mm3, mm4
111+ MMX_IDCT mm1, mm2, mm3, mm4, mm0, mm6
112+ MMX_Trans4x4W mm1, mm3, mm0, mm4, mm2
113+ MMX_IDCT mm3, mm0, mm4, mm2, mm1, mm6
114+
115+ WELS_Zero mm7
116+ WELS_DW32 mm6
117+
118+ MMX_StoreDiff4P mm3, mm0, mm6, mm7, [edx]
119+ MMX_StoreDiff4P mm4, mm0, mm6, mm7, [edx+ecx]
120+ lea edx, [edx+2*ecx]
121+ MMX_StoreDiff4P mm1, mm0, mm6, mm7, [edx]
122+ MMX_StoreDiff4P mm2, mm0, mm6, mm7, [edx+ecx]
123+
124+%undef pushsize
125+%undef pPred
126+%undef kiStride
127+%undef pRs
128+ emms
129+ ret
codec/decoder/core/asm/deblock.asm+2112−2112
@@ -1,2113 +1,2113 @@
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−;* deblock.asm
33−;*
34−;* Abstract
35−;* edge loop
36−;*
37−;* History
38−;* 08/07/2009 Created
39−;*
40−;*
41−;*************************************************************************/
42−%include "asm_inc.asm"
43−BITS 32
44−
45−;*******************************************************************************
46−; Macros and other preprocessor constants
47−;*******************************************************************************
48−
49−%ifdef FORMAT_COFF
50−SECTION .rodata pData
51−%else
52−SECTION .rodata align=16
53−%endif
54−
55−SECTION .text
56−
57−;********************************************************************************
58−; void DeblockChromaEq4V_sse2(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride,
59−; int32_t iAlpha, int32_t iBeta)
60−;********************************************************************************
61−WELS_EXTERN DeblockChromaEq4V_sse2
62−
63−ALIGN 16
64−DeblockChromaEq4V_sse2:
65− push ebp
66− mov ebp,esp
67− and esp,0FFFFFFF0h
68− sub esp,68h
69− mov edx,[ebp+10h] ; iStride
70− mov eax,[ebp+8] ; pPixCb
71− mov ecx,[ebp+0Ch] ; pPixCr
72− movq xmm4,[ecx]
73− movq xmm5,[edx+ecx]
74− push esi
75− push edi
76− lea esi,[edx+edx]
77− mov edi,eax
78− sub edi,esi
79− movq xmm1,[edi]
80− mov edi,ecx
81− sub edi,esi
82− movq xmm2,[edi]
83− punpcklqdq xmm1,xmm2
84− mov esi,eax
85− sub esi,edx
86− movq xmm2,[esi]
87− mov edi,ecx
88− sub edi,edx
89− movq xmm3,[edi]
90− punpcklqdq xmm2,xmm3
91− movq xmm3,[eax]
92− punpcklqdq xmm3,xmm4
93− movq xmm4,[edx+eax]
94− mov edx, [ebp + 14h]
95− punpcklqdq xmm4,xmm5
96− movd xmm5,edx
97− mov edx, [ebp + 18h]
98− pxor xmm0,xmm0
99− movdqa xmm6,xmm5
100− punpcklwd xmm6,xmm5
101− pshufd xmm5,xmm6,0
102− movd xmm6,edx
103− movdqa xmm7,xmm6
104− punpcklwd xmm7,xmm6
105− pshufd xmm6,xmm7,0
106− movdqa xmm7,xmm1
107− punpckhbw xmm1,xmm0
108− punpcklbw xmm7,xmm0
109− movdqa [esp+40h],xmm1
110− movdqa [esp+60h],xmm7
111− movdqa xmm7,xmm2
112− punpcklbw xmm7,xmm0
113− movdqa [esp+10h],xmm7
114− movdqa xmm7,xmm3
115− punpcklbw xmm7,xmm0
116− punpckhbw xmm3,xmm0
117− movdqa [esp+50h],xmm7
118− movdqa xmm7,xmm4
119− punpckhbw xmm4,xmm0
120− punpckhbw xmm2,xmm0
121− punpcklbw xmm7,xmm0
122− movdqa [esp+30h],xmm3
123− movdqa xmm3,[esp+10h]
124− movdqa xmm1,xmm3
125− psubw xmm1,[esp+50h]
126− pabsw xmm1,xmm1
127− movdqa [esp+20h],xmm4
128− movdqa xmm0,xmm5
129− pcmpgtw xmm0,xmm1
130− movdqa xmm1,[esp+60h]
131− psubw xmm1,xmm3
132− pabsw xmm1,xmm1
133− movdqa xmm4,xmm6
134− pcmpgtw xmm4,xmm1
135− pand xmm0,xmm4
136− movdqa xmm1,xmm7
137− psubw xmm1,[esp+50h]
138− pabsw xmm1,xmm1
139− movdqa xmm4,xmm6
140− pcmpgtw xmm4,xmm1
141− movdqa xmm1,xmm2
142− psubw xmm1,[esp+30h]
143− pabsw xmm1,xmm1
144− pcmpgtw xmm5,xmm1
145− movdqa xmm1,[esp+40h]
146− pand xmm0,xmm4
147− psubw xmm1,xmm2
148− pabsw xmm1,xmm1
149− movdqa xmm4,xmm6
150− pcmpgtw xmm4,xmm1
151− movdqa xmm1,[esp+20h]
152− psubw xmm1,[esp+30h]
153− pand xmm5,xmm4
154− pabsw xmm1,xmm1
155− pcmpgtw xmm6,xmm1
156− pand xmm5,xmm6
157− mov edx,2
158− movsx edx,dx
159− movd xmm1,edx
160− movdqa xmm4,xmm1
161− punpcklwd xmm4,xmm1
162− pshufd xmm1,xmm4,0
163− movdqa xmm4,[esp+60h]
164− movdqa xmm6,xmm4
165− paddw xmm6,xmm4
166− paddw xmm6,xmm3
167− paddw xmm6,xmm7
168− movdqa [esp+10h],xmm1
169− paddw xmm6,[esp+10h]
170− psraw xmm6,2
171− movdqa xmm4,xmm0
172− pandn xmm4,xmm3
173− movdqa xmm3,[esp+40h]
174− movdqa xmm1,xmm0
175− pand xmm1,xmm6
176− por xmm1,xmm4
177− movdqa xmm6,xmm3
178− paddw xmm6,xmm3
179− movdqa xmm3,[esp+10h]
180− paddw xmm6,xmm2
181− paddw xmm6,[esp+20h]
182− paddw xmm6,xmm3
183− psraw xmm6,2
184− movdqa xmm4,xmm5
185− pand xmm4,xmm6
186− movdqa xmm6,xmm5
187− pandn xmm6,xmm2
188− por xmm4,xmm6
189− packuswb xmm1,xmm4
190− movdqa xmm4,[esp+50h]
191− movdqa xmm6,xmm7
192− paddw xmm6,xmm7
193− paddw xmm6,xmm4
194− paddw xmm6,[esp+60h]
195− paddw xmm6,xmm3
196− psraw xmm6,2
197− movdqa xmm2,xmm0
198− pand xmm2,xmm6
199− pandn xmm0,xmm4
200− por xmm2,xmm0
201− movdqa xmm0,[esp+20h]
202− movdqa xmm6,xmm0
203− paddw xmm6,xmm0
204− movdqa xmm0,[esp+30h]
205− paddw xmm6,xmm0
206− paddw xmm6,[esp+40h]
207− movdqa xmm4,xmm5
208− paddw xmm6,xmm3
209− movq [esi],xmm1
210− psraw xmm6,2
211− pand xmm4,xmm6
212− pandn xmm5,xmm0
213− por xmm4,xmm5
214− packuswb xmm2,xmm4
215− movq [eax],xmm2
216− psrldq xmm1,8
217− movq [edi],xmm1
218− pop edi
219− psrldq xmm2,8
220− movq [ecx],xmm2
221− pop esi
222− mov esp,ebp
223− pop ebp
224− ret
225−
226−;******************************************************************************
227−; void DeblockChromaLt4V_sse2(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride,
228−; int32_t iAlpha, int32_t iBeta, int8_t * pTC);
229−;*******************************************************************************
230−
231−WELS_EXTERN DeblockChromaLt4V_sse2
232−
233−DeblockChromaLt4V_sse2:
234− push ebp
235− mov ebp,esp
236− and esp,0FFFFFFF0h
237− sub esp,0E4h
238− push ebx
239− push esi
240− mov esi, [ebp+1Ch] ; pTC
241− movsx ebx, byte [esi+2]
242− push edi
243− movsx di,byte [esi+3]
244− mov word [esp+0Ch],bx
245− movsx bx,byte [esi+1]
246− movsx esi,byte [esi]
247− mov word [esp+0Eh],si
248− movzx esi,di
249− movd xmm1,esi
250− movzx esi,di
251− movd xmm2,esi
252− mov si,word [esp+0Ch]
253− mov edx, [ebp + 10h]
254− mov eax, [ebp + 08h]
255− movzx edi,si
256− movzx esi,si
257− mov ecx, [ebp + 0Ch]
258− movd xmm4,esi
259− movzx esi,bx
260− movd xmm5,esi
261− movd xmm3,edi
262− movzx esi,bx
263− movd xmm6,esi
264− mov si,word [esp+0Eh]
265− movzx edi,si
266− movzx esi,si
267− punpcklwd xmm6,xmm2
268− pxor xmm0,xmm0
269− movdqa [esp+40h],xmm0
270− movd xmm7,edi
271− movd xmm0,esi
272− lea esi,[edx+edx]
273− mov edi,eax
274− sub edi,esi
275− punpcklwd xmm5,xmm1
276− movdqa xmm1,[esp+40h]
277− punpcklwd xmm0,xmm4
278− movq xmm4,[edx+ecx]
279− punpcklwd xmm7,xmm3
280− movq xmm3,[eax]
281− punpcklwd xmm0,xmm6
282− movq xmm6,[edi]
283− punpcklwd xmm7,xmm5
284− punpcklwd xmm0,xmm7
285− mov edi,ecx
286− sub edi,esi
287− movdqa xmm2,xmm1
288− psubw xmm2,xmm0
289− movdqa [esp+60h],xmm2
290− movq xmm2, [edi]
291− punpcklqdq xmm6,xmm2
292− mov esi,eax
293− sub esi,edx
294− movq xmm7,[esi]
295− mov edi,ecx
296− sub edi,edx
297− movq xmm2,[edi]
298− punpcklqdq xmm7,xmm2
299− movq xmm2,[ecx]
300− punpcklqdq xmm3,xmm2
301− movq xmm2,[edx+eax]
302− movsx edx,word [ebp + 14h]
303− punpcklqdq xmm2,xmm4
304− movdqa [esp+0E0h],xmm2
305− movd xmm2,edx
306− movsx edx,word [ebp + 18h]
307− movdqa xmm4,xmm2
308− punpcklwd xmm4,xmm2
309− movd xmm2,edx
310− movdqa xmm5,xmm2
311− punpcklwd xmm5,xmm2
312− pshufd xmm2,xmm5,0
313− movdqa [esp+50h],xmm2
314− movdqa xmm2,xmm6
315− punpcklbw xmm2,xmm1
316− movdqa [esp+0D0h],xmm3
317− pshufd xmm4,xmm4,0
318− movdqa [esp+30h],xmm2
319− punpckhbw xmm6,xmm1
320− movdqa [esp+80h],xmm6
321− movdqa xmm6,[esp+0D0h]
322− punpckhbw xmm6,xmm1
323− movdqa [esp+70h],xmm6
324− movdqa xmm6, [esp+0E0h]
325− punpckhbw xmm6,xmm1
326− movdqa [esp+90h],xmm6
327− movdqa xmm5, [esp+0E0h]
328− movdqa xmm2,xmm7
329− punpckhbw xmm7,xmm1
330− punpcklbw xmm5,xmm1
331− movdqa [esp+0A0h],xmm7
332− punpcklbw xmm3,xmm1
333− mov edx,4
334− punpcklbw xmm2,xmm1
335− movsx edx,dx
336− movd xmm6,edx
337− movdqa xmm7,xmm6
338− punpcklwd xmm7,xmm6
339− pshufd xmm6,xmm7,0
340− movdqa xmm7,[esp+30h]
341− movdqa [esp+20h],xmm6
342− psubw xmm7,xmm5
343− movdqa xmm6,xmm0
344− pcmpgtw xmm6,xmm1
345− movdqa xmm1,[esp+60h]
346− movdqa [esp+40h],xmm6
347− movdqa xmm6,xmm3
348− psubw xmm6,xmm2
349− psllw xmm6,2
350− paddw xmm6,xmm7
351− paddw xmm6, [esp+20h]
352− movdqa xmm7, [esp+50h]
353− psraw xmm6,3
354− pmaxsw xmm1,xmm6
355− movdqa [esp+10h],xmm0
356− movdqa xmm6, [esp+10h]
357− pminsw xmm6,xmm1
358− movdqa [esp+10h],xmm6
359− movdqa xmm1,xmm2
360− psubw xmm1,xmm3
361− pabsw xmm1,xmm1
362− movdqa xmm6,xmm4
363− pcmpgtw xmm6,xmm1
364− movdqa xmm1, [esp+30h]
365− psubw xmm1,xmm2
366− pabsw xmm1,xmm1
367− pcmpgtw xmm7,xmm1
368− movdqa xmm1,[esp+50h]
369− pand xmm6,xmm7
370− movdqa xmm7,[esp+50h]
371− psubw xmm5,xmm3
372− pabsw xmm5,xmm5
373− pcmpgtw xmm1,xmm5
374− movdqa xmm5,[esp+80h]
375− psubw xmm5,[esp+90h]
376− pand xmm6,xmm1
377− pand xmm6,[esp+40h]
378− movdqa xmm1,[esp+10h]
379− pand xmm1,xmm6
380− movdqa xmm6,[esp+70h]
381− movdqa [esp+30h],xmm1
382− movdqa xmm1,[esp+0A0h]
383− psubw xmm6,xmm1
384− psllw xmm6,2
385− paddw xmm6,xmm5
386− paddw xmm6,[esp+20h]
387− movdqa xmm5,[esp+60h]
388− psraw xmm6,3
389− pmaxsw xmm5,xmm6
390− pminsw xmm0,xmm5
391− movdqa xmm5,[esp+70h]
392− movdqa xmm6,xmm1
393− psubw xmm6,xmm5
394− pabsw xmm6,xmm6
395− pcmpgtw xmm4,xmm6
396− movdqa xmm6,[esp+80h]
397− psubw xmm6,xmm1
398− pabsw xmm6,xmm6
399− pcmpgtw xmm7,xmm6
400− movdqa xmm6,[esp+90h]
401− pand xmm4,xmm7
402− movdqa xmm7,[esp+50h]
403− psubw xmm6,xmm5
404− pabsw xmm6,xmm6
405− pcmpgtw xmm7,xmm6
406− pand xmm4,xmm7
407− pand xmm4,[esp+40h]
408− pand xmm0,xmm4
409− movdqa xmm4,[esp+30h]
410− paddw xmm2,xmm4
411− paddw xmm1,xmm0
412− packuswb xmm2,xmm1
413− movq [esi],xmm2
414− psubw xmm3,xmm4
415− psubw xmm5,xmm0
416− packuswb xmm3,xmm5
417− movq [eax],xmm3
418− psrldq xmm2,8
419− movq [edi],xmm2
420− pop edi
421− pop esi
422− psrldq xmm3,8
423− movq [ecx],xmm3
424− pop ebx
425− mov esp,ebp
426− pop ebp
427− ret
428−
429−;***************************************************************************
430−; void DeblockChromaEq4H_sse2(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride,
431−; int32_t iAlpha, int32_t iBeta)
432−;***************************************************************************
433−
434−WELS_EXTERN DeblockChromaEq4H_sse2
435−
436−ALIGN 16
437−
438−DeblockChromaEq4H_sse2:
439− push ebp
440− mov ebp,esp
441− and esp,0FFFFFFF0h
442− sub esp,0C8h
443− mov ecx,dword [ebp+8]
444− mov edx,dword [ebp+0Ch]
445− mov eax,dword [ebp+10h]
446− sub ecx,2
447− sub edx,2
448− push esi
449− lea esi,[eax+eax*2]
450− mov dword [esp+18h],ecx
451− mov dword [esp+4],edx
452− lea ecx,[ecx+eax*4]
453− lea edx,[edx+eax*4]
454− lea eax,[esp+7Ch]
455− push edi
456− mov dword [esp+14h],esi
457− mov dword [esp+18h],ecx
458− mov dword [esp+0Ch],edx
459− mov dword [esp+10h],eax
460− mov esi,dword [esp+1Ch]
461− mov ecx,dword [ebp+10h]
462− mov edx,dword [esp+14h]
463− movd xmm0,dword [esi]
464− movd xmm1,dword [esi+ecx]
465− movd xmm2,dword [esi+ecx*2]
466− movd xmm3,dword [esi+edx]
467− mov esi,dword [esp+8]
468− movd xmm4,dword [esi]
469− movd xmm5,dword [esi+ecx]
470− movd xmm6,dword [esi+ecx*2]
471− movd xmm7,dword [esi+edx]
472− punpckldq xmm0,xmm4
473− punpckldq xmm1,xmm5
474− punpckldq xmm2,xmm6
475− punpckldq xmm3,xmm7
476− mov esi,dword [esp+18h]
477− mov edi,dword [esp+0Ch]
478− movd xmm4,dword [esi]
479− movd xmm5,dword [edi]
480− punpckldq xmm4,xmm5
481− punpcklqdq xmm0,xmm4
482− movd xmm4,dword [esi+ecx]
483− movd xmm5,dword [edi+ecx]
484− punpckldq xmm4,xmm5
485− punpcklqdq xmm1,xmm4
486− movd xmm4,dword [esi+ecx*2]
487− movd xmm5,dword [edi+ecx*2]
488− punpckldq xmm4,xmm5
489− punpcklqdq xmm2,xmm4
490− movd xmm4,dword [esi+edx]
491− movd xmm5,dword [edi+edx]
492− punpckldq xmm4,xmm5
493− punpcklqdq xmm3,xmm4
494− movdqa xmm6,xmm0
495− punpcklbw xmm0,xmm1
496− punpckhbw xmm6,xmm1
497− movdqa xmm7,xmm2
498− punpcklbw xmm2,xmm3
499− punpckhbw xmm7,xmm3
500− movdqa xmm4,xmm0
501− movdqa xmm5,xmm6
502− punpcklwd xmm0,xmm2
503− punpckhwd xmm4,xmm2
504− punpcklwd xmm6,xmm7
505− punpckhwd xmm5,xmm7
506− movdqa xmm1,xmm0
507− movdqa xmm2,xmm4
508− punpckldq xmm0,xmm6
509− punpckhdq xmm1,xmm6
510− punpckldq xmm4,xmm5
511− punpckhdq xmm2,xmm5
512− movdqa xmm5,xmm0
513− movdqa xmm6,xmm1
514− punpcklqdq xmm0,xmm4
515− punpckhqdq xmm5,xmm4
516− punpcklqdq xmm1,xmm2
517− punpckhqdq xmm6,xmm2
518− mov edi,dword [esp+10h]
519− movdqa [edi],xmm0
520− movdqa [edi+10h],xmm5
521− movdqa [edi+20h],xmm1
522− movdqa [edi+30h],xmm6
523− movsx ecx,word [ebp+14h]
524− movsx edx,word [ebp+18h]
525− movdqa xmm6,[esp+80h]
526− movdqa xmm4,[esp+90h]
527− movdqa xmm5,[esp+0A0h]
528− movdqa xmm7,[esp+0B0h]
529− pxor xmm0,xmm0
530− movd xmm1,ecx
531− movdqa xmm2,xmm1
532− punpcklwd xmm2,xmm1
533− pshufd xmm1,xmm2,0
534− movd xmm2,edx
535− movdqa xmm3,xmm2
536− punpcklwd xmm3,xmm2
537− pshufd xmm2,xmm3,0
538− movdqa xmm3,xmm6
539− punpckhbw xmm6,xmm0
540− movdqa [esp+60h],xmm6
541− movdqa xmm6,[esp+90h]
542− punpckhbw xmm6,xmm0
543− movdqa [esp+30h],xmm6
544− movdqa xmm6,[esp+0A0h]
545− punpckhbw xmm6,xmm0
546− movdqa [esp+40h],xmm6
547− movdqa xmm6,[esp+0B0h]
548− punpckhbw xmm6,xmm0
549− movdqa [esp+70h],xmm6
550− punpcklbw xmm7,xmm0
551− punpcklbw xmm4,xmm0
552− punpcklbw xmm5,xmm0
553− punpcklbw xmm3,xmm0
554− movdqa [esp+50h],xmm7
555− movdqa xmm6,xmm4
556− psubw xmm6,xmm5
557− pabsw xmm6,xmm6
558− movdqa xmm0,xmm1
559− pcmpgtw xmm0,xmm6
560− movdqa xmm6,xmm3
561− psubw xmm6,xmm4
562− pabsw xmm6,xmm6
563− movdqa xmm7,xmm2
564− pcmpgtw xmm7,xmm6
565− movdqa xmm6,[esp+50h]
566− psubw xmm6,xmm5
567− pabsw xmm6,xmm6
568− pand xmm0,xmm7
569− movdqa xmm7,xmm2
570− pcmpgtw xmm7,xmm6
571− movdqa xmm6,[esp+30h]
572− psubw xmm6,[esp+40h]
573− pabsw xmm6,xmm6
574− pcmpgtw xmm1,xmm6
575− movdqa xmm6,[esp+60h]
576− psubw xmm6,[esp+30h]
577− pabsw xmm6,xmm6
578− pand xmm0,xmm7
579− movdqa xmm7,xmm2
580− pcmpgtw xmm7,xmm6
581− movdqa xmm6,[esp+70h]
582− psubw xmm6,[esp+40h]
583− pabsw xmm6,xmm6
584− pand xmm1,xmm7
585− pcmpgtw xmm2,xmm6
586− pand xmm1,xmm2
587− mov eax,2
588− movsx ecx,ax
589− movd xmm2,ecx
590− movdqa xmm6,xmm2
591− punpcklwd xmm6,xmm2
592− pshufd xmm2,xmm6,0
593− movdqa [esp+20h],xmm2
594− movdqa xmm2,xmm3
595− paddw xmm2,xmm3
596− paddw xmm2,xmm4
597− paddw xmm2,[esp+50h]
598− paddw xmm2,[esp+20h]
599− psraw xmm2,2
600− movdqa xmm6,xmm0
601− pand xmm6,xmm2
602− movdqa xmm2,xmm0
603− pandn xmm2,xmm4
604− por xmm6,xmm2
605− movdqa xmm2,[esp+60h]
606− movdqa xmm7,xmm2
607− paddw xmm7,xmm2
608− paddw xmm7,[esp+30h]
609− paddw xmm7,[esp+70h]
610− paddw xmm7,[esp+20h]
611− movdqa xmm4,xmm1
612− movdqa xmm2,xmm1
613− pandn xmm2,[esp+30h]
614− psraw xmm7,2
615− pand xmm4,xmm7
616− por xmm4,xmm2
617− movdqa xmm2,[esp+50h]
618− packuswb xmm6,xmm4
619− movdqa [esp+90h],xmm6
620− movdqa xmm6,xmm2
621− paddw xmm6,xmm2
622− movdqa xmm2,[esp+20h]
623− paddw xmm6,xmm5
624− paddw xmm6,xmm3
625− movdqa xmm4,xmm0
626− pandn xmm0,xmm5
627− paddw xmm6,xmm2
628− psraw xmm6,2
629− pand xmm4,xmm6
630− por xmm4,xmm0
631− movdqa xmm0,[esp+70h]
632− movdqa xmm5,xmm0
633− paddw xmm5,xmm0
634− movdqa xmm0,[esp+40h]
635− paddw xmm5,xmm0
636− paddw xmm5,[esp+60h]
637− movdqa xmm3,xmm1
638− paddw xmm5,xmm2
639− psraw xmm5,2
640− pand xmm3,xmm5
641− pandn xmm1,xmm0
642− por xmm3,xmm1
643− packuswb xmm4,xmm3
644− movdqa [esp+0A0h],xmm4
645− mov esi,dword [esp+10h]
646− movdqa xmm0,[esi]
647− movdqa xmm1,[esi+10h]
648− movdqa xmm2,[esi+20h]
649− movdqa xmm3,[esi+30h]
650− movdqa xmm6,xmm0
651− punpcklbw xmm0,xmm1
652− punpckhbw xmm6,xmm1
653− movdqa xmm7,xmm2
654− punpcklbw xmm2,xmm3
655− punpckhbw xmm7,xmm3
656− movdqa xmm4,xmm0
657− movdqa xmm5,xmm6
658− punpcklwd xmm0,xmm2
659− punpckhwd xmm4,xmm2
660− punpcklwd xmm6,xmm7
661− punpckhwd xmm5,xmm7
662− movdqa xmm1,xmm0
663− movdqa xmm2,xmm4
664− punpckldq xmm0,xmm6
665− punpckhdq xmm1,xmm6
666− punpckldq xmm4,xmm5
667− punpckhdq xmm2,xmm5
668− movdqa xmm5,xmm0
669− movdqa xmm6,xmm1
670− punpcklqdq xmm0,xmm4
671− punpckhqdq xmm5,xmm4
672− punpcklqdq xmm1,xmm2
673− punpckhqdq xmm6,xmm2
674− mov esi,dword [esp+1Ch]
675− mov ecx,dword [ebp+10h]
676− mov edx,dword [esp+14h]
677− mov edi,dword [esp+8]
678− movd dword [esi],xmm0
679− movd dword [esi+ecx],xmm5
680− movd dword [esi+ecx*2],xmm1
681− movd dword [esi+edx],xmm6
682− psrldq xmm0,4
683− psrldq xmm5,4
684− psrldq xmm1,4
685− psrldq xmm6,4
686− mov esi,dword [esp+18h]
687− movd dword [edi],xmm0
688− movd dword [edi+ecx],xmm5
689− movd dword [edi+ecx*2],xmm1
690− movd dword [edi+edx],xmm6
691− psrldq xmm0,4
692− psrldq xmm5,4
693− psrldq xmm1,4
694− psrldq xmm6,4
695− movd dword [esi],xmm0
696− movd dword [esi+ecx],xmm5
697− movd dword [esi+ecx*2],xmm1
698− movd dword [esi+edx],xmm6
699− psrldq xmm0,4
700− psrldq xmm5,4
701− psrldq xmm1,4
702− psrldq xmm6,4
703− mov edi,dword [esp+0Ch]
704− movd dword [edi],xmm0
705− movd dword [edi+ecx],xmm5
706− movd dword [edi+ecx*2],xmm1
707− movd dword [edi+edx],xmm6
708− pop edi
709− pop esi
710− mov esp,ebp
711− pop ebp
712− ret
713−
714−;*******************************************************************************
715−; void DeblockChromaLt4H_sse2(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride,
716−; int32_t iAlpha, int32_t iBeta, int8_t * pTC);
717−;*******************************************************************************
718−
719−WELS_EXTERN DeblockChromaLt4H_sse2
720−
721−ALIGN 16
722−
723−DeblockChromaLt4H_sse2:
724− push ebp
725− mov ebp,esp
726− and esp,0FFFFFFF0h
727− sub esp,108h
728− mov ecx,dword [ebp+8]
729− mov edx,dword [ebp+0Ch]
730− mov eax,dword [ebp+10h]
731− sub ecx,2
732− sub edx,2
733− push esi
734− lea esi,[eax+eax*2]
735− mov dword [esp+10h],ecx
736− mov dword [esp+4],edx
737− lea ecx,[ecx+eax*4]
738− lea edx,[edx+eax*4]
739− lea eax,[esp+6Ch]
740− push edi
741− mov dword [esp+0Ch],esi
742− mov dword [esp+18h],ecx
743− mov dword [esp+10h],edx
744− mov dword [esp+1Ch],eax
745− mov esi,dword [esp+14h]
746− mov ecx,dword [ebp+10h]
747− mov edx,dword [esp+0Ch]
748− movd xmm0,dword [esi]
749− movd xmm1,dword [esi+ecx]
750− movd xmm2,dword [esi+ecx*2]
751− movd xmm3,dword [esi+edx]
752− mov esi,dword [esp+8]
753− movd xmm4,dword [esi]
754− movd xmm5,dword [esi+ecx]
755− movd xmm6,dword [esi+ecx*2]
756− movd xmm7,dword [esi+edx]
757− punpckldq xmm0,xmm4
758− punpckldq xmm1,xmm5
759− punpckldq xmm2,xmm6
760− punpckldq xmm3,xmm7
761− mov esi,dword [esp+18h]
762− mov edi,dword [esp+10h]
763− movd xmm4,dword [esi]
764− movd xmm5,dword [edi]
765− punpckldq xmm4,xmm5
766− punpcklqdq xmm0,xmm4
767− movd xmm4,dword [esi+ecx]
768− movd xmm5,dword [edi+ecx]
769− punpckldq xmm4,xmm5
770− punpcklqdq xmm1,xmm4
771− movd xmm4,dword [esi+ecx*2]
772− movd xmm5,dword [edi+ecx*2]
773− punpckldq xmm4,xmm5
774− punpcklqdq xmm2,xmm4
775− movd xmm4,dword [esi+edx]
776− movd xmm5,dword [edi+edx]
777− punpckldq xmm4,xmm5
778− punpcklqdq xmm3,xmm4
779− movdqa xmm6,xmm0
780− punpcklbw xmm0,xmm1
781− punpckhbw xmm6,xmm1
782− movdqa xmm7,xmm2
783− punpcklbw xmm2,xmm3
784− punpckhbw xmm7,xmm3
785− movdqa xmm4,xmm0
786− movdqa xmm5,xmm6
787− punpcklwd xmm0,xmm2
788− punpckhwd xmm4,xmm2
789− punpcklwd xmm6,xmm7
790− punpckhwd xmm5,xmm7
791− movdqa xmm1,xmm0
792− movdqa xmm2,xmm4
793− punpckldq xmm0,xmm6
794− punpckhdq xmm1,xmm6
795− punpckldq xmm4,xmm5
796− punpckhdq xmm2,xmm5
797− movdqa xmm5,xmm0
798− movdqa xmm6,xmm1
799− punpcklqdq xmm0,xmm4
800− punpckhqdq xmm5,xmm4
801− punpcklqdq xmm1,xmm2
802− punpckhqdq xmm6,xmm2
803− mov edi,dword [esp+1Ch]
804− movdqa [edi],xmm0
805− movdqa [edi+10h],xmm5
806− movdqa [edi+20h],xmm1
807− movdqa [edi+30h],xmm6
808− mov eax,dword [ebp+1Ch]
809− movsx cx,byte [eax+3]
810− movsx dx,byte [eax+2]
811− movsx si,byte [eax+1]
812− movsx ax,byte [eax]
813− movzx edi,cx
814− movzx ecx,cx
815− movd xmm2,ecx
816− movzx ecx,dx
817− movzx edx,dx
818− movd xmm3,ecx
819− movd xmm4,edx
820− movzx ecx,si
821− movzx edx,si
822− movd xmm5,ecx
823− pxor xmm0,xmm0
824− movd xmm6,edx
825− movzx ecx,ax
826− movdqa [esp+60h],xmm0
827− movzx edx,ax
828− movsx eax,word [ebp+14h]
829− punpcklwd xmm6,xmm2
830− movd xmm1,edi
831− movd xmm7,ecx
832− movsx ecx,word [ebp+18h]
833− movd xmm0,edx
834− punpcklwd xmm7,xmm3
835− punpcklwd xmm5,xmm1
836− movdqa xmm1,[esp+60h]
837− punpcklwd xmm7,xmm5
838− movdqa xmm5,[esp+0A0h]
839− punpcklwd xmm0,xmm4
840− punpcklwd xmm0,xmm6
841− movdqa xmm6, [esp+70h]
842− punpcklwd xmm0,xmm7
843− movdqa xmm7,[esp+80h]
844− movdqa xmm2,xmm1
845− psubw xmm2,xmm0
846− movdqa [esp+0D0h],xmm2
847− movd xmm2,eax
848− movdqa xmm3,xmm2
849− punpcklwd xmm3,xmm2
850− pshufd xmm4,xmm3,0
851− movd xmm2,ecx
852− movdqa xmm3,xmm2
853− punpcklwd xmm3,xmm2
854− pshufd xmm2,xmm3,0
855− movdqa xmm3, [esp+90h]
856− movdqa [esp+50h],xmm2
857− movdqa xmm2,xmm6
858− punpcklbw xmm2,xmm1
859− punpckhbw xmm6,xmm1
860− movdqa [esp+40h],xmm2
861− movdqa [esp+0B0h],xmm6
862− movdqa xmm6,[esp+90h]
863− movdqa xmm2,xmm7
864− punpckhbw xmm7,xmm1
865− punpckhbw xmm6,xmm1
866− punpcklbw xmm2,xmm1
867− punpcklbw xmm3,xmm1
868− punpcklbw xmm5,xmm1
869− movdqa [esp+0F0h],xmm7
870− movdqa [esp+0C0h],xmm6
871− movdqa xmm6, [esp+0A0h]
872− punpckhbw xmm6,xmm1
873− movdqa [esp+0E0h],xmm6
874− mov edx,4
875− movsx eax,dx
876− movd xmm6,eax
877− movdqa xmm7,xmm6
878− punpcklwd xmm7,xmm6
879− pshufd xmm6,xmm7,0
880− movdqa [esp+30h],xmm6
881− movdqa xmm7, [esp+40h]
882− psubw xmm7,xmm5
883− movdqa xmm6,xmm0
884− pcmpgtw xmm6,xmm1
885− movdqa [esp+60h],xmm6
886− movdqa xmm1, [esp+0D0h]
887− movdqa xmm6,xmm3
888− psubw xmm6,xmm2
889− psllw xmm6,2
890− paddw xmm6,xmm7
891− paddw xmm6,[esp+30h]
892− psraw xmm6,3
893− pmaxsw xmm1,xmm6
894− movdqa xmm7,[esp+50h]
895− movdqa [esp+20h],xmm0
896− movdqa xmm6, [esp+20h]
897− pminsw xmm6,xmm1
898− movdqa [esp+20h],xmm6
899− movdqa xmm6,xmm4
900− movdqa xmm1,xmm2
901− psubw xmm1,xmm3
902− pabsw xmm1,xmm1
903− pcmpgtw xmm6,xmm1
904− movdqa xmm1, [esp+40h]
905− psubw xmm1,xmm2
906− pabsw xmm1,xmm1
907− pcmpgtw xmm7,xmm1
908− movdqa xmm1, [esp+50h]
909− pand xmm6,xmm7
910− movdqa xmm7, [esp+50h]
911− psubw xmm5,xmm3
912− pabsw xmm5,xmm5
913− pcmpgtw xmm1,xmm5
914− movdqa xmm5, [esp+0B0h]
915− psubw xmm5,[esp+0E0h]
916− pand xmm6,xmm1
917− pand xmm6, [esp+60h]
918− movdqa xmm1, [esp+20h]
919− pand xmm1,xmm6
920− movdqa xmm6, [esp+0C0h]
921− movdqa [esp+40h],xmm1
922− movdqa xmm1, [esp+0F0h]
923− psubw xmm6,xmm1
924− psllw xmm6,2
925− paddw xmm6,xmm5
926− paddw xmm6, [esp+30h]
927− movdqa xmm5, [esp+0D0h]
928− psraw xmm6,3
929− pmaxsw xmm5,xmm6
930− pminsw xmm0,xmm5
931− movdqa xmm5,[esp+0C0h]
932− movdqa xmm6,xmm1
933− psubw xmm6,xmm5
934− pabsw xmm6,xmm6
935− pcmpgtw xmm4,xmm6
936− movdqa xmm6,[esp+0B0h]
937− psubw xmm6,xmm1
938− pabsw xmm6,xmm6
939− pcmpgtw xmm7,xmm6
940− movdqa xmm6, [esp+0E0h]
941− pand xmm4,xmm7
942− movdqa xmm7, [esp+50h]
943− psubw xmm6,xmm5
944− pabsw xmm6,xmm6
945− pcmpgtw xmm7,xmm6
946− pand xmm4,xmm7
947− pand xmm4,[esp+60h]
948− pand xmm0,xmm4
949− movdqa xmm4, [esp+40h]
950− paddw xmm2,xmm4
951− paddw xmm1,xmm0
952− psubw xmm3,xmm4
953− psubw xmm5,xmm0
954− packuswb xmm2,xmm1
955− packuswb xmm3,xmm5
956− movdqa [esp+80h],xmm2
957− movdqa [esp+90h],xmm3
958− mov esi,dword [esp+1Ch]
959− movdqa xmm0, [esi]
960− movdqa xmm1, [esi+10h]
961− movdqa xmm2, [esi+20h]
962− movdqa xmm3, [esi+30h]
963− movdqa xmm6,xmm0
964− punpcklbw xmm0,xmm1
965− punpckhbw xmm6,xmm1
966− movdqa xmm7,xmm2
967− punpcklbw xmm2,xmm3
968− punpckhbw xmm7,xmm3
969− movdqa xmm4,xmm0
970− movdqa xmm5,xmm6
971− punpcklwd xmm0,xmm2
972− punpckhwd xmm4,xmm2
973− punpcklwd xmm6,xmm7
974− punpckhwd xmm5,xmm7
975− movdqa xmm1,xmm0
976− movdqa xmm2,xmm4
977− punpckldq xmm0,xmm6
978− punpckhdq xmm1,xmm6
979− punpckldq xmm4,xmm5
980− punpckhdq xmm2,xmm5
981− movdqa xmm5,xmm0
982− movdqa xmm6,xmm1
983− punpcklqdq xmm0,xmm4
984− punpckhqdq xmm5,xmm4
985− punpcklqdq xmm1,xmm2
986− punpckhqdq xmm6,xmm2
987− mov esi,dword [esp+14h]
988− mov ecx,dword [ebp+10h]
989− mov edx,dword [esp+0Ch]
990− mov edi,dword [esp+8]
991− movd dword [esi],xmm0
992− movd dword [esi+ecx],xmm5
993− movd dword [esi+ecx*2],xmm1
994− movd dword [esi+edx],xmm6
995− psrldq xmm0,4
996− psrldq xmm5,4
997− psrldq xmm1,4
998− psrldq xmm6,4
999− mov esi,dword [esp+18h]
1000− movd dword [edi],xmm0
1001− movd dword [edi+ecx],xmm5
1002− movd dword [edi+ecx*2],xmm1
1003− movd dword [edi+edx],xmm6
1004− psrldq xmm0,4
1005− psrldq xmm5,4
1006− psrldq xmm1,4
1007− psrldq xmm6,4
1008− movd dword [esi],xmm0
1009− movd dword [esi+ecx],xmm5
1010− movd dword [esi+ecx*2],xmm1
1011− movd dword [esi+edx],xmm6
1012− psrldq xmm0,4
1013− psrldq xmm5,4
1014− psrldq xmm1,4
1015− psrldq xmm6,4
1016− mov edi,dword [esp+10h]
1017− movd dword [edi],xmm0
1018− movd dword [edi+ecx],xmm5
1019− movd dword [edi+ecx*2],xmm1
1020− movd dword [edi+edx],xmm6
1021− pop edi
1022− pop esi
1023− mov esp,ebp
1024− pop ebp
1025− ret
1026−
1027−
1028−
1029−;*******************************************************************************
1030−; void DeblockLumaLt4V_sse2(uint8_t * pPix, int32_t iStride, int32_t iAlpha,
1031−; int32_t iBeta, int8_t * pTC)
1032−;*******************************************************************************
1033−
1034−
1035−WELS_EXTERN DeblockLumaLt4V_sse2
1036−
1037−ALIGN 16
1038−
1039−DeblockLumaLt4V_sse2:
1040− push ebp
1041− mov ebp, esp
1042− and esp, -16 ; fffffff0H
1043− sub esp, 420 ; 000001a4H
1044− mov eax, dword [ebp+8]
1045− mov ecx, dword [ebp+12]
1046−
1047− pxor xmm0, xmm0
1048− push ebx
1049− mov edx, dword [ebp+24]
1050− movdqa [esp+424-384], xmm0
1051− push esi
1052−
1053− lea esi, [ecx+ecx*2]
1054− push edi
1055− mov edi, eax
1056− sub edi, esi
1057− movdqa xmm0, [edi]
1058−
1059− lea esi, [ecx+ecx]
1060− movdqa [esp+432-208], xmm0
1061− mov edi, eax
1062− sub edi, esi
1063− movdqa xmm0, [edi]
1064− movdqa [esp+448-208], xmm0
1065−
1066− mov ebx, eax
1067− sub ebx, ecx
1068− movdqa xmm0, [ebx]
1069− movdqa [esp+464-208], xmm0
1070−
1071− movdqa xmm0, [eax]
1072−
1073− add ecx, eax
1074− movdqa [esp+480-208], xmm0
1075− movdqa xmm0, [ecx]
1076− mov dword [esp+432-404], ecx
1077−
1078− movsx ecx, word [ebp+16]
1079− movdqa [esp+496-208], xmm0
1080− movdqa xmm0, [esi+eax]
1081−
1082− movsx si, byte [edx]
1083− movdqa [esp+512-208], xmm0
1084− movd xmm0, ecx
1085− movsx ecx, word [ebp+20]
1086− movdqa xmm1, xmm0
1087− punpcklwd xmm1, xmm0
1088− pshufd xmm0, xmm1, 0
1089− movdqa [esp+432-112], xmm0
1090− movd xmm0, ecx
1091− movsx cx, byte [edx+1]
1092− movdqa xmm1, xmm0
1093− punpcklwd xmm1, xmm0
1094− mov dword [esp+432-408], ebx
1095− movzx ebx, cx
1096− pshufd xmm0, xmm1, 0
1097− movd xmm1, ebx
1098− movzx ebx, cx
1099− movd xmm2, ebx
1100− movzx ebx, cx
1101− movzx ecx, cx
1102− movd xmm4, ecx
1103− movzx ecx, si
1104− movd xmm5, ecx
1105− movzx ecx, si
1106− movd xmm6, ecx
1107− movzx ecx, si
1108− movd xmm7, ecx
1109− movzx ecx, si
1110− movdqa [esp+432-336], xmm0
1111− movd xmm0, ecx
1112−
1113− movsx cx, byte [edx+3]
1114− movsx dx, byte [edx+2]
1115− movd xmm3, ebx
1116− punpcklwd xmm0, xmm4
1117− movzx esi, cx
1118− punpcklwd xmm6, xmm2
1119− punpcklwd xmm5, xmm1
1120− punpcklwd xmm0, xmm6
1121− punpcklwd xmm7, xmm3
1122− punpcklwd xmm7, xmm5
1123− punpcklwd xmm0, xmm7
1124− movdqa [esp+432-400], xmm0
1125− movd xmm0, esi
1126− movzx esi, cx
1127− movd xmm2, esi
1128− movzx esi, cx
1129− movzx ecx, cx
1130− movd xmm4, ecx
1131− movzx ecx, dx
1132− movd xmm3, esi
1133− movd xmm5, ecx
1134− punpcklwd xmm5, xmm0
1135−
1136− movdqa xmm0, [esp+432-384]
1137− movzx ecx, dx
1138− movd xmm6, ecx
1139− movzx ecx, dx
1140− movzx edx, dx
1141− punpcklwd xmm6, xmm2
1142− movd xmm7, ecx
1143− movd xmm1, edx
1144−
1145− movdqa xmm2, [esp+448-208]
1146− punpcklbw xmm2, xmm0
1147−
1148− mov ecx, 4
1149− movsx edx, cx
1150− punpcklwd xmm7, xmm3
1151− punpcklwd xmm7, xmm5
1152− movdqa xmm5, [esp+496-208]
1153− movdqa xmm3, [esp+464-208]
1154− punpcklbw xmm5, xmm0
1155− movdqa [esp+432-240], xmm5
1156− movdqa xmm5, [esp+512-208]
1157− punpcklbw xmm5, xmm0
1158− movdqa [esp+432-352], xmm5
1159− punpcklwd xmm1, xmm4
1160− movdqa xmm4, [esp+432-208]
1161− punpcklwd xmm1, xmm6
1162− movdqa xmm6, [esp+480-208]
1163− punpcklwd xmm1, xmm7
1164− punpcklbw xmm6, xmm0
1165− punpcklbw xmm3, xmm0
1166− punpcklbw xmm4, xmm0
1167− movdqa xmm7, xmm3
1168− psubw xmm7, xmm4
1169− pabsw xmm7, xmm7
1170− movdqa [esp+432-272], xmm4
1171− movdqa xmm4, [esp+432-336]
1172− movdqa xmm5, xmm4
1173− pcmpgtw xmm5, xmm7
1174− movdqa [esp+432-288], xmm5
1175− movdqa xmm7, xmm6
1176− psubw xmm7, [esp+432-352]
1177− pabsw xmm7, xmm7
1178− movdqa xmm5, xmm4
1179− pcmpgtw xmm5, xmm7
1180− movdqa [esp+432-256], xmm5
1181− movdqa xmm5, xmm3
1182− pavgw xmm5, xmm6
1183− movdqa [esp+432-304], xmm5
1184− movdqa xmm5, [esp+432-400]
1185− psubw xmm5, [esp+432-288]
1186− psubw xmm5, [esp+432-256]
1187− movdqa [esp+432-224], xmm5
1188− movdqa xmm5, xmm6
1189− psubw xmm5, xmm3
1190− movdqa [esp+432-32], xmm6
1191− psubw xmm6, [esp+432-240]
1192− movdqa xmm7, xmm5
1193− movdqa [esp+432-384], xmm5
1194− movdqa xmm5, [esp+432-112]
1195− pabsw xmm7, xmm7
1196− pcmpgtw xmm5, xmm7
1197− pabsw xmm6, xmm6
1198− movdqa xmm7, xmm4
1199− pcmpgtw xmm7, xmm6
1200−
1201− pand xmm5, xmm7
1202− movdqa xmm6, xmm3
1203− psubw xmm6, xmm2
1204− pabsw xmm6, xmm6
1205− movdqa xmm7, xmm4
1206− pcmpgtw xmm7, xmm6
1207− movdqa xmm6, [esp+432-400]
1208− pand xmm5, xmm7
1209− movdqa xmm7, xmm6
1210− pcmpeqw xmm6, xmm0
1211− pcmpgtw xmm7, xmm0
1212− por xmm7, xmm6
1213− pand xmm5, xmm7
1214− movdqa [esp+432-320], xmm5
1215− movd xmm5, edx
1216− movdqa xmm6, xmm5
1217− punpcklwd xmm6, xmm5
1218− pshufd xmm5, xmm6, 0
1219− movdqa [esp+432-336], xmm5
1220− movdqa xmm5, [esp+432-224]
1221− movdqa [esp+432-368], xmm5
1222− movdqa xmm6, xmm0
1223− psubw xmm6, xmm5
1224− movdqa xmm5, [esp+432-384]
1225− psllw xmm5, 2
1226− movdqa xmm7, xmm2
1227− psubw xmm7, [esp+432-240]
1228− paddw xmm7, xmm5
1229− paddw xmm7, [esp+432-336]
1230− movdqa xmm5, [esp+432-368]
1231− psraw xmm7, 3
1232− pmaxsw xmm6, xmm7
1233− pminsw xmm5, xmm6
1234−
1235− pand xmm5, [esp+432-320]
1236− movdqa xmm6, [esp+432-400]
1237− movdqa [esp+432-64], xmm5
1238− movdqa [esp+432-384], xmm6
1239− movdqa xmm5, xmm0
1240− psubw xmm5, xmm6
1241− movdqa [esp+432-368], xmm5
1242− movdqa xmm6, xmm5
1243− movdqa xmm5, [esp+432-272]
1244− paddw xmm5, [esp+432-304]
1245− movdqa xmm7, xmm2
1246− paddw xmm7, xmm2
1247− psubw xmm5, xmm7
1248− psraw xmm5, 1
1249− pmaxsw xmm6, xmm5
1250− movdqa xmm5, [esp+432-384]
1251− pminsw xmm5, xmm6
1252−
1253− pand xmm5, [esp+432-320]
1254− pand xmm5, [esp+432-288]
1255− movdqa xmm6, [esp+432-240]
1256− movdqa [esp+432-96], xmm5
1257− movdqa xmm5, [esp+432-352]
1258− paddw xmm5, [esp+432-304]
1259− movdqa xmm7, xmm6
1260− paddw xmm7, xmm6
1261− movdqa xmm6, [esp+432-368]
1262− psubw xmm5, xmm7
1263−
1264− movdqa xmm7, [esp+496-208]
1265− psraw xmm5, 1
1266− pmaxsw xmm6, xmm5
1267− movdqa xmm5, [esp+432-400]
1268− pminsw xmm5, xmm6
1269− pand xmm5, [esp+432-320]
1270− pand xmm5, [esp+432-256]
1271− movdqa xmm6, [esp+448-208]
1272− punpckhbw xmm7, xmm0
1273− movdqa [esp+432-352], xmm7
1274−
1275− movdqa xmm7, [esp+512-208]
1276− punpckhbw xmm6, xmm0
1277− movdqa [esp+432-48], xmm5
1278− movdqa xmm5, [esp+432-208]
1279− movdqa [esp+432-368], xmm6
1280− movdqa xmm6, [esp+464-208]
1281− punpckhbw xmm7, xmm0
1282− punpckhbw xmm5, xmm0
1283− movdqa [esp+432-384], xmm7
1284− punpckhbw xmm6, xmm0
1285− movdqa [esp+432-400], xmm6
1286−
1287− movdqa xmm7, [esp+432-400]
1288− movdqa xmm6, [esp+480-208]
1289− psubw xmm7, xmm5
1290− movdqa [esp+432-16], xmm5
1291− pabsw xmm7, xmm7
1292− punpckhbw xmm6, xmm0
1293− movdqa xmm5, xmm4
1294− pcmpgtw xmm5, xmm7
1295− movdqa [esp+432-288], xmm5
1296−
1297− movdqa xmm7, xmm6
1298− psubw xmm7, [esp+432-384]
1299− pabsw xmm7, xmm7
1300− movdqa xmm5, xmm4
1301− pcmpgtw xmm5, xmm7
1302− movdqa [esp+432-256], xmm5
1303−
1304− movdqa xmm5, [esp+432-400]
1305− movdqa [esp+432-80], xmm6
1306− pavgw xmm5, xmm6
1307− movdqa [esp+432-304], xmm5
1308−
1309− movdqa xmm5, xmm1
1310− psubw xmm5, [esp+432-288]
1311− psubw xmm5, [esp+432-256]
1312− movdqa [esp+432-224], xmm5
1313− movdqa xmm5, xmm6
1314− psubw xmm5, [esp+432-400]
1315− psubw xmm6, [esp+432-352]
1316− movdqa [esp+432-272], xmm5
1317− movdqa xmm7, xmm5
1318− movdqa xmm5, [esp+432-112]
1319− pabsw xmm7, xmm7
1320− pcmpgtw xmm5, xmm7
1321− movdqa xmm7, xmm4
1322− pabsw xmm6, xmm6
1323− pcmpgtw xmm7, xmm6
1324− movdqa xmm6, [esp+432-368]
1325−
1326− pand xmm5, xmm7
1327− movdqa xmm7, [esp+432-400]
1328− psubw xmm7, xmm6
1329− psubw xmm6, [esp+432-352]
1330− pabsw xmm7, xmm7
1331− pcmpgtw xmm4, xmm7
1332− pand xmm5, xmm4
1333−
1334− paddw xmm2, [esp+432-96]
1335− movdqa xmm4, xmm1
1336− pcmpgtw xmm4, xmm0
1337− movdqa xmm7, xmm1
1338− pcmpeqw xmm7, xmm0
1339− por xmm4, xmm7
1340− pand xmm5, xmm4
1341− movdqa xmm4, [esp+432-224]
1342− movdqa [esp+432-320], xmm5
1343− movdqa xmm5, [esp+432-272]
1344− movdqa xmm7, xmm0
1345− psubw xmm7, xmm4
1346− psubw xmm0, xmm1
1347− psllw xmm5, 2
1348− paddw xmm6, xmm5
1349− paddw xmm6, [esp+432-336]
1350− movdqa xmm5, [esp+432-368]
1351− movdqa [esp+432-336], xmm0
1352− psraw xmm6, 3
1353− pmaxsw xmm7, xmm6
1354− pminsw xmm4, xmm7
1355− pand xmm4, [esp+432-320]
1356− movdqa xmm6, xmm0
1357− movdqa xmm0, [esp+432-16]
1358− paddw xmm0, [esp+432-304]
1359− movdqa [esp+432-272], xmm4
1360− movdqa xmm4, [esp+432-368]
1361− paddw xmm4, xmm4
1362− psubw xmm0, xmm4
1363−
1364− movdqa xmm4, [esp+432-64]
1365− psraw xmm0, 1
1366− pmaxsw xmm6, xmm0
1367− movdqa xmm0, [esp+432-400]
1368− movdqa xmm7, xmm1
1369− pminsw xmm7, xmm6
1370− movdqa xmm6, [esp+432-320]
1371− pand xmm7, xmm6
1372− pand xmm7, [esp+432-288]
1373− paddw xmm5, xmm7
1374− packuswb xmm2, xmm5
1375− movdqa xmm5, [esp+432-272]
1376− paddw xmm0, xmm5
1377− paddw xmm3, xmm4
1378− packuswb xmm3, xmm0
1379−
1380− movdqa xmm0, [esp+432-32]
1381− psubw xmm0, xmm4
1382− movdqa xmm4, [esp+432-80]
1383− psubw xmm4, xmm5
1384−
1385− movdqa xmm5, [esp+432-240]
1386− paddw xmm5, [esp+432-48]
1387− packuswb xmm0, xmm4
1388− movdqa xmm4, [esp+432-384]
1389− paddw xmm4, [esp+432-304]
1390− movdqa [esp+480-208], xmm0
1391− movdqa xmm0, [esp+432-352]
1392− movdqa xmm7, xmm0
1393− paddw xmm0, xmm0
1394−
1395− mov ecx, dword [esp+432-408]
1396−
1397− mov edx, dword [esp+432-404]
1398− psubw xmm4, xmm0
1399− movdqa xmm0, [esp+432-336]
1400− movdqa [edi], xmm2
1401− psraw xmm4, 1
1402− pmaxsw xmm0, xmm4
1403− pminsw xmm1, xmm0
1404− movdqa xmm0, [esp+480-208]
1405−
1406− pop edi
1407− pand xmm1, xmm6
1408− pand xmm1, [esp+428-256]
1409− movdqa [ecx], xmm3
1410− paddw xmm7, xmm1
1411− pop esi
1412− packuswb xmm5, xmm7
1413− movdqa [eax], xmm0
1414− movdqa [edx], xmm5
1415− pop ebx
1416− mov esp, ebp
1417− pop ebp
1418− ret
1419−
1420−
1421−;*******************************************************************************
1422−; void DeblockLumaEq4V_sse2(uint8_t * pPix, int32_t iStride, int32_t iAlpha,
1423−; int32_t iBeta)
1424−;*******************************************************************************
1425−
1426−WELS_EXTERN DeblockLumaEq4V_sse2
1427−
1428−ALIGN 16
1429−
1430−DeblockLumaEq4V_sse2:
1431−
1432− push ebp
1433− mov ebp, esp
1434− and esp, -16 ; fffffff0H
1435− sub esp, 628 ; 00000274H
1436− mov eax, dword [ebp+8]
1437− mov ecx, dword [ebp+12]
1438− push ebx
1439− push esi
1440−
1441− lea edx, [ecx*4]
1442− pxor xmm0, xmm0
1443− movdqa xmm2, xmm0
1444−
1445− movdqa xmm0, [ecx+eax]
1446− mov esi, eax
1447− sub esi, edx
1448− movdqa xmm3, [esi]
1449− movdqa xmm5, [eax]
1450− push edi
1451− lea edi, [ecx+ecx]
1452− lea ebx, [ecx+ecx*2]
1453− mov dword [esp+640-600], edi
1454− mov esi, eax
1455− sub esi, edi
1456− movdqa xmm1, [esi]
1457− movdqa [esp+720-272], xmm0
1458− mov edi, eax
1459− sub edi, ecx
1460− movdqa xmm4, [edi]
1461− add ecx, eax
1462− mov dword [esp+640-596], ecx
1463−
1464− mov ecx, dword [esp+640-600]
1465− movdqa xmm0, [ecx+eax]
1466− movdqa [esp+736-272], xmm0
1467−
1468− movdqa xmm0, [eax+ebx]
1469− mov edx, eax
1470− sub edx, ebx
1471−
1472− movsx ebx, word [ebp+16]
1473− movdqa xmm6, [edx]
1474− add ecx, eax
1475− movdqa [esp+752-272], xmm0
1476− movd xmm0, ebx
1477−
1478− movsx ebx, word [ebp+20]
1479− movdqa xmm7, xmm0
1480− punpcklwd xmm7, xmm0
1481− pshufd xmm0, xmm7, 0
1482− movdqa [esp+640-320], xmm0
1483− movd xmm0, ebx
1484− movdqa xmm7, xmm0
1485− punpcklwd xmm7, xmm0
1486− pshufd xmm0, xmm7, 0
1487−
1488− movdqa xmm7, [esp+736-272]
1489− punpcklbw xmm7, xmm2
1490− movdqa [esp+640-416], xmm7
1491− movdqa [esp+640-512], xmm0
1492− movdqa xmm0, xmm1
1493− movdqa [esp+672-272], xmm1
1494− movdqa xmm1, xmm4
1495− movdqa [esp+704-272], xmm5
1496− punpcklbw xmm5, xmm2
1497− punpcklbw xmm1, xmm2
1498−
1499− movdqa xmm7, xmm5
1500− psubw xmm7, xmm1
1501− pabsw xmm7, xmm7
1502− movdqa [esp+640-560], xmm7
1503− punpcklbw xmm0, xmm2
1504− movdqa [esp+688-272], xmm4
1505− movdqa xmm4, [esp+720-272]
1506− movdqa [esp+640-480], xmm0
1507−
1508− movdqa xmm7, xmm1
1509− psubw xmm7, xmm0
1510−
1511− movdqa xmm0, [esp+640-512]
1512− pabsw xmm7, xmm7
1513− punpcklbw xmm4, xmm2
1514− pcmpgtw xmm0, xmm7
1515− movdqa [esp+640-384], xmm4
1516− movdqa xmm7, xmm5
1517− psubw xmm7, xmm4
1518− movdqa xmm4, [esp+640-512]
1519− movdqa [esp+656-272], xmm6
1520− punpcklbw xmm6, xmm2
1521− pabsw xmm7, xmm7
1522− movdqa [esp+640-48], xmm2
1523− movdqa [esp+640-368], xmm6
1524− movdqa [esp+640-144], xmm1
1525− movdqa [esp+640-400], xmm5
1526− pcmpgtw xmm4, xmm7
1527− pand xmm0, xmm4
1528− movdqa xmm4, [esp+640-320]
1529− pcmpgtw xmm4, [esp+640-560]
1530− pand xmm0, xmm4
1531−
1532− mov ebx, 2
1533− movsx ebx, bx
1534− movd xmm4, ebx
1535− movdqa xmm7, xmm4
1536− punpcklwd xmm7, xmm4
1537− movdqa xmm4, [esp+640-320]
1538− psraw xmm4, 2
1539− pshufd xmm7, xmm7, 0
1540− paddw xmm4, xmm7
1541− movdqa [esp+640-576], xmm4
1542− pcmpgtw xmm4, [esp+640-560]
1543− movdqa [esp+640-560], xmm4
1544−
1545− movdqa xmm4, [esp+640-512]
1546− movdqa [esp+640-624], xmm7
1547− movdqa xmm7, xmm1
1548− psubw xmm7, xmm6
1549− pabsw xmm7, xmm7
1550− pcmpgtw xmm4, xmm7
1551−
1552− pand xmm4, [esp+640-560]
1553− movdqa [esp+640-544], xmm4
1554− movdqa xmm4, [esp+640-512]
1555− movdqa xmm7, xmm5
1556− psubw xmm7, [esp+640-416]
1557− pabsw xmm7, xmm7
1558− pcmpgtw xmm4, xmm7
1559−
1560− pand xmm4, [esp+640-560]
1561− movdqa [esp+640-560], xmm4
1562−
1563− movdqa xmm4, [esp+640-544]
1564− pandn xmm4, xmm6
1565− movdqa [esp+640-16], xmm4
1566− mov ebx, 4
1567− movsx ebx, bx
1568− movd xmm4, ebx
1569− movdqa xmm7, xmm4
1570− punpcklwd xmm7, xmm4
1571− movdqa xmm4, xmm3
1572− punpcklbw xmm4, xmm2
1573− psllw xmm4, 1
1574− paddw xmm4, xmm6
1575− paddw xmm4, xmm6
1576− paddw xmm4, xmm6
1577− paddw xmm4, [esp+640-480]
1578−
1579− movdqa xmm6, [esp+640-560]
1580− pshufd xmm7, xmm7, 0
1581− paddw xmm4, xmm1
1582− movdqa [esp+640-592], xmm7
1583− paddw xmm4, xmm5
1584− paddw xmm4, xmm7
1585− movdqa xmm7, [esp+640-416]
1586− pandn xmm6, xmm7
1587− movdqa [esp+640-80], xmm6
1588− movdqa xmm6, [esp+752-272]
1589− punpcklbw xmm6, xmm2
1590− psllw xmm6, 1
1591− paddw xmm6, xmm7
1592− paddw xmm6, xmm7
1593− paddw xmm6, xmm7
1594− paddw xmm6, [esp+640-384]
1595−
1596− movdqa xmm7, [esp+640-480]
1597− paddw xmm6, xmm5
1598− paddw xmm6, xmm1
1599− paddw xmm6, [esp+640-592]
1600− psraw xmm6, 3
1601− pand xmm6, [esp+640-560]
1602− movdqa [esp+640-112], xmm6
1603− movdqa xmm6, [esp+640-544]
1604− pandn xmm6, xmm7
1605− movdqa [esp+640-336], xmm6
1606− movdqa xmm6, [esp+640-544]
1607− movdqa [esp+640-528], xmm6
1608− movdqa xmm6, [esp+640-368]
1609− paddw xmm6, xmm7
1610− movdqa xmm7, xmm1
1611− psraw xmm4, 3
1612− pand xmm4, [esp+640-544]
1613− paddw xmm7, xmm5
1614− paddw xmm6, xmm7
1615− paddw xmm6, [esp+640-624]
1616− movdqa xmm7, [esp+640-528]
1617−
1618− paddw xmm5, xmm1
1619− psraw xmm6, 2
1620− pand xmm7, xmm6
1621−
1622− movdqa xmm6, [esp+640-384]
1623− movdqa [esp+640-64], xmm7
1624− movdqa xmm7, [esp+640-560]
1625− pandn xmm7, xmm6
1626− movdqa [esp+640-304], xmm7
1627− movdqa xmm7, [esp+640-560]
1628− movdqa [esp+640-528], xmm7
1629− movdqa xmm7, [esp+640-416]
1630− paddw xmm7, xmm6
1631− paddw xmm7, xmm5
1632− paddw xmm7, [esp+640-624]
1633− movdqa xmm5, [esp+640-528]
1634− psraw xmm7, 2
1635− pand xmm5, xmm7
1636− movdqa [esp+640-32], xmm5
1637−
1638− movdqa xmm5, [esp+640-544]
1639− movdqa [esp+640-528], xmm5
1640− movdqa xmm5, [esp+640-480]
1641− movdqa xmm7, xmm5
1642− paddw xmm7, xmm5
1643− movdqa xmm5, xmm1
1644− paddw xmm5, xmm6
1645− paddw xmm6, [esp+640-592]
1646− paddw xmm7, xmm5
1647− paddw xmm7, [esp+640-624]
1648− movdqa xmm5, [esp+640-528]
1649− psraw xmm7, 2
1650− pandn xmm5, xmm7
1651− movdqa xmm7, [esp+640-480]
1652− paddw xmm7, xmm1
1653− paddw xmm7, [esp+640-400]
1654− movdqa xmm1, [esp+640-544]
1655− movdqa [esp+640-352], xmm5
1656− movdqa xmm5, [esp+640-368]
1657− psllw xmm7, 1
1658− paddw xmm7, xmm6
1659− paddw xmm5, xmm7
1660−
1661− movdqa xmm7, [esp+640-400]
1662− psraw xmm5, 3
1663− pand xmm1, xmm5
1664− movdqa xmm5, [esp+640-480]
1665− movdqa [esp+640-96], xmm1
1666− movdqa xmm1, [esp+640-560]
1667− movdqa [esp+640-528], xmm1
1668− movdqa xmm1, [esp+640-384]
1669− movdqa xmm6, xmm1
1670− paddw xmm6, xmm1
1671− paddw xmm1, [esp+640-400]
1672− paddw xmm1, [esp+640-144]
1673− paddw xmm7, xmm5
1674− paddw xmm5, [esp+640-592]
1675− paddw xmm6, xmm7
1676− paddw xmm6, [esp+640-624]
1677− movdqa xmm7, [esp+640-528]
1678− psraw xmm6, 2
1679− psllw xmm1, 1
1680− paddw xmm1, xmm5
1681−
1682− movdqa xmm5, [esp+656-272]
1683− pandn xmm7, xmm6
1684− movdqa xmm6, [esp+640-416]
1685− paddw xmm6, xmm1
1686− movdqa xmm1, [esp+640-560]
1687− psraw xmm6, 3
1688− pand xmm1, xmm6
1689−
1690− movdqa xmm6, [esp+704-272]
1691− movdqa [esp+640-128], xmm1
1692− movdqa xmm1, [esp+672-272]
1693− punpckhbw xmm1, xmm2
1694− movdqa [esp+640-448], xmm1
1695− movdqa xmm1, [esp+688-272]
1696− punpckhbw xmm1, xmm2
1697− punpckhbw xmm6, xmm2
1698− movdqa [esp+640-288], xmm7
1699− punpckhbw xmm5, xmm2
1700− movdqa [esp+640-496], xmm1
1701− movdqa [esp+640-432], xmm6
1702−
1703− movdqa xmm7, [esp+720-272]
1704− punpckhbw xmm7, xmm2
1705− movdqa [esp+640-464], xmm7
1706−
1707− movdqa xmm7, [esp+736-272]
1708− punpckhbw xmm7, xmm2
1709− movdqa [esp+640-528], xmm7
1710−
1711− movdqa xmm7, xmm6
1712−
1713− psubw xmm6, [esp+640-464]
1714− psubw xmm7, xmm1
1715− pabsw xmm7, xmm7
1716− movdqa [esp+640-560], xmm7
1717− por xmm4, [esp+640-16]
1718− pabsw xmm6, xmm6
1719− movdqa xmm7, xmm1
1720− psubw xmm7, [esp+640-448]
1721−
1722− movdqa xmm1, [esp+640-512]
1723− pabsw xmm7, xmm7
1724− pcmpgtw xmm1, xmm7
1725− movdqa xmm7, [esp+640-512]
1726− pcmpgtw xmm7, xmm6
1727− movdqa xmm6, [esp+640-320]
1728− pand xmm1, xmm7
1729− movdqa xmm7, [esp+640-560]
1730− pcmpgtw xmm6, xmm7
1731− pand xmm1, xmm6
1732−
1733− movdqa xmm6, [esp+640-576]
1734− pcmpgtw xmm6, xmm7
1735−
1736− movdqa xmm7, [esp+640-496]
1737− punpckhbw xmm3, xmm2
1738− movdqa [esp+640-560], xmm6
1739− movdqa xmm6, [esp+640-512]
1740− psubw xmm7, xmm5
1741− pabsw xmm7, xmm7
1742− pcmpgtw xmm6, xmm7
1743−
1744− pand xmm6, [esp+640-560]
1745− movdqa xmm7, [esp+640-432]
1746− psubw xmm7, [esp+640-528]
1747−
1748− psllw xmm3, 1
1749− movdqa [esp+640-544], xmm6
1750− movdqa xmm6, [esp+640-512]
1751−
1752− movdqa xmm2, [esp+640-544]
1753− paddw xmm3, xmm5
1754− paddw xmm3, xmm5
1755− paddw xmm3, xmm5
1756− paddw xmm3, [esp+640-448]
1757− paddw xmm3, [esp+640-496]
1758− pabsw xmm7, xmm7
1759− pcmpgtw xmm6, xmm7
1760− pand xmm6, [esp+640-560]
1761− movdqa [esp+640-560], xmm6
1762−
1763− movdqa xmm6, xmm0
1764− pand xmm6, xmm4
1765− movdqa xmm4, xmm0
1766− pandn xmm4, [esp+640-368]
1767− por xmm6, xmm4
1768− movdqa xmm4, [esp+640-432]
1769− paddw xmm3, xmm4
1770− paddw xmm3, [esp+640-592]
1771− psraw xmm3, 3
1772− pand xmm3, xmm2
1773− pandn xmm2, xmm5
1774− por xmm3, xmm2
1775− movdqa xmm7, xmm1
1776− pand xmm7, xmm3
1777− movdqa xmm3, [esp+640-64]
1778− por xmm3, [esp+640-336]
1779− movdqa xmm2, xmm1
1780− pandn xmm2, xmm5
1781− por xmm7, xmm2
1782−
1783− movdqa xmm2, xmm0
1784− pand xmm2, xmm3
1785− movdqa xmm3, xmm0
1786− pandn xmm3, [esp+640-480]
1787− por xmm2, xmm3
1788− packuswb xmm6, xmm7
1789− movdqa [esp+640-336], xmm2
1790− movdqa [esp+656-272], xmm6
1791− movdqa xmm6, [esp+640-544]
1792− movdqa xmm2, xmm5
1793− paddw xmm2, [esp+640-448]
1794− movdqa xmm3, xmm1
1795− movdqa xmm7, [esp+640-496]
1796− paddw xmm7, xmm4
1797− paddw xmm2, xmm7
1798− paddw xmm2, [esp+640-624]
1799− movdqa xmm7, [esp+640-544]
1800− psraw xmm2, 2
1801− pand xmm6, xmm2
1802− movdqa xmm2, [esp+640-448]
1803− pandn xmm7, xmm2
1804− por xmm6, xmm7
1805− pand xmm3, xmm6
1806− movdqa xmm6, xmm1
1807− pandn xmm6, xmm2
1808− paddw xmm2, [esp+640-496]
1809− paddw xmm2, xmm4
1810− por xmm3, xmm6
1811− movdqa xmm6, [esp+640-336]
1812− packuswb xmm6, xmm3
1813− psllw xmm2, 1
1814− movdqa [esp+672-272], xmm6
1815− movdqa xmm6, [esp+640-96]
1816− por xmm6, [esp+640-352]
1817−
1818− movdqa xmm3, xmm0
1819− pand xmm3, xmm6
1820− movdqa xmm6, xmm0
1821− pandn xmm6, [esp+640-144]
1822− por xmm3, xmm6
1823− movdqa xmm6, [esp+640-544]
1824− movdqa [esp+640-352], xmm3
1825− movdqa xmm3, [esp+640-464]
1826− paddw xmm3, [esp+640-592]
1827− paddw xmm2, xmm3
1828− movdqa xmm3, [esp+640-448]
1829− paddw xmm5, xmm2
1830− movdqa xmm2, [esp+640-496]
1831− psraw xmm5, 3
1832− pand xmm6, xmm5
1833− movdqa xmm5, [esp+640-464]
1834− paddw xmm2, xmm5
1835− paddw xmm5, [esp+640-432]
1836− movdqa xmm4, xmm3
1837− paddw xmm4, xmm3
1838− paddw xmm4, xmm2
1839− paddw xmm4, [esp+640-624]
1840− movdqa xmm2, [esp+640-544]
1841− paddw xmm3, [esp+640-592]
1842− psraw xmm4, 2
1843− pandn xmm2, xmm4
1844− por xmm6, xmm2
1845− movdqa xmm7, xmm1
1846− pand xmm7, xmm6
1847− movdqa xmm6, [esp+640-496]
1848− movdqa xmm2, xmm1
1849− pandn xmm2, xmm6
1850− por xmm7, xmm2
1851− movdqa xmm2, [esp+640-352]
1852− packuswb xmm2, xmm7
1853− movdqa [esp+688-272], xmm2
1854− movdqa xmm2, [esp+640-128]
1855− por xmm2, [esp+640-288]
1856−
1857− movdqa xmm4, xmm0
1858− pand xmm4, xmm2
1859− paddw xmm5, xmm6
1860− movdqa xmm2, xmm0
1861− pandn xmm2, [esp+640-400]
1862− por xmm4, xmm2
1863− movdqa xmm2, [esp+640-528]
1864− psllw xmm5, 1
1865− paddw xmm5, xmm3
1866− movdqa xmm3, [esp+640-560]
1867− paddw xmm2, xmm5
1868− psraw xmm2, 3
1869− movdqa [esp+640-288], xmm4
1870− movdqa xmm4, [esp+640-560]
1871− pand xmm4, xmm2
1872− movdqa xmm2, [esp+640-464]
1873− movdqa xmm5, xmm2
1874− paddw xmm5, xmm2
1875− movdqa xmm2, [esp+640-432]
1876− paddw xmm2, [esp+640-448]
1877− movdqa xmm7, xmm1
1878− paddw xmm5, xmm2
1879− paddw xmm5, [esp+640-624]
1880− movdqa xmm6, [esp+640-560]
1881− psraw xmm5, 2
1882− pandn xmm3, xmm5
1883− por xmm4, xmm3
1884− movdqa xmm3, [esp+640-32]
1885− por xmm3, [esp+640-304]
1886− pand xmm7, xmm4
1887− movdqa xmm4, [esp+640-432]
1888− movdqa xmm5, [esp+640-464]
1889− movdqa xmm2, xmm1
1890− pandn xmm2, xmm4
1891− paddw xmm4, [esp+640-496]
1892− por xmm7, xmm2
1893− movdqa xmm2, [esp+640-288]
1894− packuswb xmm2, xmm7
1895− movdqa [esp+704-272], xmm2
1896−
1897− movdqa xmm2, xmm0
1898− pand xmm2, xmm3
1899− movdqa xmm3, xmm0
1900− pandn xmm3, [esp+640-384]
1901− por xmm2, xmm3
1902− movdqa [esp+640-304], xmm2
1903− movdqa xmm2, [esp+640-528]
1904− movdqa xmm3, xmm2
1905− paddw xmm3, [esp+640-464]
1906− paddw xmm3, xmm4
1907− paddw xmm3, [esp+640-624]
1908− psraw xmm3, 2
1909− pand xmm6, xmm3
1910− movdqa xmm3, [esp+640-560]
1911− movdqa xmm4, xmm3
1912− pandn xmm4, xmm5
1913− por xmm6, xmm4
1914− movdqa xmm7, xmm1
1915− pand xmm7, xmm6
1916− movdqa xmm6, [esp+640-304]
1917− movdqa xmm4, xmm1
1918− pandn xmm4, xmm5
1919− por xmm7, xmm4
1920−
1921− movdqa xmm4, xmm0
1922− pandn xmm0, [esp+640-416]
1923− packuswb xmm6, xmm7
1924− movdqa xmm7, [esp+640-112]
1925− por xmm7, [esp+640-80]
1926− pand xmm4, xmm7
1927− por xmm4, xmm0
1928− movdqa xmm0, [esp+752-272]
1929− punpckhbw xmm0, [esp+640-48]
1930− psllw xmm0, 1
1931− paddw xmm0, xmm2
1932− paddw xmm0, xmm2
1933− paddw xmm0, xmm2
1934− paddw xmm0, xmm5
1935− paddw xmm0, [esp+640-432]
1936− paddw xmm0, [esp+640-496]
1937− paddw xmm0, [esp+640-592]
1938− psraw xmm0, 3
1939− pand xmm0, xmm3
1940− movdqa xmm7, xmm1
1941− pandn xmm3, xmm2
1942− por xmm0, xmm3
1943− pand xmm7, xmm0
1944−
1945− movdqa xmm0, [esp+656-272]
1946− movdqa [edx], xmm0
1947−
1948− movdqa xmm0, [esp+672-272]
1949−
1950− mov edx, dword [esp+640-596]
1951− movdqa [esi], xmm0
1952− movdqa xmm0, [esp+688-272]
1953− movdqa [edi], xmm0
1954− movdqa xmm0, [esp+704-272]
1955−
1956− pop edi
1957− pandn xmm1, xmm2
1958− movdqa [eax], xmm0
1959− por xmm7, xmm1
1960− pop esi
1961− packuswb xmm4, xmm7
1962− movdqa [edx], xmm6
1963− movdqa [ecx], xmm4
1964− pop ebx
1965− mov esp, ebp
1966− pop ebp
1967− ret
1968−
1969−
1970−;********************************************************************************
1971−;
1972−; void DeblockLumaTransposeH2V_sse2(uint8_t * pPixY, int32_t iStride, uint8_t * pDst);
1973−;
1974−;********************************************************************************
1975−
1976−WELS_EXTERN DeblockLumaTransposeH2V_sse2
1977−
1978−ALIGN 16
1979−
1980−DeblockLumaTransposeH2V_sse2:
1981− push ebp
1982− push ebx
1983− mov ebp, esp
1984− and esp,0FFFFFFF0h
1985− sub esp, 10h
1986−
1987− mov eax, [ebp + 0Ch]
1988− mov ecx, [ebp + 10h]
1989− lea edx, [eax + ecx * 8]
1990− lea ebx, [ecx*3]
1991−
1992− movq xmm0, [eax]
1993− movq xmm7, [edx]
1994− punpcklqdq xmm0, xmm7
1995− movq xmm1, [eax + ecx]
1996− movq xmm7, [edx + ecx]
1997− punpcklqdq xmm1, xmm7
1998− movq xmm2, [eax + ecx*2]
1999− movq xmm7, [edx + ecx*2]
2000− punpcklqdq xmm2, xmm7
2001− movq xmm3, [eax + ebx]
2002− movq xmm7, [edx + ebx]
2003− punpcklqdq xmm3, xmm7
2004−
2005− lea eax, [eax + ecx * 4]
2006− lea edx, [edx + ecx * 4]
2007− movq xmm4, [eax]
2008− movq xmm7, [edx]
2009− punpcklqdq xmm4, xmm7
2010− movq xmm5, [eax + ecx]
2011− movq xmm7, [edx + ecx]
2012− punpcklqdq xmm5, xmm7
2013− movq xmm6, [eax + ecx*2]
2014− movq xmm7, [edx + ecx*2]
2015− punpcklqdq xmm6, xmm7
2016−
2017− movdqa [esp], xmm0
2018− movq xmm7, [eax + ebx]
2019− movq xmm0, [edx + ebx]
2020− punpcklqdq xmm7, xmm0
2021− movdqa xmm0, [esp]
2022−
2023− SSE2_TransTwo8x8B xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, [esp]
2024− ;pOut: m5, m3, m4, m8, m6, m2, m7, m1
2025−
2026− mov eax, [ebp + 14h]
2027− movdqa [eax], xmm4
2028− movdqa [eax + 10h], xmm2
2029− movdqa [eax + 20h], xmm3
2030− movdqa [eax + 30h], xmm7
2031− movdqa [eax + 40h], xmm5
2032− movdqa [eax + 50h], xmm1
2033− movdqa [eax + 60h], xmm6
2034− movdqa [eax + 70h], xmm0
2035−
2036− mov esp, ebp
2037− pop ebx
2038− pop ebp
2039− ret
2040−
2041−
2042−
2043−;*******************************************************************************************
2044−;
2045−; void DeblockLumaTransposeV2H_sse2(uint8_t * pPixY, int32_t iStride, uint8_t * pSrc);
2046−;
2047−;*******************************************************************************************
2048−
2049−WELS_EXTERN DeblockLumaTransposeV2H_sse2
2050−
2051−ALIGN 16
2052−
2053−DeblockLumaTransposeV2H_sse2:
2054− push ebp
2055− mov ebp, esp
2056−
2057− and esp, 0FFFFFFF0h
2058− sub esp, 10h
2059−
2060− mov eax, [ebp + 10h]
2061− mov ecx, [ebp + 0Ch]
2062− mov edx, [ebp + 08h]
2063−
2064− movdqa xmm0, [eax]
2065− movdqa xmm1, [eax + 10h]
2066− movdqa xmm2, [eax + 20h]
2067− movdqa xmm3, [eax + 30h]
2068− movdqa xmm4, [eax + 40h]
2069− movdqa xmm5, [eax + 50h]
2070− movdqa xmm6, [eax + 60h]
2071− movdqa xmm7, [eax + 70h]
2072−
2073− SSE2_TransTwo8x8B xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, [esp]
2074− ;pOut: m5, m3, m4, m8, m6, m2, m7, m1
2075−
2076− lea eax, [ecx * 3]
2077−
2078− movq [edx], xmm4
2079− movq [edx + ecx], xmm2
2080− movq [edx + ecx*2], xmm3
2081− movq [edx + eax], xmm7
2082−
2083− lea edx, [edx + ecx*4]
2084− movq [edx], xmm5
2085− movq [edx + ecx], xmm1
2086− movq [edx + ecx*2], xmm6
2087− movq [edx + eax], xmm0
2088−
2089− psrldq xmm4, 8
2090− psrldq xmm2, 8
2091− psrldq xmm3, 8
2092− psrldq xmm7, 8
2093− psrldq xmm5, 8
2094− psrldq xmm1, 8
2095− psrldq xmm6, 8
2096− psrldq xmm0, 8
2097−
2098− lea edx, [edx + ecx*4]
2099− movq [edx], xmm4
2100− movq [edx + ecx], xmm2
2101− movq [edx + ecx*2], xmm3
2102− movq [edx + eax], xmm7
2103−
2104− lea edx, [edx + ecx*4]
2105− movq [edx], xmm5
2106− movq [edx + ecx], xmm1
2107− movq [edx + ecx*2], xmm6
2108− movq [edx + eax], xmm0
2109−
2110−
2111− mov esp, ebp
2112− pop ebp
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+;* deblock.asm
33+;*
34+;* Abstract
35+;* edge loop
36+;*
37+;* History
38+;* 08/07/2009 Created
39+;*
40+;*
41+;*************************************************************************/
42+%include "asm_inc.asm"
43+BITS 32
44+
45+;*******************************************************************************
46+; Macros and other preprocessor constants
47+;*******************************************************************************
48+
49+%ifdef FORMAT_COFF
50+SECTION .rodata pData
51+%else
52+SECTION .rodata align=16
53+%endif
54+
55+SECTION .text
56+
57+;********************************************************************************
58+; void DeblockChromaEq4V_sse2(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride,
59+; int32_t iAlpha, int32_t iBeta)
60+;********************************************************************************
61+WELS_EXTERN DeblockChromaEq4V_sse2
62+
63+ALIGN 16
64+DeblockChromaEq4V_sse2:
65+ push ebp
66+ mov ebp,esp
67+ and esp,0FFFFFFF0h
68+ sub esp,68h
69+ mov edx,[ebp+10h] ; iStride
70+ mov eax,[ebp+8] ; pPixCb
71+ mov ecx,[ebp+0Ch] ; pPixCr
72+ movq xmm4,[ecx]
73+ movq xmm5,[edx+ecx]
74+ push esi
75+ push edi
76+ lea esi,[edx+edx]
77+ mov edi,eax
78+ sub edi,esi
79+ movq xmm1,[edi]
80+ mov edi,ecx
81+ sub edi,esi
82+ movq xmm2,[edi]
83+ punpcklqdq xmm1,xmm2
84+ mov esi,eax
85+ sub esi,edx
86+ movq xmm2,[esi]
87+ mov edi,ecx
88+ sub edi,edx
89+ movq xmm3,[edi]
90+ punpcklqdq xmm2,xmm3
91+ movq xmm3,[eax]
92+ punpcklqdq xmm3,xmm4
93+ movq xmm4,[edx+eax]
94+ mov edx, [ebp + 14h]
95+ punpcklqdq xmm4,xmm5
96+ movd xmm5,edx
97+ mov edx, [ebp + 18h]
98+ pxor xmm0,xmm0
99+ movdqa xmm6,xmm5
100+ punpcklwd xmm6,xmm5
101+ pshufd xmm5,xmm6,0
102+ movd xmm6,edx
103+ movdqa xmm7,xmm6
104+ punpcklwd xmm7,xmm6
105+ pshufd xmm6,xmm7,0
106+ movdqa xmm7,xmm1
107+ punpckhbw xmm1,xmm0
108+ punpcklbw xmm7,xmm0
109+ movdqa [esp+40h],xmm1
110+ movdqa [esp+60h],xmm7
111+ movdqa xmm7,xmm2
112+ punpcklbw xmm7,xmm0
113+ movdqa [esp+10h],xmm7
114+ movdqa xmm7,xmm3
115+ punpcklbw xmm7,xmm0
116+ punpckhbw xmm3,xmm0
117+ movdqa [esp+50h],xmm7
118+ movdqa xmm7,xmm4
119+ punpckhbw xmm4,xmm0
120+ punpckhbw xmm2,xmm0
121+ punpcklbw xmm7,xmm0
122+ movdqa [esp+30h],xmm3
123+ movdqa xmm3,[esp+10h]
124+ movdqa xmm1,xmm3
125+ psubw xmm1,[esp+50h]
126+ pabsw xmm1,xmm1
127+ movdqa [esp+20h],xmm4
128+ movdqa xmm0,xmm5
129+ pcmpgtw xmm0,xmm1
130+ movdqa xmm1,[esp+60h]
131+ psubw xmm1,xmm3
132+ pabsw xmm1,xmm1
133+ movdqa xmm4,xmm6
134+ pcmpgtw xmm4,xmm1
135+ pand xmm0,xmm4
136+ movdqa xmm1,xmm7
137+ psubw xmm1,[esp+50h]
138+ pabsw xmm1,xmm1
139+ movdqa xmm4,xmm6
140+ pcmpgtw xmm4,xmm1
141+ movdqa xmm1,xmm2
142+ psubw xmm1,[esp+30h]
143+ pabsw xmm1,xmm1
144+ pcmpgtw xmm5,xmm1
145+ movdqa xmm1,[esp+40h]
146+ pand xmm0,xmm4
147+ psubw xmm1,xmm2
148+ pabsw xmm1,xmm1
149+ movdqa xmm4,xmm6
150+ pcmpgtw xmm4,xmm1
151+ movdqa xmm1,[esp+20h]
152+ psubw xmm1,[esp+30h]
153+ pand xmm5,xmm4
154+ pabsw xmm1,xmm1
155+ pcmpgtw xmm6,xmm1
156+ pand xmm5,xmm6
157+ mov edx,2
158+ movsx edx,dx
159+ movd xmm1,edx
160+ movdqa xmm4,xmm1
161+ punpcklwd xmm4,xmm1
162+ pshufd xmm1,xmm4,0
163+ movdqa xmm4,[esp+60h]
164+ movdqa xmm6,xmm4
165+ paddw xmm6,xmm4
166+ paddw xmm6,xmm3
167+ paddw xmm6,xmm7
168+ movdqa [esp+10h],xmm1
169+ paddw xmm6,[esp+10h]
170+ psraw xmm6,2
171+ movdqa xmm4,xmm0
172+ pandn xmm4,xmm3
173+ movdqa xmm3,[esp+40h]
174+ movdqa xmm1,xmm0
175+ pand xmm1,xmm6
176+ por xmm1,xmm4
177+ movdqa xmm6,xmm3
178+ paddw xmm6,xmm3
179+ movdqa xmm3,[esp+10h]
180+ paddw xmm6,xmm2
181+ paddw xmm6,[esp+20h]
182+ paddw xmm6,xmm3
183+ psraw xmm6,2
184+ movdqa xmm4,xmm5
185+ pand xmm4,xmm6
186+ movdqa xmm6,xmm5
187+ pandn xmm6,xmm2
188+ por xmm4,xmm6
189+ packuswb xmm1,xmm4
190+ movdqa xmm4,[esp+50h]
191+ movdqa xmm6,xmm7
192+ paddw xmm6,xmm7
193+ paddw xmm6,xmm4
194+ paddw xmm6,[esp+60h]
195+ paddw xmm6,xmm3
196+ psraw xmm6,2
197+ movdqa xmm2,xmm0
198+ pand xmm2,xmm6
199+ pandn xmm0,xmm4
200+ por xmm2,xmm0
201+ movdqa xmm0,[esp+20h]
202+ movdqa xmm6,xmm0
203+ paddw xmm6,xmm0
204+ movdqa xmm0,[esp+30h]
205+ paddw xmm6,xmm0
206+ paddw xmm6,[esp+40h]
207+ movdqa xmm4,xmm5
208+ paddw xmm6,xmm3
209+ movq [esi],xmm1
210+ psraw xmm6,2
211+ pand xmm4,xmm6
212+ pandn xmm5,xmm0
213+ por xmm4,xmm5
214+ packuswb xmm2,xmm4
215+ movq [eax],xmm2
216+ psrldq xmm1,8
217+ movq [edi],xmm1
218+ pop edi
219+ psrldq xmm2,8
220+ movq [ecx],xmm2
221+ pop esi
222+ mov esp,ebp
223+ pop ebp
224+ ret
225+
226+;******************************************************************************
227+; void DeblockChromaLt4V_sse2(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride,
228+; int32_t iAlpha, int32_t iBeta, int8_t * pTC);
229+;*******************************************************************************
230+
231+WELS_EXTERN DeblockChromaLt4V_sse2
232+
233+DeblockChromaLt4V_sse2:
234+ push ebp
235+ mov ebp,esp
236+ and esp,0FFFFFFF0h
237+ sub esp,0E4h
238+ push ebx
239+ push esi
240+ mov esi, [ebp+1Ch] ; pTC
241+ movsx ebx, byte [esi+2]
242+ push edi
243+ movsx di,byte [esi+3]
244+ mov word [esp+0Ch],bx
245+ movsx bx,byte [esi+1]
246+ movsx esi,byte [esi]
247+ mov word [esp+0Eh],si
248+ movzx esi,di
249+ movd xmm1,esi
250+ movzx esi,di
251+ movd xmm2,esi
252+ mov si,word [esp+0Ch]
253+ mov edx, [ebp + 10h]
254+ mov eax, [ebp + 08h]
255+ movzx edi,si
256+ movzx esi,si
257+ mov ecx, [ebp + 0Ch]
258+ movd xmm4,esi
259+ movzx esi,bx
260+ movd xmm5,esi
261+ movd xmm3,edi
262+ movzx esi,bx
263+ movd xmm6,esi
264+ mov si,word [esp+0Eh]
265+ movzx edi,si
266+ movzx esi,si
267+ punpcklwd xmm6,xmm2
268+ pxor xmm0,xmm0
269+ movdqa [esp+40h],xmm0
270+ movd xmm7,edi
271+ movd xmm0,esi
272+ lea esi,[edx+edx]
273+ mov edi,eax
274+ sub edi,esi
275+ punpcklwd xmm5,xmm1
276+ movdqa xmm1,[esp+40h]
277+ punpcklwd xmm0,xmm4
278+ movq xmm4,[edx+ecx]
279+ punpcklwd xmm7,xmm3
280+ movq xmm3,[eax]
281+ punpcklwd xmm0,xmm6
282+ movq xmm6,[edi]
283+ punpcklwd xmm7,xmm5
284+ punpcklwd xmm0,xmm7
285+ mov edi,ecx
286+ sub edi,esi
287+ movdqa xmm2,xmm1
288+ psubw xmm2,xmm0
289+ movdqa [esp+60h],xmm2
290+ movq xmm2, [edi]
291+ punpcklqdq xmm6,xmm2
292+ mov esi,eax
293+ sub esi,edx
294+ movq xmm7,[esi]
295+ mov edi,ecx
296+ sub edi,edx
297+ movq xmm2,[edi]
298+ punpcklqdq xmm7,xmm2
299+ movq xmm2,[ecx]
300+ punpcklqdq xmm3,xmm2
301+ movq xmm2,[edx+eax]
302+ movsx edx,word [ebp + 14h]
303+ punpcklqdq xmm2,xmm4
304+ movdqa [esp+0E0h],xmm2
305+ movd xmm2,edx
306+ movsx edx,word [ebp + 18h]
307+ movdqa xmm4,xmm2
308+ punpcklwd xmm4,xmm2
309+ movd xmm2,edx
310+ movdqa xmm5,xmm2
311+ punpcklwd xmm5,xmm2
312+ pshufd xmm2,xmm5,0
313+ movdqa [esp+50h],xmm2
314+ movdqa xmm2,xmm6
315+ punpcklbw xmm2,xmm1
316+ movdqa [esp+0D0h],xmm3
317+ pshufd xmm4,xmm4,0
318+ movdqa [esp+30h],xmm2
319+ punpckhbw xmm6,xmm1
320+ movdqa [esp+80h],xmm6
321+ movdqa xmm6,[esp+0D0h]
322+ punpckhbw xmm6,xmm1
323+ movdqa [esp+70h],xmm6
324+ movdqa xmm6, [esp+0E0h]
325+ punpckhbw xmm6,xmm1
326+ movdqa [esp+90h],xmm6
327+ movdqa xmm5, [esp+0E0h]
328+ movdqa xmm2,xmm7
329+ punpckhbw xmm7,xmm1
330+ punpcklbw xmm5,xmm1
331+ movdqa [esp+0A0h],xmm7
332+ punpcklbw xmm3,xmm1
333+ mov edx,4
334+ punpcklbw xmm2,xmm1
335+ movsx edx,dx
336+ movd xmm6,edx
337+ movdqa xmm7,xmm6
338+ punpcklwd xmm7,xmm6
339+ pshufd xmm6,xmm7,0
340+ movdqa xmm7,[esp+30h]
341+ movdqa [esp+20h],xmm6
342+ psubw xmm7,xmm5
343+ movdqa xmm6,xmm0
344+ pcmpgtw xmm6,xmm1
345+ movdqa xmm1,[esp+60h]
346+ movdqa [esp+40h],xmm6
347+ movdqa xmm6,xmm3
348+ psubw xmm6,xmm2
349+ psllw xmm6,2
350+ paddw xmm6,xmm7
351+ paddw xmm6, [esp+20h]
352+ movdqa xmm7, [esp+50h]
353+ psraw xmm6,3
354+ pmaxsw xmm1,xmm6
355+ movdqa [esp+10h],xmm0
356+ movdqa xmm6, [esp+10h]
357+ pminsw xmm6,xmm1
358+ movdqa [esp+10h],xmm6
359+ movdqa xmm1,xmm2
360+ psubw xmm1,xmm3
361+ pabsw xmm1,xmm1
362+ movdqa xmm6,xmm4
363+ pcmpgtw xmm6,xmm1
364+ movdqa xmm1, [esp+30h]
365+ psubw xmm1,xmm2
366+ pabsw xmm1,xmm1
367+ pcmpgtw xmm7,xmm1
368+ movdqa xmm1,[esp+50h]
369+ pand xmm6,xmm7
370+ movdqa xmm7,[esp+50h]
371+ psubw xmm5,xmm3
372+ pabsw xmm5,xmm5
373+ pcmpgtw xmm1,xmm5
374+ movdqa xmm5,[esp+80h]
375+ psubw xmm5,[esp+90h]
376+ pand xmm6,xmm1
377+ pand xmm6,[esp+40h]
378+ movdqa xmm1,[esp+10h]
379+ pand xmm1,xmm6
380+ movdqa xmm6,[esp+70h]
381+ movdqa [esp+30h],xmm1
382+ movdqa xmm1,[esp+0A0h]
383+ psubw xmm6,xmm1
384+ psllw xmm6,2
385+ paddw xmm6,xmm5
386+ paddw xmm6,[esp+20h]
387+ movdqa xmm5,[esp+60h]
388+ psraw xmm6,3
389+ pmaxsw xmm5,xmm6
390+ pminsw xmm0,xmm5
391+ movdqa xmm5,[esp+70h]
392+ movdqa xmm6,xmm1
393+ psubw xmm6,xmm5
394+ pabsw xmm6,xmm6
395+ pcmpgtw xmm4,xmm6
396+ movdqa xmm6,[esp+80h]
397+ psubw xmm6,xmm1
398+ pabsw xmm6,xmm6
399+ pcmpgtw xmm7,xmm6
400+ movdqa xmm6,[esp+90h]
401+ pand xmm4,xmm7
402+ movdqa xmm7,[esp+50h]
403+ psubw xmm6,xmm5
404+ pabsw xmm6,xmm6
405+ pcmpgtw xmm7,xmm6
406+ pand xmm4,xmm7
407+ pand xmm4,[esp+40h]
408+ pand xmm0,xmm4
409+ movdqa xmm4,[esp+30h]
410+ paddw xmm2,xmm4
411+ paddw xmm1,xmm0
412+ packuswb xmm2,xmm1
413+ movq [esi],xmm2
414+ psubw xmm3,xmm4
415+ psubw xmm5,xmm0
416+ packuswb xmm3,xmm5
417+ movq [eax],xmm3
418+ psrldq xmm2,8
419+ movq [edi],xmm2
420+ pop edi
421+ pop esi
422+ psrldq xmm3,8
423+ movq [ecx],xmm3
424+ pop ebx
425+ mov esp,ebp
426+ pop ebp
427+ ret
428+
429+;***************************************************************************
430+; void DeblockChromaEq4H_sse2(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride,
431+; int32_t iAlpha, int32_t iBeta)
432+;***************************************************************************
433+
434+WELS_EXTERN DeblockChromaEq4H_sse2
435+
436+ALIGN 16
437+
438+DeblockChromaEq4H_sse2:
439+ push ebp
440+ mov ebp,esp
441+ and esp,0FFFFFFF0h
442+ sub esp,0C8h
443+ mov ecx,dword [ebp+8]
444+ mov edx,dword [ebp+0Ch]
445+ mov eax,dword [ebp+10h]
446+ sub ecx,2
447+ sub edx,2
448+ push esi
449+ lea esi,[eax+eax*2]
450+ mov dword [esp+18h],ecx
451+ mov dword [esp+4],edx
452+ lea ecx,[ecx+eax*4]
453+ lea edx,[edx+eax*4]
454+ lea eax,[esp+7Ch]
455+ push edi
456+ mov dword [esp+14h],esi
457+ mov dword [esp+18h],ecx
458+ mov dword [esp+0Ch],edx
459+ mov dword [esp+10h],eax
460+ mov esi,dword [esp+1Ch]
461+ mov ecx,dword [ebp+10h]
462+ mov edx,dword [esp+14h]
463+ movd xmm0,dword [esi]
464+ movd xmm1,dword [esi+ecx]
465+ movd xmm2,dword [esi+ecx*2]
466+ movd xmm3,dword [esi+edx]
467+ mov esi,dword [esp+8]
468+ movd xmm4,dword [esi]
469+ movd xmm5,dword [esi+ecx]
470+ movd xmm6,dword [esi+ecx*2]
471+ movd xmm7,dword [esi+edx]
472+ punpckldq xmm0,xmm4
473+ punpckldq xmm1,xmm5
474+ punpckldq xmm2,xmm6
475+ punpckldq xmm3,xmm7
476+ mov esi,dword [esp+18h]
477+ mov edi,dword [esp+0Ch]
478+ movd xmm4,dword [esi]
479+ movd xmm5,dword [edi]
480+ punpckldq xmm4,xmm5
481+ punpcklqdq xmm0,xmm4
482+ movd xmm4,dword [esi+ecx]
483+ movd xmm5,dword [edi+ecx]
484+ punpckldq xmm4,xmm5
485+ punpcklqdq xmm1,xmm4
486+ movd xmm4,dword [esi+ecx*2]
487+ movd xmm5,dword [edi+ecx*2]
488+ punpckldq xmm4,xmm5
489+ punpcklqdq xmm2,xmm4
490+ movd xmm4,dword [esi+edx]
491+ movd xmm5,dword [edi+edx]
492+ punpckldq xmm4,xmm5
493+ punpcklqdq xmm3,xmm4
494+ movdqa xmm6,xmm0
495+ punpcklbw xmm0,xmm1
496+ punpckhbw xmm6,xmm1
497+ movdqa xmm7,xmm2
498+ punpcklbw xmm2,xmm3
499+ punpckhbw xmm7,xmm3
500+ movdqa xmm4,xmm0
501+ movdqa xmm5,xmm6
502+ punpcklwd xmm0,xmm2
503+ punpckhwd xmm4,xmm2
504+ punpcklwd xmm6,xmm7
505+ punpckhwd xmm5,xmm7
506+ movdqa xmm1,xmm0
507+ movdqa xmm2,xmm4
508+ punpckldq xmm0,xmm6
509+ punpckhdq xmm1,xmm6
510+ punpckldq xmm4,xmm5
511+ punpckhdq xmm2,xmm5
512+ movdqa xmm5,xmm0
513+ movdqa xmm6,xmm1
514+ punpcklqdq xmm0,xmm4
515+ punpckhqdq xmm5,xmm4
516+ punpcklqdq xmm1,xmm2
517+ punpckhqdq xmm6,xmm2
518+ mov edi,dword [esp+10h]
519+ movdqa [edi],xmm0
520+ movdqa [edi+10h],xmm5
521+ movdqa [edi+20h],xmm1
522+ movdqa [edi+30h],xmm6
523+ movsx ecx,word [ebp+14h]
524+ movsx edx,word [ebp+18h]
525+ movdqa xmm6,[esp+80h]
526+ movdqa xmm4,[esp+90h]
527+ movdqa xmm5,[esp+0A0h]
528+ movdqa xmm7,[esp+0B0h]
529+ pxor xmm0,xmm0
530+ movd xmm1,ecx
531+ movdqa xmm2,xmm1
532+ punpcklwd xmm2,xmm1
533+ pshufd xmm1,xmm2,0
534+ movd xmm2,edx
535+ movdqa xmm3,xmm2
536+ punpcklwd xmm3,xmm2
537+ pshufd xmm2,xmm3,0
538+ movdqa xmm3,xmm6
539+ punpckhbw xmm6,xmm0
540+ movdqa [esp+60h],xmm6
541+ movdqa xmm6,[esp+90h]
542+ punpckhbw xmm6,xmm0
543+ movdqa [esp+30h],xmm6
544+ movdqa xmm6,[esp+0A0h]
545+ punpckhbw xmm6,xmm0
546+ movdqa [esp+40h],xmm6
547+ movdqa xmm6,[esp+0B0h]
548+ punpckhbw xmm6,xmm0
549+ movdqa [esp+70h],xmm6
550+ punpcklbw xmm7,xmm0
551+ punpcklbw xmm4,xmm0
552+ punpcklbw xmm5,xmm0
553+ punpcklbw xmm3,xmm0
554+ movdqa [esp+50h],xmm7
555+ movdqa xmm6,xmm4
556+ psubw xmm6,xmm5
557+ pabsw xmm6,xmm6
558+ movdqa xmm0,xmm1
559+ pcmpgtw xmm0,xmm6
560+ movdqa xmm6,xmm3
561+ psubw xmm6,xmm4
562+ pabsw xmm6,xmm6
563+ movdqa xmm7,xmm2
564+ pcmpgtw xmm7,xmm6
565+ movdqa xmm6,[esp+50h]
566+ psubw xmm6,xmm5
567+ pabsw xmm6,xmm6
568+ pand xmm0,xmm7
569+ movdqa xmm7,xmm2
570+ pcmpgtw xmm7,xmm6
571+ movdqa xmm6,[esp+30h]
572+ psubw xmm6,[esp+40h]
573+ pabsw xmm6,xmm6
574+ pcmpgtw xmm1,xmm6
575+ movdqa xmm6,[esp+60h]
576+ psubw xmm6,[esp+30h]
577+ pabsw xmm6,xmm6
578+ pand xmm0,xmm7
579+ movdqa xmm7,xmm2
580+ pcmpgtw xmm7,xmm6
581+ movdqa xmm6,[esp+70h]
582+ psubw xmm6,[esp+40h]
583+ pabsw xmm6,xmm6
584+ pand xmm1,xmm7
585+ pcmpgtw xmm2,xmm6
586+ pand xmm1,xmm2
587+ mov eax,2
588+ movsx ecx,ax
589+ movd xmm2,ecx
590+ movdqa xmm6,xmm2
591+ punpcklwd xmm6,xmm2
592+ pshufd xmm2,xmm6,0
593+ movdqa [esp+20h],xmm2
594+ movdqa xmm2,xmm3
595+ paddw xmm2,xmm3
596+ paddw xmm2,xmm4
597+ paddw xmm2,[esp+50h]
598+ paddw xmm2,[esp+20h]
599+ psraw xmm2,2
600+ movdqa xmm6,xmm0
601+ pand xmm6,xmm2
602+ movdqa xmm2,xmm0
603+ pandn xmm2,xmm4
604+ por xmm6,xmm2
605+ movdqa xmm2,[esp+60h]
606+ movdqa xmm7,xmm2
607+ paddw xmm7,xmm2
608+ paddw xmm7,[esp+30h]
609+ paddw xmm7,[esp+70h]
610+ paddw xmm7,[esp+20h]
611+ movdqa xmm4,xmm1
612+ movdqa xmm2,xmm1
613+ pandn xmm2,[esp+30h]
614+ psraw xmm7,2
615+ pand xmm4,xmm7
616+ por xmm4,xmm2
617+ movdqa xmm2,[esp+50h]
618+ packuswb xmm6,xmm4
619+ movdqa [esp+90h],xmm6
620+ movdqa xmm6,xmm2
621+ paddw xmm6,xmm2
622+ movdqa xmm2,[esp+20h]
623+ paddw xmm6,xmm5
624+ paddw xmm6,xmm3
625+ movdqa xmm4,xmm0
626+ pandn xmm0,xmm5
627+ paddw xmm6,xmm2
628+ psraw xmm6,2
629+ pand xmm4,xmm6
630+ por xmm4,xmm0
631+ movdqa xmm0,[esp+70h]
632+ movdqa xmm5,xmm0
633+ paddw xmm5,xmm0
634+ movdqa xmm0,[esp+40h]
635+ paddw xmm5,xmm0
636+ paddw xmm5,[esp+60h]
637+ movdqa xmm3,xmm1
638+ paddw xmm5,xmm2
639+ psraw xmm5,2
640+ pand xmm3,xmm5
641+ pandn xmm1,xmm0
642+ por xmm3,xmm1
643+ packuswb xmm4,xmm3
644+ movdqa [esp+0A0h],xmm4
645+ mov esi,dword [esp+10h]
646+ movdqa xmm0,[esi]
647+ movdqa xmm1,[esi+10h]
648+ movdqa xmm2,[esi+20h]
649+ movdqa xmm3,[esi+30h]
650+ movdqa xmm6,xmm0
651+ punpcklbw xmm0,xmm1
652+ punpckhbw xmm6,xmm1
653+ movdqa xmm7,xmm2
654+ punpcklbw xmm2,xmm3
655+ punpckhbw xmm7,xmm3
656+ movdqa xmm4,xmm0
657+ movdqa xmm5,xmm6
658+ punpcklwd xmm0,xmm2
659+ punpckhwd xmm4,xmm2
660+ punpcklwd xmm6,xmm7
661+ punpckhwd xmm5,xmm7
662+ movdqa xmm1,xmm0
663+ movdqa xmm2,xmm4
664+ punpckldq xmm0,xmm6
665+ punpckhdq xmm1,xmm6
666+ punpckldq xmm4,xmm5
667+ punpckhdq xmm2,xmm5
668+ movdqa xmm5,xmm0
669+ movdqa xmm6,xmm1
670+ punpcklqdq xmm0,xmm4
671+ punpckhqdq xmm5,xmm4
672+ punpcklqdq xmm1,xmm2
673+ punpckhqdq xmm6,xmm2
674+ mov esi,dword [esp+1Ch]
675+ mov ecx,dword [ebp+10h]
676+ mov edx,dword [esp+14h]
677+ mov edi,dword [esp+8]
678+ movd dword [esi],xmm0
679+ movd dword [esi+ecx],xmm5
680+ movd dword [esi+ecx*2],xmm1
681+ movd dword [esi+edx],xmm6
682+ psrldq xmm0,4
683+ psrldq xmm5,4
684+ psrldq xmm1,4
685+ psrldq xmm6,4
686+ mov esi,dword [esp+18h]
687+ movd dword [edi],xmm0
688+ movd dword [edi+ecx],xmm5
689+ movd dword [edi+ecx*2],xmm1
690+ movd dword [edi+edx],xmm6
691+ psrldq xmm0,4
692+ psrldq xmm5,4
693+ psrldq xmm1,4
694+ psrldq xmm6,4
695+ movd dword [esi],xmm0
696+ movd dword [esi+ecx],xmm5
697+ movd dword [esi+ecx*2],xmm1
698+ movd dword [esi+edx],xmm6
699+ psrldq xmm0,4
700+ psrldq xmm5,4
701+ psrldq xmm1,4
702+ psrldq xmm6,4
703+ mov edi,dword [esp+0Ch]
704+ movd dword [edi],xmm0
705+ movd dword [edi+ecx],xmm5
706+ movd dword [edi+ecx*2],xmm1
707+ movd dword [edi+edx],xmm6
708+ pop edi
709+ pop esi
710+ mov esp,ebp
711+ pop ebp
712+ ret
713+
714+;*******************************************************************************
715+; void DeblockChromaLt4H_sse2(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride,
716+; int32_t iAlpha, int32_t iBeta, int8_t * pTC);
717+;*******************************************************************************
718+
719+WELS_EXTERN DeblockChromaLt4H_sse2
720+
721+ALIGN 16
722+
723+DeblockChromaLt4H_sse2:
724+ push ebp
725+ mov ebp,esp
726+ and esp,0FFFFFFF0h
727+ sub esp,108h
728+ mov ecx,dword [ebp+8]
729+ mov edx,dword [ebp+0Ch]
730+ mov eax,dword [ebp+10h]
731+ sub ecx,2
732+ sub edx,2
733+ push esi
734+ lea esi,[eax+eax*2]
735+ mov dword [esp+10h],ecx
736+ mov dword [esp+4],edx
737+ lea ecx,[ecx+eax*4]
738+ lea edx,[edx+eax*4]
739+ lea eax,[esp+6Ch]
740+ push edi
741+ mov dword [esp+0Ch],esi
742+ mov dword [esp+18h],ecx
743+ mov dword [esp+10h],edx
744+ mov dword [esp+1Ch],eax
745+ mov esi,dword [esp+14h]
746+ mov ecx,dword [ebp+10h]
747+ mov edx,dword [esp+0Ch]
748+ movd xmm0,dword [esi]
749+ movd xmm1,dword [esi+ecx]
750+ movd xmm2,dword [esi+ecx*2]
751+ movd xmm3,dword [esi+edx]
752+ mov esi,dword [esp+8]
753+ movd xmm4,dword [esi]
754+ movd xmm5,dword [esi+ecx]
755+ movd xmm6,dword [esi+ecx*2]
756+ movd xmm7,dword [esi+edx]
757+ punpckldq xmm0,xmm4
758+ punpckldq xmm1,xmm5
759+ punpckldq xmm2,xmm6
760+ punpckldq xmm3,xmm7
761+ mov esi,dword [esp+18h]
762+ mov edi,dword [esp+10h]
763+ movd xmm4,dword [esi]
764+ movd xmm5,dword [edi]
765+ punpckldq xmm4,xmm5
766+ punpcklqdq xmm0,xmm4
767+ movd xmm4,dword [esi+ecx]
768+ movd xmm5,dword [edi+ecx]
769+ punpckldq xmm4,xmm5
770+ punpcklqdq xmm1,xmm4
771+ movd xmm4,dword [esi+ecx*2]
772+ movd xmm5,dword [edi+ecx*2]
773+ punpckldq xmm4,xmm5
774+ punpcklqdq xmm2,xmm4
775+ movd xmm4,dword [esi+edx]
776+ movd xmm5,dword [edi+edx]
777+ punpckldq xmm4,xmm5
778+ punpcklqdq xmm3,xmm4
779+ movdqa xmm6,xmm0
780+ punpcklbw xmm0,xmm1
781+ punpckhbw xmm6,xmm1
782+ movdqa xmm7,xmm2
783+ punpcklbw xmm2,xmm3
784+ punpckhbw xmm7,xmm3
785+ movdqa xmm4,xmm0
786+ movdqa xmm5,xmm6
787+ punpcklwd xmm0,xmm2
788+ punpckhwd xmm4,xmm2
789+ punpcklwd xmm6,xmm7
790+ punpckhwd xmm5,xmm7
791+ movdqa xmm1,xmm0
792+ movdqa xmm2,xmm4
793+ punpckldq xmm0,xmm6
794+ punpckhdq xmm1,xmm6
795+ punpckldq xmm4,xmm5
796+ punpckhdq xmm2,xmm5
797+ movdqa xmm5,xmm0
798+ movdqa xmm6,xmm1
799+ punpcklqdq xmm0,xmm4
800+ punpckhqdq xmm5,xmm4
801+ punpcklqdq xmm1,xmm2
802+ punpckhqdq xmm6,xmm2
803+ mov edi,dword [esp+1Ch]
804+ movdqa [edi],xmm0
805+ movdqa [edi+10h],xmm5
806+ movdqa [edi+20h],xmm1
807+ movdqa [edi+30h],xmm6
808+ mov eax,dword [ebp+1Ch]
809+ movsx cx,byte [eax+3]
810+ movsx dx,byte [eax+2]
811+ movsx si,byte [eax+1]
812+ movsx ax,byte [eax]
813+ movzx edi,cx
814+ movzx ecx,cx
815+ movd xmm2,ecx
816+ movzx ecx,dx
817+ movzx edx,dx
818+ movd xmm3,ecx
819+ movd xmm4,edx
820+ movzx ecx,si
821+ movzx edx,si
822+ movd xmm5,ecx
823+ pxor xmm0,xmm0
824+ movd xmm6,edx
825+ movzx ecx,ax
826+ movdqa [esp+60h],xmm0
827+ movzx edx,ax
828+ movsx eax,word [ebp+14h]
829+ punpcklwd xmm6,xmm2
830+ movd xmm1,edi
831+ movd xmm7,ecx
832+ movsx ecx,word [ebp+18h]
833+ movd xmm0,edx
834+ punpcklwd xmm7,xmm3
835+ punpcklwd xmm5,xmm1
836+ movdqa xmm1,[esp+60h]
837+ punpcklwd xmm7,xmm5
838+ movdqa xmm5,[esp+0A0h]
839+ punpcklwd xmm0,xmm4
840+ punpcklwd xmm0,xmm6
841+ movdqa xmm6, [esp+70h]
842+ punpcklwd xmm0,xmm7
843+ movdqa xmm7,[esp+80h]
844+ movdqa xmm2,xmm1
845+ psubw xmm2,xmm0
846+ movdqa [esp+0D0h],xmm2
847+ movd xmm2,eax
848+ movdqa xmm3,xmm2
849+ punpcklwd xmm3,xmm2
850+ pshufd xmm4,xmm3,0
851+ movd xmm2,ecx
852+ movdqa xmm3,xmm2
853+ punpcklwd xmm3,xmm2
854+ pshufd xmm2,xmm3,0
855+ movdqa xmm3, [esp+90h]
856+ movdqa [esp+50h],xmm2
857+ movdqa xmm2,xmm6
858+ punpcklbw xmm2,xmm1
859+ punpckhbw xmm6,xmm1
860+ movdqa [esp+40h],xmm2
861+ movdqa [esp+0B0h],xmm6
862+ movdqa xmm6,[esp+90h]
863+ movdqa xmm2,xmm7
864+ punpckhbw xmm7,xmm1
865+ punpckhbw xmm6,xmm1
866+ punpcklbw xmm2,xmm1
867+ punpcklbw xmm3,xmm1
868+ punpcklbw xmm5,xmm1
869+ movdqa [esp+0F0h],xmm7
870+ movdqa [esp+0C0h],xmm6
871+ movdqa xmm6, [esp+0A0h]
872+ punpckhbw xmm6,xmm1
873+ movdqa [esp+0E0h],xmm6
874+ mov edx,4
875+ movsx eax,dx
876+ movd xmm6,eax
877+ movdqa xmm7,xmm6
878+ punpcklwd xmm7,xmm6
879+ pshufd xmm6,xmm7,0
880+ movdqa [esp+30h],xmm6
881+ movdqa xmm7, [esp+40h]
882+ psubw xmm7,xmm5
883+ movdqa xmm6,xmm0
884+ pcmpgtw xmm6,xmm1
885+ movdqa [esp+60h],xmm6
886+ movdqa xmm1, [esp+0D0h]
887+ movdqa xmm6,xmm3
888+ psubw xmm6,xmm2
889+ psllw xmm6,2
890+ paddw xmm6,xmm7
891+ paddw xmm6,[esp+30h]
892+ psraw xmm6,3
893+ pmaxsw xmm1,xmm6
894+ movdqa xmm7,[esp+50h]
895+ movdqa [esp+20h],xmm0
896+ movdqa xmm6, [esp+20h]
897+ pminsw xmm6,xmm1
898+ movdqa [esp+20h],xmm6
899+ movdqa xmm6,xmm4
900+ movdqa xmm1,xmm2
901+ psubw xmm1,xmm3
902+ pabsw xmm1,xmm1
903+ pcmpgtw xmm6,xmm1
904+ movdqa xmm1, [esp+40h]
905+ psubw xmm1,xmm2
906+ pabsw xmm1,xmm1
907+ pcmpgtw xmm7,xmm1
908+ movdqa xmm1, [esp+50h]
909+ pand xmm6,xmm7
910+ movdqa xmm7, [esp+50h]
911+ psubw xmm5,xmm3
912+ pabsw xmm5,xmm5
913+ pcmpgtw xmm1,xmm5
914+ movdqa xmm5, [esp+0B0h]
915+ psubw xmm5,[esp+0E0h]
916+ pand xmm6,xmm1
917+ pand xmm6, [esp+60h]
918+ movdqa xmm1, [esp+20h]
919+ pand xmm1,xmm6
920+ movdqa xmm6, [esp+0C0h]
921+ movdqa [esp+40h],xmm1
922+ movdqa xmm1, [esp+0F0h]
923+ psubw xmm6,xmm1
924+ psllw xmm6,2
925+ paddw xmm6,xmm5
926+ paddw xmm6, [esp+30h]
927+ movdqa xmm5, [esp+0D0h]
928+ psraw xmm6,3
929+ pmaxsw xmm5,xmm6
930+ pminsw xmm0,xmm5
931+ movdqa xmm5,[esp+0C0h]
932+ movdqa xmm6,xmm1
933+ psubw xmm6,xmm5
934+ pabsw xmm6,xmm6
935+ pcmpgtw xmm4,xmm6
936+ movdqa xmm6,[esp+0B0h]
937+ psubw xmm6,xmm1
938+ pabsw xmm6,xmm6
939+ pcmpgtw xmm7,xmm6
940+ movdqa xmm6, [esp+0E0h]
941+ pand xmm4,xmm7
942+ movdqa xmm7, [esp+50h]
943+ psubw xmm6,xmm5
944+ pabsw xmm6,xmm6
945+ pcmpgtw xmm7,xmm6
946+ pand xmm4,xmm7
947+ pand xmm4,[esp+60h]
948+ pand xmm0,xmm4
949+ movdqa xmm4, [esp+40h]
950+ paddw xmm2,xmm4
951+ paddw xmm1,xmm0
952+ psubw xmm3,xmm4
953+ psubw xmm5,xmm0
954+ packuswb xmm2,xmm1
955+ packuswb xmm3,xmm5
956+ movdqa [esp+80h],xmm2
957+ movdqa [esp+90h],xmm3
958+ mov esi,dword [esp+1Ch]
959+ movdqa xmm0, [esi]
960+ movdqa xmm1, [esi+10h]
961+ movdqa xmm2, [esi+20h]
962+ movdqa xmm3, [esi+30h]
963+ movdqa xmm6,xmm0
964+ punpcklbw xmm0,xmm1
965+ punpckhbw xmm6,xmm1
966+ movdqa xmm7,xmm2
967+ punpcklbw xmm2,xmm3
968+ punpckhbw xmm7,xmm3
969+ movdqa xmm4,xmm0
970+ movdqa xmm5,xmm6
971+ punpcklwd xmm0,xmm2
972+ punpckhwd xmm4,xmm2
973+ punpcklwd xmm6,xmm7
974+ punpckhwd xmm5,xmm7
975+ movdqa xmm1,xmm0
976+ movdqa xmm2,xmm4
977+ punpckldq xmm0,xmm6
978+ punpckhdq xmm1,xmm6
979+ punpckldq xmm4,xmm5
980+ punpckhdq xmm2,xmm5
981+ movdqa xmm5,xmm0
982+ movdqa xmm6,xmm1
983+ punpcklqdq xmm0,xmm4
984+ punpckhqdq xmm5,xmm4
985+ punpcklqdq xmm1,xmm2
986+ punpckhqdq xmm6,xmm2
987+ mov esi,dword [esp+14h]
988+ mov ecx,dword [ebp+10h]
989+ mov edx,dword [esp+0Ch]
990+ mov edi,dword [esp+8]
991+ movd dword [esi],xmm0
992+ movd dword [esi+ecx],xmm5
993+ movd dword [esi+ecx*2],xmm1
994+ movd dword [esi+edx],xmm6
995+ psrldq xmm0,4
996+ psrldq xmm5,4
997+ psrldq xmm1,4
998+ psrldq xmm6,4
999+ mov esi,dword [esp+18h]
1000+ movd dword [edi],xmm0
1001+ movd dword [edi+ecx],xmm5
1002+ movd dword [edi+ecx*2],xmm1
1003+ movd dword [edi+edx],xmm6
1004+ psrldq xmm0,4
1005+ psrldq xmm5,4
1006+ psrldq xmm1,4
1007+ psrldq xmm6,4
1008+ movd dword [esi],xmm0
1009+ movd dword [esi+ecx],xmm5
1010+ movd dword [esi+ecx*2],xmm1
1011+ movd dword [esi+edx],xmm6
1012+ psrldq xmm0,4
1013+ psrldq xmm5,4
1014+ psrldq xmm1,4
1015+ psrldq xmm6,4
1016+ mov edi,dword [esp+10h]
1017+ movd dword [edi],xmm0
1018+ movd dword [edi+ecx],xmm5
1019+ movd dword [edi+ecx*2],xmm1
1020+ movd dword [edi+edx],xmm6
1021+ pop edi
1022+ pop esi
1023+ mov esp,ebp
1024+ pop ebp
1025+ ret
1026+
1027+
1028+
1029+;*******************************************************************************
1030+; void DeblockLumaLt4V_sse2(uint8_t * pPix, int32_t iStride, int32_t iAlpha,
1031+; int32_t iBeta, int8_t * pTC)
1032+;*******************************************************************************
1033+
1034+
1035+WELS_EXTERN DeblockLumaLt4V_sse2
1036+
1037+ALIGN 16
1038+
1039+DeblockLumaLt4V_sse2:
1040+ push ebp
1041+ mov ebp, esp
1042+ and esp, -16 ; fffffff0H
1043+ sub esp, 420 ; 000001a4H
1044+ mov eax, dword [ebp+8]
1045+ mov ecx, dword [ebp+12]
1046+
1047+ pxor xmm0, xmm0
1048+ push ebx
1049+ mov edx, dword [ebp+24]
1050+ movdqa [esp+424-384], xmm0
1051+ push esi
1052+
1053+ lea esi, [ecx+ecx*2]
1054+ push edi
1055+ mov edi, eax
1056+ sub edi, esi
1057+ movdqa xmm0, [edi]
1058+
1059+ lea esi, [ecx+ecx]
1060+ movdqa [esp+432-208], xmm0
1061+ mov edi, eax
1062+ sub edi, esi
1063+ movdqa xmm0, [edi]
1064+ movdqa [esp+448-208], xmm0
1065+
1066+ mov ebx, eax
1067+ sub ebx, ecx
1068+ movdqa xmm0, [ebx]
1069+ movdqa [esp+464-208], xmm0
1070+
1071+ movdqa xmm0, [eax]
1072+
1073+ add ecx, eax
1074+ movdqa [esp+480-208], xmm0
1075+ movdqa xmm0, [ecx]
1076+ mov dword [esp+432-404], ecx
1077+
1078+ movsx ecx, word [ebp+16]
1079+ movdqa [esp+496-208], xmm0
1080+ movdqa xmm0, [esi+eax]
1081+
1082+ movsx si, byte [edx]
1083+ movdqa [esp+512-208], xmm0
1084+ movd xmm0, ecx
1085+ movsx ecx, word [ebp+20]
1086+ movdqa xmm1, xmm0
1087+ punpcklwd xmm1, xmm0
1088+ pshufd xmm0, xmm1, 0
1089+ movdqa [esp+432-112], xmm0
1090+ movd xmm0, ecx
1091+ movsx cx, byte [edx+1]
1092+ movdqa xmm1, xmm0
1093+ punpcklwd xmm1, xmm0
1094+ mov dword [esp+432-408], ebx
1095+ movzx ebx, cx
1096+ pshufd xmm0, xmm1, 0
1097+ movd xmm1, ebx
1098+ movzx ebx, cx
1099+ movd xmm2, ebx
1100+ movzx ebx, cx
1101+ movzx ecx, cx
1102+ movd xmm4, ecx
1103+ movzx ecx, si
1104+ movd xmm5, ecx
1105+ movzx ecx, si
1106+ movd xmm6, ecx
1107+ movzx ecx, si
1108+ movd xmm7, ecx
1109+ movzx ecx, si
1110+ movdqa [esp+432-336], xmm0
1111+ movd xmm0, ecx
1112+
1113+ movsx cx, byte [edx+3]
1114+ movsx dx, byte [edx+2]
1115+ movd xmm3, ebx
1116+ punpcklwd xmm0, xmm4
1117+ movzx esi, cx
1118+ punpcklwd xmm6, xmm2
1119+ punpcklwd xmm5, xmm1
1120+ punpcklwd xmm0, xmm6
1121+ punpcklwd xmm7, xmm3
1122+ punpcklwd xmm7, xmm5
1123+ punpcklwd xmm0, xmm7
1124+ movdqa [esp+432-400], xmm0
1125+ movd xmm0, esi
1126+ movzx esi, cx
1127+ movd xmm2, esi
1128+ movzx esi, cx
1129+ movzx ecx, cx
1130+ movd xmm4, ecx
1131+ movzx ecx, dx
1132+ movd xmm3, esi
1133+ movd xmm5, ecx
1134+ punpcklwd xmm5, xmm0
1135+
1136+ movdqa xmm0, [esp+432-384]
1137+ movzx ecx, dx
1138+ movd xmm6, ecx
1139+ movzx ecx, dx
1140+ movzx edx, dx
1141+ punpcklwd xmm6, xmm2
1142+ movd xmm7, ecx
1143+ movd xmm1, edx
1144+
1145+ movdqa xmm2, [esp+448-208]
1146+ punpcklbw xmm2, xmm0
1147+
1148+ mov ecx, 4
1149+ movsx edx, cx
1150+ punpcklwd xmm7, xmm3
1151+ punpcklwd xmm7, xmm5
1152+ movdqa xmm5, [esp+496-208]
1153+ movdqa xmm3, [esp+464-208]
1154+ punpcklbw xmm5, xmm0
1155+ movdqa [esp+432-240], xmm5
1156+ movdqa xmm5, [esp+512-208]
1157+ punpcklbw xmm5, xmm0
1158+ movdqa [esp+432-352], xmm5
1159+ punpcklwd xmm1, xmm4
1160+ movdqa xmm4, [esp+432-208]
1161+ punpcklwd xmm1, xmm6
1162+ movdqa xmm6, [esp+480-208]
1163+ punpcklwd xmm1, xmm7
1164+ punpcklbw xmm6, xmm0
1165+ punpcklbw xmm3, xmm0
1166+ punpcklbw xmm4, xmm0
1167+ movdqa xmm7, xmm3
1168+ psubw xmm7, xmm4
1169+ pabsw xmm7, xmm7
1170+ movdqa [esp+432-272], xmm4
1171+ movdqa xmm4, [esp+432-336]
1172+ movdqa xmm5, xmm4
1173+ pcmpgtw xmm5, xmm7
1174+ movdqa [esp+432-288], xmm5
1175+ movdqa xmm7, xmm6
1176+ psubw xmm7, [esp+432-352]
1177+ pabsw xmm7, xmm7
1178+ movdqa xmm5, xmm4
1179+ pcmpgtw xmm5, xmm7
1180+ movdqa [esp+432-256], xmm5
1181+ movdqa xmm5, xmm3
1182+ pavgw xmm5, xmm6
1183+ movdqa [esp+432-304], xmm5
1184+ movdqa xmm5, [esp+432-400]
1185+ psubw xmm5, [esp+432-288]
1186+ psubw xmm5, [esp+432-256]
1187+ movdqa [esp+432-224], xmm5
1188+ movdqa xmm5, xmm6
1189+ psubw xmm5, xmm3
1190+ movdqa [esp+432-32], xmm6
1191+ psubw xmm6, [esp+432-240]
1192+ movdqa xmm7, xmm5
1193+ movdqa [esp+432-384], xmm5
1194+ movdqa xmm5, [esp+432-112]
1195+ pabsw xmm7, xmm7
1196+ pcmpgtw xmm5, xmm7
1197+ pabsw xmm6, xmm6
1198+ movdqa xmm7, xmm4
1199+ pcmpgtw xmm7, xmm6
1200+
1201+ pand xmm5, xmm7
1202+ movdqa xmm6, xmm3
1203+ psubw xmm6, xmm2
1204+ pabsw xmm6, xmm6
1205+ movdqa xmm7, xmm4
1206+ pcmpgtw xmm7, xmm6
1207+ movdqa xmm6, [esp+432-400]
1208+ pand xmm5, xmm7
1209+ movdqa xmm7, xmm6
1210+ pcmpeqw xmm6, xmm0
1211+ pcmpgtw xmm7, xmm0
1212+ por xmm7, xmm6
1213+ pand xmm5, xmm7
1214+ movdqa [esp+432-320], xmm5
1215+ movd xmm5, edx
1216+ movdqa xmm6, xmm5
1217+ punpcklwd xmm6, xmm5
1218+ pshufd xmm5, xmm6, 0
1219+ movdqa [esp+432-336], xmm5
1220+ movdqa xmm5, [esp+432-224]
1221+ movdqa [esp+432-368], xmm5
1222+ movdqa xmm6, xmm0
1223+ psubw xmm6, xmm5
1224+ movdqa xmm5, [esp+432-384]
1225+ psllw xmm5, 2
1226+ movdqa xmm7, xmm2
1227+ psubw xmm7, [esp+432-240]
1228+ paddw xmm7, xmm5
1229+ paddw xmm7, [esp+432-336]
1230+ movdqa xmm5, [esp+432-368]
1231+ psraw xmm7, 3
1232+ pmaxsw xmm6, xmm7
1233+ pminsw xmm5, xmm6
1234+
1235+ pand xmm5, [esp+432-320]
1236+ movdqa xmm6, [esp+432-400]
1237+ movdqa [esp+432-64], xmm5
1238+ movdqa [esp+432-384], xmm6
1239+ movdqa xmm5, xmm0
1240+ psubw xmm5, xmm6
1241+ movdqa [esp+432-368], xmm5
1242+ movdqa xmm6, xmm5
1243+ movdqa xmm5, [esp+432-272]
1244+ paddw xmm5, [esp+432-304]
1245+ movdqa xmm7, xmm2
1246+ paddw xmm7, xmm2
1247+ psubw xmm5, xmm7
1248+ psraw xmm5, 1
1249+ pmaxsw xmm6, xmm5
1250+ movdqa xmm5, [esp+432-384]
1251+ pminsw xmm5, xmm6
1252+
1253+ pand xmm5, [esp+432-320]
1254+ pand xmm5, [esp+432-288]
1255+ movdqa xmm6, [esp+432-240]
1256+ movdqa [esp+432-96], xmm5
1257+ movdqa xmm5, [esp+432-352]
1258+ paddw xmm5, [esp+432-304]
1259+ movdqa xmm7, xmm6
1260+ paddw xmm7, xmm6
1261+ movdqa xmm6, [esp+432-368]
1262+ psubw xmm5, xmm7
1263+
1264+ movdqa xmm7, [esp+496-208]
1265+ psraw xmm5, 1
1266+ pmaxsw xmm6, xmm5
1267+ movdqa xmm5, [esp+432-400]
1268+ pminsw xmm5, xmm6
1269+ pand xmm5, [esp+432-320]
1270+ pand xmm5, [esp+432-256]
1271+ movdqa xmm6, [esp+448-208]
1272+ punpckhbw xmm7, xmm0
1273+ movdqa [esp+432-352], xmm7
1274+
1275+ movdqa xmm7, [esp+512-208]
1276+ punpckhbw xmm6, xmm0
1277+ movdqa [esp+432-48], xmm5
1278+ movdqa xmm5, [esp+432-208]
1279+ movdqa [esp+432-368], xmm6
1280+ movdqa xmm6, [esp+464-208]
1281+ punpckhbw xmm7, xmm0
1282+ punpckhbw xmm5, xmm0
1283+ movdqa [esp+432-384], xmm7
1284+ punpckhbw xmm6, xmm0
1285+ movdqa [esp+432-400], xmm6
1286+
1287+ movdqa xmm7, [esp+432-400]
1288+ movdqa xmm6, [esp+480-208]
1289+ psubw xmm7, xmm5
1290+ movdqa [esp+432-16], xmm5
1291+ pabsw xmm7, xmm7
1292+ punpckhbw xmm6, xmm0
1293+ movdqa xmm5, xmm4
1294+ pcmpgtw xmm5, xmm7
1295+ movdqa [esp+432-288], xmm5
1296+
1297+ movdqa xmm7, xmm6
1298+ psubw xmm7, [esp+432-384]
1299+ pabsw xmm7, xmm7
1300+ movdqa xmm5, xmm4
1301+ pcmpgtw xmm5, xmm7
1302+ movdqa [esp+432-256], xmm5
1303+
1304+ movdqa xmm5, [esp+432-400]
1305+ movdqa [esp+432-80], xmm6
1306+ pavgw xmm5, xmm6
1307+ movdqa [esp+432-304], xmm5
1308+
1309+ movdqa xmm5, xmm1
1310+ psubw xmm5, [esp+432-288]
1311+ psubw xmm5, [esp+432-256]
1312+ movdqa [esp+432-224], xmm5
1313+ movdqa xmm5, xmm6
1314+ psubw xmm5, [esp+432-400]
1315+ psubw xmm6, [esp+432-352]
1316+ movdqa [esp+432-272], xmm5
1317+ movdqa xmm7, xmm5
1318+ movdqa xmm5, [esp+432-112]
1319+ pabsw xmm7, xmm7
1320+ pcmpgtw xmm5, xmm7
1321+ movdqa xmm7, xmm4
1322+ pabsw xmm6, xmm6
1323+ pcmpgtw xmm7, xmm6
1324+ movdqa xmm6, [esp+432-368]
1325+
1326+ pand xmm5, xmm7
1327+ movdqa xmm7, [esp+432-400]
1328+ psubw xmm7, xmm6
1329+ psubw xmm6, [esp+432-352]
1330+ pabsw xmm7, xmm7
1331+ pcmpgtw xmm4, xmm7
1332+ pand xmm5, xmm4
1333+
1334+ paddw xmm2, [esp+432-96]
1335+ movdqa xmm4, xmm1
1336+ pcmpgtw xmm4, xmm0
1337+ movdqa xmm7, xmm1
1338+ pcmpeqw xmm7, xmm0
1339+ por xmm4, xmm7
1340+ pand xmm5, xmm4
1341+ movdqa xmm4, [esp+432-224]
1342+ movdqa [esp+432-320], xmm5
1343+ movdqa xmm5, [esp+432-272]
1344+ movdqa xmm7, xmm0
1345+ psubw xmm7, xmm4
1346+ psubw xmm0, xmm1
1347+ psllw xmm5, 2
1348+ paddw xmm6, xmm5
1349+ paddw xmm6, [esp+432-336]
1350+ movdqa xmm5, [esp+432-368]
1351+ movdqa [esp+432-336], xmm0
1352+ psraw xmm6, 3
1353+ pmaxsw xmm7, xmm6
1354+ pminsw xmm4, xmm7
1355+ pand xmm4, [esp+432-320]
1356+ movdqa xmm6, xmm0
1357+ movdqa xmm0, [esp+432-16]
1358+ paddw xmm0, [esp+432-304]
1359+ movdqa [esp+432-272], xmm4
1360+ movdqa xmm4, [esp+432-368]
1361+ paddw xmm4, xmm4
1362+ psubw xmm0, xmm4
1363+
1364+ movdqa xmm4, [esp+432-64]
1365+ psraw xmm0, 1
1366+ pmaxsw xmm6, xmm0
1367+ movdqa xmm0, [esp+432-400]
1368+ movdqa xmm7, xmm1
1369+ pminsw xmm7, xmm6
1370+ movdqa xmm6, [esp+432-320]
1371+ pand xmm7, xmm6
1372+ pand xmm7, [esp+432-288]
1373+ paddw xmm5, xmm7
1374+ packuswb xmm2, xmm5
1375+ movdqa xmm5, [esp+432-272]
1376+ paddw xmm0, xmm5
1377+ paddw xmm3, xmm4
1378+ packuswb xmm3, xmm0
1379+
1380+ movdqa xmm0, [esp+432-32]
1381+ psubw xmm0, xmm4
1382+ movdqa xmm4, [esp+432-80]
1383+ psubw xmm4, xmm5
1384+
1385+ movdqa xmm5, [esp+432-240]
1386+ paddw xmm5, [esp+432-48]
1387+ packuswb xmm0, xmm4
1388+ movdqa xmm4, [esp+432-384]
1389+ paddw xmm4, [esp+432-304]
1390+ movdqa [esp+480-208], xmm0
1391+ movdqa xmm0, [esp+432-352]
1392+ movdqa xmm7, xmm0
1393+ paddw xmm0, xmm0
1394+
1395+ mov ecx, dword [esp+432-408]
1396+
1397+ mov edx, dword [esp+432-404]
1398+ psubw xmm4, xmm0
1399+ movdqa xmm0, [esp+432-336]
1400+ movdqa [edi], xmm2
1401+ psraw xmm4, 1
1402+ pmaxsw xmm0, xmm4
1403+ pminsw xmm1, xmm0
1404+ movdqa xmm0, [esp+480-208]
1405+
1406+ pop edi
1407+ pand xmm1, xmm6
1408+ pand xmm1, [esp+428-256]
1409+ movdqa [ecx], xmm3
1410+ paddw xmm7, xmm1
1411+ pop esi
1412+ packuswb xmm5, xmm7
1413+ movdqa [eax], xmm0
1414+ movdqa [edx], xmm5
1415+ pop ebx
1416+ mov esp, ebp
1417+ pop ebp
1418+ ret
1419+
1420+
1421+;*******************************************************************************
1422+; void DeblockLumaEq4V_sse2(uint8_t * pPix, int32_t iStride, int32_t iAlpha,
1423+; int32_t iBeta)
1424+;*******************************************************************************
1425+
1426+WELS_EXTERN DeblockLumaEq4V_sse2
1427+
1428+ALIGN 16
1429+
1430+DeblockLumaEq4V_sse2:
1431+
1432+ push ebp
1433+ mov ebp, esp
1434+ and esp, -16 ; fffffff0H
1435+ sub esp, 628 ; 00000274H
1436+ mov eax, dword [ebp+8]
1437+ mov ecx, dword [ebp+12]
1438+ push ebx
1439+ push esi
1440+
1441+ lea edx, [ecx*4]
1442+ pxor xmm0, xmm0
1443+ movdqa xmm2, xmm0
1444+
1445+ movdqa xmm0, [ecx+eax]
1446+ mov esi, eax
1447+ sub esi, edx
1448+ movdqa xmm3, [esi]
1449+ movdqa xmm5, [eax]
1450+ push edi
1451+ lea edi, [ecx+ecx]
1452+ lea ebx, [ecx+ecx*2]
1453+ mov dword [esp+640-600], edi
1454+ mov esi, eax
1455+ sub esi, edi
1456+ movdqa xmm1, [esi]
1457+ movdqa [esp+720-272], xmm0
1458+ mov edi, eax
1459+ sub edi, ecx
1460+ movdqa xmm4, [edi]
1461+ add ecx, eax
1462+ mov dword [esp+640-596], ecx
1463+
1464+ mov ecx, dword [esp+640-600]
1465+ movdqa xmm0, [ecx+eax]
1466+ movdqa [esp+736-272], xmm0
1467+
1468+ movdqa xmm0, [eax+ebx]
1469+ mov edx, eax
1470+ sub edx, ebx
1471+
1472+ movsx ebx, word [ebp+16]
1473+ movdqa xmm6, [edx]
1474+ add ecx, eax
1475+ movdqa [esp+752-272], xmm0
1476+ movd xmm0, ebx
1477+
1478+ movsx ebx, word [ebp+20]
1479+ movdqa xmm7, xmm0
1480+ punpcklwd xmm7, xmm0
1481+ pshufd xmm0, xmm7, 0
1482+ movdqa [esp+640-320], xmm0
1483+ movd xmm0, ebx
1484+ movdqa xmm7, xmm0
1485+ punpcklwd xmm7, xmm0
1486+ pshufd xmm0, xmm7, 0
1487+
1488+ movdqa xmm7, [esp+736-272]
1489+ punpcklbw xmm7, xmm2
1490+ movdqa [esp+640-416], xmm7
1491+ movdqa [esp+640-512], xmm0
1492+ movdqa xmm0, xmm1
1493+ movdqa [esp+672-272], xmm1
1494+ movdqa xmm1, xmm4
1495+ movdqa [esp+704-272], xmm5
1496+ punpcklbw xmm5, xmm2
1497+ punpcklbw xmm1, xmm2
1498+
1499+ movdqa xmm7, xmm5
1500+ psubw xmm7, xmm1
1501+ pabsw xmm7, xmm7
1502+ movdqa [esp+640-560], xmm7
1503+ punpcklbw xmm0, xmm2
1504+ movdqa [esp+688-272], xmm4
1505+ movdqa xmm4, [esp+720-272]
1506+ movdqa [esp+640-480], xmm0
1507+
1508+ movdqa xmm7, xmm1
1509+ psubw xmm7, xmm0
1510+
1511+ movdqa xmm0, [esp+640-512]
1512+ pabsw xmm7, xmm7
1513+ punpcklbw xmm4, xmm2
1514+ pcmpgtw xmm0, xmm7
1515+ movdqa [esp+640-384], xmm4
1516+ movdqa xmm7, xmm5
1517+ psubw xmm7, xmm4
1518+ movdqa xmm4, [esp+640-512]
1519+ movdqa [esp+656-272], xmm6
1520+ punpcklbw xmm6, xmm2
1521+ pabsw xmm7, xmm7
1522+ movdqa [esp+640-48], xmm2
1523+ movdqa [esp+640-368], xmm6
1524+ movdqa [esp+640-144], xmm1
1525+ movdqa [esp+640-400], xmm5
1526+ pcmpgtw xmm4, xmm7
1527+ pand xmm0, xmm4
1528+ movdqa xmm4, [esp+640-320]
1529+ pcmpgtw xmm4, [esp+640-560]
1530+ pand xmm0, xmm4
1531+
1532+ mov ebx, 2
1533+ movsx ebx, bx
1534+ movd xmm4, ebx
1535+ movdqa xmm7, xmm4
1536+ punpcklwd xmm7, xmm4
1537+ movdqa xmm4, [esp+640-320]
1538+ psraw xmm4, 2
1539+ pshufd xmm7, xmm7, 0
1540+ paddw xmm4, xmm7
1541+ movdqa [esp+640-576], xmm4
1542+ pcmpgtw xmm4, [esp+640-560]
1543+ movdqa [esp+640-560], xmm4
1544+
1545+ movdqa xmm4, [esp+640-512]
1546+ movdqa [esp+640-624], xmm7
1547+ movdqa xmm7, xmm1
1548+ psubw xmm7, xmm6
1549+ pabsw xmm7, xmm7
1550+ pcmpgtw xmm4, xmm7
1551+
1552+ pand xmm4, [esp+640-560]
1553+ movdqa [esp+640-544], xmm4
1554+ movdqa xmm4, [esp+640-512]
1555+ movdqa xmm7, xmm5
1556+ psubw xmm7, [esp+640-416]
1557+ pabsw xmm7, xmm7
1558+ pcmpgtw xmm4, xmm7
1559+
1560+ pand xmm4, [esp+640-560]
1561+ movdqa [esp+640-560], xmm4
1562+
1563+ movdqa xmm4, [esp+640-544]
1564+ pandn xmm4, xmm6
1565+ movdqa [esp+640-16], xmm4
1566+ mov ebx, 4
1567+ movsx ebx, bx
1568+ movd xmm4, ebx
1569+ movdqa xmm7, xmm4
1570+ punpcklwd xmm7, xmm4
1571+ movdqa xmm4, xmm3
1572+ punpcklbw xmm4, xmm2
1573+ psllw xmm4, 1
1574+ paddw xmm4, xmm6
1575+ paddw xmm4, xmm6
1576+ paddw xmm4, xmm6
1577+ paddw xmm4, [esp+640-480]
1578+
1579+ movdqa xmm6, [esp+640-560]
1580+ pshufd xmm7, xmm7, 0
1581+ paddw xmm4, xmm1
1582+ movdqa [esp+640-592], xmm7
1583+ paddw xmm4, xmm5
1584+ paddw xmm4, xmm7
1585+ movdqa xmm7, [esp+640-416]
1586+ pandn xmm6, xmm7
1587+ movdqa [esp+640-80], xmm6
1588+ movdqa xmm6, [esp+752-272]
1589+ punpcklbw xmm6, xmm2
1590+ psllw xmm6, 1
1591+ paddw xmm6, xmm7
1592+ paddw xmm6, xmm7
1593+ paddw xmm6, xmm7
1594+ paddw xmm6, [esp+640-384]
1595+
1596+ movdqa xmm7, [esp+640-480]
1597+ paddw xmm6, xmm5
1598+ paddw xmm6, xmm1
1599+ paddw xmm6, [esp+640-592]
1600+ psraw xmm6, 3
1601+ pand xmm6, [esp+640-560]
1602+ movdqa [esp+640-112], xmm6
1603+ movdqa xmm6, [esp+640-544]
1604+ pandn xmm6, xmm7
1605+ movdqa [esp+640-336], xmm6
1606+ movdqa xmm6, [esp+640-544]
1607+ movdqa [esp+640-528], xmm6
1608+ movdqa xmm6, [esp+640-368]
1609+ paddw xmm6, xmm7
1610+ movdqa xmm7, xmm1
1611+ psraw xmm4, 3
1612+ pand xmm4, [esp+640-544]
1613+ paddw xmm7, xmm5
1614+ paddw xmm6, xmm7
1615+ paddw xmm6, [esp+640-624]
1616+ movdqa xmm7, [esp+640-528]
1617+
1618+ paddw xmm5, xmm1
1619+ psraw xmm6, 2
1620+ pand xmm7, xmm6
1621+
1622+ movdqa xmm6, [esp+640-384]
1623+ movdqa [esp+640-64], xmm7
1624+ movdqa xmm7, [esp+640-560]
1625+ pandn xmm7, xmm6
1626+ movdqa [esp+640-304], xmm7
1627+ movdqa xmm7, [esp+640-560]
1628+ movdqa [esp+640-528], xmm7
1629+ movdqa xmm7, [esp+640-416]
1630+ paddw xmm7, xmm6
1631+ paddw xmm7, xmm5
1632+ paddw xmm7, [esp+640-624]
1633+ movdqa xmm5, [esp+640-528]
1634+ psraw xmm7, 2
1635+ pand xmm5, xmm7
1636+ movdqa [esp+640-32], xmm5
1637+
1638+ movdqa xmm5, [esp+640-544]
1639+ movdqa [esp+640-528], xmm5
1640+ movdqa xmm5, [esp+640-480]
1641+ movdqa xmm7, xmm5
1642+ paddw xmm7, xmm5
1643+ movdqa xmm5, xmm1
1644+ paddw xmm5, xmm6
1645+ paddw xmm6, [esp+640-592]
1646+ paddw xmm7, xmm5
1647+ paddw xmm7, [esp+640-624]
1648+ movdqa xmm5, [esp+640-528]
1649+ psraw xmm7, 2
1650+ pandn xmm5, xmm7
1651+ movdqa xmm7, [esp+640-480]
1652+ paddw xmm7, xmm1
1653+ paddw xmm7, [esp+640-400]
1654+ movdqa xmm1, [esp+640-544]
1655+ movdqa [esp+640-352], xmm5
1656+ movdqa xmm5, [esp+640-368]
1657+ psllw xmm7, 1
1658+ paddw xmm7, xmm6
1659+ paddw xmm5, xmm7
1660+
1661+ movdqa xmm7, [esp+640-400]
1662+ psraw xmm5, 3
1663+ pand xmm1, xmm5
1664+ movdqa xmm5, [esp+640-480]
1665+ movdqa [esp+640-96], xmm1
1666+ movdqa xmm1, [esp+640-560]
1667+ movdqa [esp+640-528], xmm1
1668+ movdqa xmm1, [esp+640-384]
1669+ movdqa xmm6, xmm1
1670+ paddw xmm6, xmm1
1671+ paddw xmm1, [esp+640-400]
1672+ paddw xmm1, [esp+640-144]
1673+ paddw xmm7, xmm5
1674+ paddw xmm5, [esp+640-592]
1675+ paddw xmm6, xmm7
1676+ paddw xmm6, [esp+640-624]
1677+ movdqa xmm7, [esp+640-528]
1678+ psraw xmm6, 2
1679+ psllw xmm1, 1
1680+ paddw xmm1, xmm5
1681+
1682+ movdqa xmm5, [esp+656-272]
1683+ pandn xmm7, xmm6
1684+ movdqa xmm6, [esp+640-416]
1685+ paddw xmm6, xmm1
1686+ movdqa xmm1, [esp+640-560]
1687+ psraw xmm6, 3
1688+ pand xmm1, xmm6
1689+
1690+ movdqa xmm6, [esp+704-272]
1691+ movdqa [esp+640-128], xmm1
1692+ movdqa xmm1, [esp+672-272]
1693+ punpckhbw xmm1, xmm2
1694+ movdqa [esp+640-448], xmm1
1695+ movdqa xmm1, [esp+688-272]
1696+ punpckhbw xmm1, xmm2
1697+ punpckhbw xmm6, xmm2
1698+ movdqa [esp+640-288], xmm7
1699+ punpckhbw xmm5, xmm2
1700+ movdqa [esp+640-496], xmm1
1701+ movdqa [esp+640-432], xmm6
1702+
1703+ movdqa xmm7, [esp+720-272]
1704+ punpckhbw xmm7, xmm2
1705+ movdqa [esp+640-464], xmm7
1706+
1707+ movdqa xmm7, [esp+736-272]
1708+ punpckhbw xmm7, xmm2
1709+ movdqa [esp+640-528], xmm7
1710+
1711+ movdqa xmm7, xmm6
1712+
1713+ psubw xmm6, [esp+640-464]
1714+ psubw xmm7, xmm1
1715+ pabsw xmm7, xmm7
1716+ movdqa [esp+640-560], xmm7
1717+ por xmm4, [esp+640-16]
1718+ pabsw xmm6, xmm6
1719+ movdqa xmm7, xmm1
1720+ psubw xmm7, [esp+640-448]
1721+
1722+ movdqa xmm1, [esp+640-512]
1723+ pabsw xmm7, xmm7
1724+ pcmpgtw xmm1, xmm7
1725+ movdqa xmm7, [esp+640-512]
1726+ pcmpgtw xmm7, xmm6
1727+ movdqa xmm6, [esp+640-320]
1728+ pand xmm1, xmm7
1729+ movdqa xmm7, [esp+640-560]
1730+ pcmpgtw xmm6, xmm7
1731+ pand xmm1, xmm6
1732+
1733+ movdqa xmm6, [esp+640-576]
1734+ pcmpgtw xmm6, xmm7
1735+
1736+ movdqa xmm7, [esp+640-496]
1737+ punpckhbw xmm3, xmm2
1738+ movdqa [esp+640-560], xmm6
1739+ movdqa xmm6, [esp+640-512]
1740+ psubw xmm7, xmm5
1741+ pabsw xmm7, xmm7
1742+ pcmpgtw xmm6, xmm7
1743+
1744+ pand xmm6, [esp+640-560]
1745+ movdqa xmm7, [esp+640-432]
1746+ psubw xmm7, [esp+640-528]
1747+
1748+ psllw xmm3, 1
1749+ movdqa [esp+640-544], xmm6
1750+ movdqa xmm6, [esp+640-512]
1751+
1752+ movdqa xmm2, [esp+640-544]
1753+ paddw xmm3, xmm5
1754+ paddw xmm3, xmm5
1755+ paddw xmm3, xmm5
1756+ paddw xmm3, [esp+640-448]
1757+ paddw xmm3, [esp+640-496]
1758+ pabsw xmm7, xmm7
1759+ pcmpgtw xmm6, xmm7
1760+ pand xmm6, [esp+640-560]
1761+ movdqa [esp+640-560], xmm6
1762+
1763+ movdqa xmm6, xmm0
1764+ pand xmm6, xmm4
1765+ movdqa xmm4, xmm0
1766+ pandn xmm4, [esp+640-368]
1767+ por xmm6, xmm4
1768+ movdqa xmm4, [esp+640-432]
1769+ paddw xmm3, xmm4
1770+ paddw xmm3, [esp+640-592]
1771+ psraw xmm3, 3
1772+ pand xmm3, xmm2
1773+ pandn xmm2, xmm5
1774+ por xmm3, xmm2
1775+ movdqa xmm7, xmm1
1776+ pand xmm7, xmm3
1777+ movdqa xmm3, [esp+640-64]
1778+ por xmm3, [esp+640-336]
1779+ movdqa xmm2, xmm1
1780+ pandn xmm2, xmm5
1781+ por xmm7, xmm2
1782+
1783+ movdqa xmm2, xmm0
1784+ pand xmm2, xmm3
1785+ movdqa xmm3, xmm0
1786+ pandn xmm3, [esp+640-480]
1787+ por xmm2, xmm3
1788+ packuswb xmm6, xmm7
1789+ movdqa [esp+640-336], xmm2
1790+ movdqa [esp+656-272], xmm6
1791+ movdqa xmm6, [esp+640-544]
1792+ movdqa xmm2, xmm5
1793+ paddw xmm2, [esp+640-448]
1794+ movdqa xmm3, xmm1
1795+ movdqa xmm7, [esp+640-496]
1796+ paddw xmm7, xmm4
1797+ paddw xmm2, xmm7
1798+ paddw xmm2, [esp+640-624]
1799+ movdqa xmm7, [esp+640-544]
1800+ psraw xmm2, 2
1801+ pand xmm6, xmm2
1802+ movdqa xmm2, [esp+640-448]
1803+ pandn xmm7, xmm2
1804+ por xmm6, xmm7
1805+ pand xmm3, xmm6
1806+ movdqa xmm6, xmm1
1807+ pandn xmm6, xmm2
1808+ paddw xmm2, [esp+640-496]
1809+ paddw xmm2, xmm4
1810+ por xmm3, xmm6
1811+ movdqa xmm6, [esp+640-336]
1812+ packuswb xmm6, xmm3
1813+ psllw xmm2, 1
1814+ movdqa [esp+672-272], xmm6
1815+ movdqa xmm6, [esp+640-96]
1816+ por xmm6, [esp+640-352]
1817+
1818+ movdqa xmm3, xmm0
1819+ pand xmm3, xmm6
1820+ movdqa xmm6, xmm0
1821+ pandn xmm6, [esp+640-144]
1822+ por xmm3, xmm6
1823+ movdqa xmm6, [esp+640-544]
1824+ movdqa [esp+640-352], xmm3
1825+ movdqa xmm3, [esp+640-464]
1826+ paddw xmm3, [esp+640-592]
1827+ paddw xmm2, xmm3
1828+ movdqa xmm3, [esp+640-448]
1829+ paddw xmm5, xmm2
1830+ movdqa xmm2, [esp+640-496]
1831+ psraw xmm5, 3
1832+ pand xmm6, xmm5
1833+ movdqa xmm5, [esp+640-464]
1834+ paddw xmm2, xmm5
1835+ paddw xmm5, [esp+640-432]
1836+ movdqa xmm4, xmm3
1837+ paddw xmm4, xmm3
1838+ paddw xmm4, xmm2
1839+ paddw xmm4, [esp+640-624]
1840+ movdqa xmm2, [esp+640-544]
1841+ paddw xmm3, [esp+640-592]
1842+ psraw xmm4, 2
1843+ pandn xmm2, xmm4
1844+ por xmm6, xmm2
1845+ movdqa xmm7, xmm1
1846+ pand xmm7, xmm6
1847+ movdqa xmm6, [esp+640-496]
1848+ movdqa xmm2, xmm1
1849+ pandn xmm2, xmm6
1850+ por xmm7, xmm2
1851+ movdqa xmm2, [esp+640-352]
1852+ packuswb xmm2, xmm7
1853+ movdqa [esp+688-272], xmm2
1854+ movdqa xmm2, [esp+640-128]
1855+ por xmm2, [esp+640-288]
1856+
1857+ movdqa xmm4, xmm0
1858+ pand xmm4, xmm2
1859+ paddw xmm5, xmm6
1860+ movdqa xmm2, xmm0
1861+ pandn xmm2, [esp+640-400]
1862+ por xmm4, xmm2
1863+ movdqa xmm2, [esp+640-528]
1864+ psllw xmm5, 1
1865+ paddw xmm5, xmm3
1866+ movdqa xmm3, [esp+640-560]
1867+ paddw xmm2, xmm5
1868+ psraw xmm2, 3
1869+ movdqa [esp+640-288], xmm4
1870+ movdqa xmm4, [esp+640-560]
1871+ pand xmm4, xmm2
1872+ movdqa xmm2, [esp+640-464]
1873+ movdqa xmm5, xmm2
1874+ paddw xmm5, xmm2
1875+ movdqa xmm2, [esp+640-432]
1876+ paddw xmm2, [esp+640-448]
1877+ movdqa xmm7, xmm1
1878+ paddw xmm5, xmm2
1879+ paddw xmm5, [esp+640-624]
1880+ movdqa xmm6, [esp+640-560]
1881+ psraw xmm5, 2
1882+ pandn xmm3, xmm5
1883+ por xmm4, xmm3
1884+ movdqa xmm3, [esp+640-32]
1885+ por xmm3, [esp+640-304]
1886+ pand xmm7, xmm4
1887+ movdqa xmm4, [esp+640-432]
1888+ movdqa xmm5, [esp+640-464]
1889+ movdqa xmm2, xmm1
1890+ pandn xmm2, xmm4
1891+ paddw xmm4, [esp+640-496]
1892+ por xmm7, xmm2
1893+ movdqa xmm2, [esp+640-288]
1894+ packuswb xmm2, xmm7
1895+ movdqa [esp+704-272], xmm2
1896+
1897+ movdqa xmm2, xmm0
1898+ pand xmm2, xmm3
1899+ movdqa xmm3, xmm0
1900+ pandn xmm3, [esp+640-384]
1901+ por xmm2, xmm3
1902+ movdqa [esp+640-304], xmm2
1903+ movdqa xmm2, [esp+640-528]
1904+ movdqa xmm3, xmm2
1905+ paddw xmm3, [esp+640-464]
1906+ paddw xmm3, xmm4
1907+ paddw xmm3, [esp+640-624]
1908+ psraw xmm3, 2
1909+ pand xmm6, xmm3
1910+ movdqa xmm3, [esp+640-560]
1911+ movdqa xmm4, xmm3
1912+ pandn xmm4, xmm5
1913+ por xmm6, xmm4
1914+ movdqa xmm7, xmm1
1915+ pand xmm7, xmm6
1916+ movdqa xmm6, [esp+640-304]
1917+ movdqa xmm4, xmm1
1918+ pandn xmm4, xmm5
1919+ por xmm7, xmm4
1920+
1921+ movdqa xmm4, xmm0
1922+ pandn xmm0, [esp+640-416]
1923+ packuswb xmm6, xmm7
1924+ movdqa xmm7, [esp+640-112]
1925+ por xmm7, [esp+640-80]
1926+ pand xmm4, xmm7
1927+ por xmm4, xmm0
1928+ movdqa xmm0, [esp+752-272]
1929+ punpckhbw xmm0, [esp+640-48]
1930+ psllw xmm0, 1
1931+ paddw xmm0, xmm2
1932+ paddw xmm0, xmm2
1933+ paddw xmm0, xmm2
1934+ paddw xmm0, xmm5
1935+ paddw xmm0, [esp+640-432]
1936+ paddw xmm0, [esp+640-496]
1937+ paddw xmm0, [esp+640-592]
1938+ psraw xmm0, 3
1939+ pand xmm0, xmm3
1940+ movdqa xmm7, xmm1
1941+ pandn xmm3, xmm2
1942+ por xmm0, xmm3
1943+ pand xmm7, xmm0
1944+
1945+ movdqa xmm0, [esp+656-272]
1946+ movdqa [edx], xmm0
1947+
1948+ movdqa xmm0, [esp+672-272]
1949+
1950+ mov edx, dword [esp+640-596]
1951+ movdqa [esi], xmm0
1952+ movdqa xmm0, [esp+688-272]
1953+ movdqa [edi], xmm0
1954+ movdqa xmm0, [esp+704-272]
1955+
1956+ pop edi
1957+ pandn xmm1, xmm2
1958+ movdqa [eax], xmm0
1959+ por xmm7, xmm1
1960+ pop esi
1961+ packuswb xmm4, xmm7
1962+ movdqa [edx], xmm6
1963+ movdqa [ecx], xmm4
1964+ pop ebx
1965+ mov esp, ebp
1966+ pop ebp
1967+ ret
1968+
1969+
1970+;********************************************************************************
1971+;
1972+; void DeblockLumaTransposeH2V_sse2(uint8_t * pPixY, int32_t iStride, uint8_t * pDst);
1973+;
1974+;********************************************************************************
1975+
1976+WELS_EXTERN DeblockLumaTransposeH2V_sse2
1977+
1978+ALIGN 16
1979+
1980+DeblockLumaTransposeH2V_sse2:
1981+ push ebp
1982+ push ebx
1983+ mov ebp, esp
1984+ and esp,0FFFFFFF0h
1985+ sub esp, 10h
1986+
1987+ mov eax, [ebp + 0Ch]
1988+ mov ecx, [ebp + 10h]
1989+ lea edx, [eax + ecx * 8]
1990+ lea ebx, [ecx*3]
1991+
1992+ movq xmm0, [eax]
1993+ movq xmm7, [edx]
1994+ punpcklqdq xmm0, xmm7
1995+ movq xmm1, [eax + ecx]
1996+ movq xmm7, [edx + ecx]
1997+ punpcklqdq xmm1, xmm7
1998+ movq xmm2, [eax + ecx*2]
1999+ movq xmm7, [edx + ecx*2]
2000+ punpcklqdq xmm2, xmm7
2001+ movq xmm3, [eax + ebx]
2002+ movq xmm7, [edx + ebx]
2003+ punpcklqdq xmm3, xmm7
2004+
2005+ lea eax, [eax + ecx * 4]
2006+ lea edx, [edx + ecx * 4]
2007+ movq xmm4, [eax]
2008+ movq xmm7, [edx]
2009+ punpcklqdq xmm4, xmm7
2010+ movq xmm5, [eax + ecx]
2011+ movq xmm7, [edx + ecx]
2012+ punpcklqdq xmm5, xmm7
2013+ movq xmm6, [eax + ecx*2]
2014+ movq xmm7, [edx + ecx*2]
2015+ punpcklqdq xmm6, xmm7
2016+
2017+ movdqa [esp], xmm0
2018+ movq xmm7, [eax + ebx]
2019+ movq xmm0, [edx + ebx]
2020+ punpcklqdq xmm7, xmm0
2021+ movdqa xmm0, [esp]
2022+
2023+ SSE2_TransTwo8x8B xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, [esp]
2024+ ;pOut: m5, m3, m4, m8, m6, m2, m7, m1
2025+
2026+ mov eax, [ebp + 14h]
2027+ movdqa [eax], xmm4
2028+ movdqa [eax + 10h], xmm2
2029+ movdqa [eax + 20h], xmm3
2030+ movdqa [eax + 30h], xmm7
2031+ movdqa [eax + 40h], xmm5
2032+ movdqa [eax + 50h], xmm1
2033+ movdqa [eax + 60h], xmm6
2034+ movdqa [eax + 70h], xmm0
2035+
2036+ mov esp, ebp
2037+ pop ebx
2038+ pop ebp
2039+ ret
2040+
2041+
2042+
2043+;*******************************************************************************************
2044+;
2045+; void DeblockLumaTransposeV2H_sse2(uint8_t * pPixY, int32_t iStride, uint8_t * pSrc);
2046+;
2047+;*******************************************************************************************
2048+
2049+WELS_EXTERN DeblockLumaTransposeV2H_sse2
2050+
2051+ALIGN 16
2052+
2053+DeblockLumaTransposeV2H_sse2:
2054+ push ebp
2055+ mov ebp, esp
2056+
2057+ and esp, 0FFFFFFF0h
2058+ sub esp, 10h
2059+
2060+ mov eax, [ebp + 10h]
2061+ mov ecx, [ebp + 0Ch]
2062+ mov edx, [ebp + 08h]
2063+
2064+ movdqa xmm0, [eax]
2065+ movdqa xmm1, [eax + 10h]
2066+ movdqa xmm2, [eax + 20h]
2067+ movdqa xmm3, [eax + 30h]
2068+ movdqa xmm4, [eax + 40h]
2069+ movdqa xmm5, [eax + 50h]
2070+ movdqa xmm6, [eax + 60h]
2071+ movdqa xmm7, [eax + 70h]
2072+
2073+ SSE2_TransTwo8x8B xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, [esp]
2074+ ;pOut: m5, m3, m4, m8, m6, m2, m7, m1
2075+
2076+ lea eax, [ecx * 3]
2077+
2078+ movq [edx], xmm4
2079+ movq [edx + ecx], xmm2
2080+ movq [edx + ecx*2], xmm3
2081+ movq [edx + eax], xmm7
2082+
2083+ lea edx, [edx + ecx*4]
2084+ movq [edx], xmm5
2085+ movq [edx + ecx], xmm1
2086+ movq [edx + ecx*2], xmm6
2087+ movq [edx + eax], xmm0
2088+
2089+ psrldq xmm4, 8
2090+ psrldq xmm2, 8
2091+ psrldq xmm3, 8
2092+ psrldq xmm7, 8
2093+ psrldq xmm5, 8
2094+ psrldq xmm1, 8
2095+ psrldq xmm6, 8
2096+ psrldq xmm0, 8
2097+
2098+ lea edx, [edx + ecx*4]
2099+ movq [edx], xmm4
2100+ movq [edx + ecx], xmm2
2101+ movq [edx + ecx*2], xmm3
2102+ movq [edx + eax], xmm7
2103+
2104+ lea edx, [edx + ecx*4]
2105+ movq [edx], xmm5
2106+ movq [edx + ecx], xmm1
2107+ movq [edx + ecx*2], xmm6
2108+ movq [edx + eax], xmm0
2109+
2110+
2111+ mov esp, ebp
2112+ pop ebp
21132113 ret
codec/decoder/core/asm/mc_chroma.asm+317−317
@@ -1,317 +1,317 @@
1−;*!
2−;* \copy
3−;* Copyright (c) 2004-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−;* mc_chroma.asm
33−;*
34−;* Abstract
35−;* mmx motion compensation for chroma
36−;*
37−;* History
38−;* 10/13/2004 Created
39−;*
40−;*
41−;*************************************************************************/
42−%include "asm_inc.asm"
43−
44−BITS 32
45−
46−;***********************************************************************
47−; Local Data (Read Only)
48−;***********************************************************************
49−
50−SECTION .rodata align=16
51−
52−;***********************************************************************
53−; Various memory constants (trigonometric values or rounding values)
54−;***********************************************************************
55−
56−ALIGN 16
57−h264_d0x20_sse2:
58− dw 32,32,32,32,32,32,32,32
59−ALIGN 16
60−h264_d0x20_mmx:
61− dw 32,32,32,32
62−
63−
64−;=============================================================================
65−; Code
66−;=============================================================================
67−
68−SECTION .text
69−
70−ALIGN 16
71−;*******************************************************************************
72−; void McChromaWidthEq4_mmx( uint8_t *src,
73−; int32_t iSrcStride,
74−; uint8_t *pDst,
75−; int32_t iDstStride,
76−; uint8_t *pABCD,
77−; int32_t iHeigh );
78−;*******************************************************************************
79−WELS_EXTERN McChromaWidthEq4_mmx
80−McChromaWidthEq4_mmx:
81− push esi
82− push edi
83− push ebx
84−
85− mov eax, [esp +12 + 20]
86− movd mm3, [eax]
87− WELS_Zero mm7
88− punpcklbw mm3, mm3
89− movq mm4, mm3
90− punpcklwd mm3, mm3
91− punpckhwd mm4, mm4
92−
93− movq mm5, mm3
94− punpcklbw mm3, mm7
95− punpckhbw mm5, mm7
96−
97− movq mm6, mm4
98− punpcklbw mm4, mm7
99− punpckhbw mm6, mm7
100−
101− mov esi, [esp +12+ 4]
102− mov eax, [esp + 12 + 8]
103− mov edi, [esp + 12 + 12]
104− mov edx, [esp + 12 + 16]
105− mov ecx, [esp + 12 + 24]
106−
107− lea ebx, [esi + eax]
108− movd mm0, [esi]
109− movd mm1, [esi+1]
110− punpcklbw mm0, mm7
111− punpcklbw mm1, mm7
112−.xloop:
113−
114− pmullw mm0, mm3
115− pmullw mm1, mm5
116− paddw mm0, mm1
117−
118− movd mm1, [ebx]
119− punpcklbw mm1, mm7
120− movq mm2, mm1
121− pmullw mm1, mm4
122− paddw mm0, mm1
123−
124− movd mm1, [ebx+1]
125− punpcklbw mm1, mm7
126− movq mm7, mm1
127− pmullw mm1,mm6
128− paddw mm0, mm1
129− movq mm1,mm7
130−
131− paddw mm0, [h264_d0x20_mmx]
132− psrlw mm0, 6
133−
134− WELS_Zero mm7
135− packuswb mm0, mm7
136− movd [edi], mm0
137−
138− movq mm0, mm2
139−
140− lea edi, [edi +edx ]
141− lea ebx, [ebx + eax]
142−
143− dec ecx
144− jnz near .xloop
145− WELSEMMS
146− pop ebx
147− pop edi
148− pop esi
149− ret
150−
151−
152−ALIGN 16
153−;*******************************************************************************
154−; void McChromaWidthEq8_sse2( uint8_t *pSrc,
155−; int32_t iSrcStride,
156−; uint8_t *pDst,
157−; int32_t iDstStride,
158−; uint8_t *pABCD,
159−; int32_t iheigh );
160−;*******************************************************************************
161−WELS_EXTERN McChromaWidthEq8_sse2
162−McChromaWidthEq8_sse2:
163− push esi
164− push edi
165− push ebx
166−
167− mov eax, [esp +12 + 20]
168− movd xmm3, [eax]
169− WELS_Zero xmm7
170− punpcklbw xmm3, xmm3
171− punpcklwd xmm3, xmm3
172−
173− movdqa xmm4, xmm3
174− punpckldq xmm3, xmm3
175− punpckhdq xmm4, xmm4
176− movdqa xmm5, xmm3
177− movdqa xmm6, xmm4
178−
179− punpcklbw xmm3, xmm7
180− punpckhbw xmm5, xmm7
181− punpcklbw xmm4, xmm7
182− punpckhbw xmm6, xmm7
183−
184− mov esi, [esp +12+ 4]
185− mov eax, [esp + 12 + 8]
186− mov edi, [esp + 12 + 12]
187− mov edx, [esp + 12 + 16]
188− mov ecx, [esp + 12 + 24]
189−
190− lea ebx, [esi + eax]
191− movq xmm0, [esi]
192− movq xmm1, [esi+1]
193− punpcklbw xmm0, xmm7
194− punpcklbw xmm1, xmm7
195−.xloop:
196−
197− pmullw xmm0, xmm3
198− pmullw xmm1, xmm5
199− paddw xmm0, xmm1
200−
201− movq xmm1, [ebx]
202− punpcklbw xmm1, xmm7
203− movdqa xmm2, xmm1
204− pmullw xmm1, xmm4
205− paddw xmm0, xmm1
206−
207− movq xmm1, [ebx+1]
208− punpcklbw xmm1, xmm7
209− movdqa xmm7, xmm1
210− pmullw xmm1, xmm6
211− paddw xmm0, xmm1
212− movdqa xmm1,xmm7
213−
214− paddw xmm0, [h264_d0x20_sse2]
215− psrlw xmm0, 6
216−
217− WELS_Zero xmm7
218− packuswb xmm0, xmm7
219− movq [edi], xmm0
220−
221− movdqa xmm0, xmm2
222−
223− lea edi, [edi +edx ]
224− lea ebx, [ebx + eax]
225−
226− dec ecx
227− jnz near .xloop
228−
229− pop ebx
230− pop edi
231− pop esi
232− ret
233−
234−
235−
236−
237−ALIGN 16
238−;***********************************************************************
239−; void McChromaWidthEq8_ssse3( uint8_t *pSrc,
240−; int32_t iSrcStride,
241−; uint8_t *pDst,
242−; int32_t iDstStride,
243−; uint8_t *pABCD,
244−; int32_t iHeigh);
245−;***********************************************************************
246−WELS_EXTERN McChromaWidthEq8_ssse3
247−McChromaWidthEq8_ssse3:
248− push ebx
249− push esi
250− push edi
251−
252− mov eax, [esp + 12 + 20]
253−
254− pxor xmm7, xmm7
255− movd xmm5, [eax]
256− punpcklwd xmm5, xmm5
257− punpckldq xmm5, xmm5
258− movdqa xmm6, xmm5
259− punpcklqdq xmm5, xmm5
260− punpckhqdq xmm6, xmm6
261−
262− mov eax, [esp + 12 + 4]
263− mov edx, [esp + 12 + 8]
264− mov esi, [esp + 12 + 12]
265− mov edi, [esp + 12 + 16]
266− mov ecx, [esp + 12 + 24]
267−
268− sub esi, edi
269− sub esi, edi
270− movdqa xmm7, [h264_d0x20_sse2]
271−
272− movdqu xmm0, [eax]
273− movdqa xmm1, xmm0
274− psrldq xmm1, 1
275− punpcklbw xmm0, xmm1
276−
277−.hloop_chroma:
278− lea esi, [esi+2*edi]
279−
280− movdqu xmm2, [eax+edx]
281− movdqa xmm3, xmm2
282− psrldq xmm3, 1
283− punpcklbw xmm2, xmm3
284− movdqa xmm4, xmm2
285−
286− pmaddubsw xmm0, xmm5
287− pmaddubsw xmm2, xmm6
288− paddw xmm0, xmm2
289− paddw xmm0, xmm7
290− psrlw xmm0, 6
291− packuswb xmm0, xmm0
292− movq [esi],xmm0
293−
294− lea eax, [eax+2*edx]
295− movdqu xmm2, [eax]
296− movdqa xmm3, xmm2
297− psrldq xmm3, 1
298− punpcklbw xmm2, xmm3
299− movdqa xmm0, xmm2
300−
301− pmaddubsw xmm4, xmm5
302− pmaddubsw xmm2, xmm6
303− paddw xmm4, xmm2
304− paddw xmm4, xmm7
305− psrlw xmm4, 6
306− packuswb xmm4, xmm4
307− movq [esi+edi],xmm4
308−
309− sub ecx, 2
310− jnz .hloop_chroma
311− pop edi
312− pop esi
313− pop ebx
314−
315− ret
316−
317−
1+;*!
2+;* \copy
3+;* Copyright (c) 2004-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+;* mc_chroma.asm
33+;*
34+;* Abstract
35+;* mmx motion compensation for chroma
36+;*
37+;* History
38+;* 10/13/2004 Created
39+;*
40+;*
41+;*************************************************************************/
42+%include "asm_inc.asm"
43+
44+BITS 32
45+
46+;***********************************************************************
47+; Local Data (Read Only)
48+;***********************************************************************
49+
50+SECTION .rodata align=16
51+
52+;***********************************************************************
53+; Various memory constants (trigonometric values or rounding values)
54+;***********************************************************************
55+
56+ALIGN 16
57+h264_d0x20_sse2:
58+ dw 32,32,32,32,32,32,32,32
59+ALIGN 16
60+h264_d0x20_mmx:
61+ dw 32,32,32,32
62+
63+
64+;=============================================================================
65+; Code
66+;=============================================================================
67+
68+SECTION .text
69+
70+ALIGN 16
71+;*******************************************************************************
72+; void McChromaWidthEq4_mmx( uint8_t *src,
73+; int32_t iSrcStride,
74+; uint8_t *pDst,
75+; int32_t iDstStride,
76+; uint8_t *pABCD,
77+; int32_t iHeigh );
78+;*******************************************************************************
79+WELS_EXTERN McChromaWidthEq4_mmx
80+McChromaWidthEq4_mmx:
81+ push esi
82+ push edi
83+ push ebx
84+
85+ mov eax, [esp +12 + 20]
86+ movd mm3, [eax]
87+ WELS_Zero mm7
88+ punpcklbw mm3, mm3
89+ movq mm4, mm3
90+ punpcklwd mm3, mm3
91+ punpckhwd mm4, mm4
92+
93+ movq mm5, mm3
94+ punpcklbw mm3, mm7
95+ punpckhbw mm5, mm7
96+
97+ movq mm6, mm4
98+ punpcklbw mm4, mm7
99+ punpckhbw mm6, mm7
100+
101+ mov esi, [esp +12+ 4]
102+ mov eax, [esp + 12 + 8]
103+ mov edi, [esp + 12 + 12]
104+ mov edx, [esp + 12 + 16]
105+ mov ecx, [esp + 12 + 24]
106+
107+ lea ebx, [esi + eax]
108+ movd mm0, [esi]
109+ movd mm1, [esi+1]
110+ punpcklbw mm0, mm7
111+ punpcklbw mm1, mm7
112+.xloop:
113+
114+ pmullw mm0, mm3
115+ pmullw mm1, mm5
116+ paddw mm0, mm1
117+
118+ movd mm1, [ebx]
119+ punpcklbw mm1, mm7
120+ movq mm2, mm1
121+ pmullw mm1, mm4
122+ paddw mm0, mm1
123+
124+ movd mm1, [ebx+1]
125+ punpcklbw mm1, mm7
126+ movq mm7, mm1
127+ pmullw mm1,mm6
128+ paddw mm0, mm1
129+ movq mm1,mm7
130+
131+ paddw mm0, [h264_d0x20_mmx]
132+ psrlw mm0, 6
133+
134+ WELS_Zero mm7
135+ packuswb mm0, mm7
136+ movd [edi], mm0
137+
138+ movq mm0, mm2
139+
140+ lea edi, [edi +edx ]
141+ lea ebx, [ebx + eax]
142+
143+ dec ecx
144+ jnz near .xloop
145+ WELSEMMS
146+ pop ebx
147+ pop edi
148+ pop esi
149+ ret
150+
151+
152+ALIGN 16
153+;*******************************************************************************
154+; void McChromaWidthEq8_sse2( uint8_t *pSrc,
155+; int32_t iSrcStride,
156+; uint8_t *pDst,
157+; int32_t iDstStride,
158+; uint8_t *pABCD,
159+; int32_t iheigh );
160+;*******************************************************************************
161+WELS_EXTERN McChromaWidthEq8_sse2
162+McChromaWidthEq8_sse2:
163+ push esi
164+ push edi
165+ push ebx
166+
167+ mov eax, [esp +12 + 20]
168+ movd xmm3, [eax]
169+ WELS_Zero xmm7
170+ punpcklbw xmm3, xmm3
171+ punpcklwd xmm3, xmm3
172+
173+ movdqa xmm4, xmm3
174+ punpckldq xmm3, xmm3
175+ punpckhdq xmm4, xmm4
176+ movdqa xmm5, xmm3
177+ movdqa xmm6, xmm4
178+
179+ punpcklbw xmm3, xmm7
180+ punpckhbw xmm5, xmm7
181+ punpcklbw xmm4, xmm7
182+ punpckhbw xmm6, xmm7
183+
184+ mov esi, [esp +12+ 4]
185+ mov eax, [esp + 12 + 8]
186+ mov edi, [esp + 12 + 12]
187+ mov edx, [esp + 12 + 16]
188+ mov ecx, [esp + 12 + 24]
189+
190+ lea ebx, [esi + eax]
191+ movq xmm0, [esi]
192+ movq xmm1, [esi+1]
193+ punpcklbw xmm0, xmm7
194+ punpcklbw xmm1, xmm7
195+.xloop:
196+
197+ pmullw xmm0, xmm3
198+ pmullw xmm1, xmm5
199+ paddw xmm0, xmm1
200+
201+ movq xmm1, [ebx]
202+ punpcklbw xmm1, xmm7
203+ movdqa xmm2, xmm1
204+ pmullw xmm1, xmm4
205+ paddw xmm0, xmm1
206+
207+ movq xmm1, [ebx+1]
208+ punpcklbw xmm1, xmm7
209+ movdqa xmm7, xmm1
210+ pmullw xmm1, xmm6
211+ paddw xmm0, xmm1
212+ movdqa xmm1,xmm7
213+
214+ paddw xmm0, [h264_d0x20_sse2]
215+ psrlw xmm0, 6
216+
217+ WELS_Zero xmm7
218+ packuswb xmm0, xmm7
219+ movq [edi], xmm0
220+
221+ movdqa xmm0, xmm2
222+
223+ lea edi, [edi +edx ]
224+ lea ebx, [ebx + eax]
225+
226+ dec ecx
227+ jnz near .xloop
228+
229+ pop ebx
230+ pop edi
231+ pop esi
232+ ret
233+
234+
235+
236+
237+ALIGN 16
238+;***********************************************************************
239+; void McChromaWidthEq8_ssse3( uint8_t *pSrc,
240+; int32_t iSrcStride,
241+; uint8_t *pDst,
242+; int32_t iDstStride,
243+; uint8_t *pABCD,
244+; int32_t iHeigh);
245+;***********************************************************************
246+WELS_EXTERN McChromaWidthEq8_ssse3
247+McChromaWidthEq8_ssse3:
248+ push ebx
249+ push esi
250+ push edi
251+
252+ mov eax, [esp + 12 + 20]
253+
254+ pxor xmm7, xmm7
255+ movd xmm5, [eax]
256+ punpcklwd xmm5, xmm5
257+ punpckldq xmm5, xmm5
258+ movdqa xmm6, xmm5
259+ punpcklqdq xmm5, xmm5
260+ punpckhqdq xmm6, xmm6
261+
262+ mov eax, [esp + 12 + 4]
263+ mov edx, [esp + 12 + 8]
264+ mov esi, [esp + 12 + 12]
265+ mov edi, [esp + 12 + 16]
266+ mov ecx, [esp + 12 + 24]
267+
268+ sub esi, edi
269+ sub esi, edi
270+ movdqa xmm7, [h264_d0x20_sse2]
271+
272+ movdqu xmm0, [eax]
273+ movdqa xmm1, xmm0
274+ psrldq xmm1, 1
275+ punpcklbw xmm0, xmm1
276+
277+.hloop_chroma:
278+ lea esi, [esi+2*edi]
279+
280+ movdqu xmm2, [eax+edx]
281+ movdqa xmm3, xmm2
282+ psrldq xmm3, 1
283+ punpcklbw xmm2, xmm3
284+ movdqa xmm4, xmm2
285+
286+ pmaddubsw xmm0, xmm5
287+ pmaddubsw xmm2, xmm6
288+ paddw xmm0, xmm2
289+ paddw xmm0, xmm7
290+ psrlw xmm0, 6
291+ packuswb xmm0, xmm0
292+ movq [esi],xmm0
293+
294+ lea eax, [eax+2*edx]
295+ movdqu xmm2, [eax]
296+ movdqa xmm3, xmm2
297+ psrldq xmm3, 1
298+ punpcklbw xmm2, xmm3
299+ movdqa xmm0, xmm2
300+
301+ pmaddubsw xmm4, xmm5
302+ pmaddubsw xmm2, xmm6
303+ paddw xmm4, xmm2
304+ paddw xmm4, xmm7
305+ psrlw xmm4, 6
306+ packuswb xmm4, xmm4
307+ movq [esi+edi],xmm4
308+
309+ sub ecx, 2
310+ jnz .hloop_chroma
311+ pop edi
312+ pop esi
313+ pop ebx
314+
315+ ret
316+
317+

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