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;*!1;*!
2;* \copy2;* \copy
3;* Copyright (c) 2009-2013, Cisco Systems3;* Copyright (c) 2009-2013, Cisco Systems
4;* All rights reserved.4;* All rights reserved.
5;*5;*
6;* Redistribution and use in source and binary forms, with or without6;* Redistribution and use in source and binary forms, with or without
7;* modification, are permitted provided that the following conditions7;* modification, are permitted provided that the following conditions
8;* are met:8;* are met:
9;*9;*
10;* ?Redistributions of source code must retain the above copyright10;* ?Redistributions of source code must retain the above copyright
11;* notice, this list of conditions and the following disclaimer.11;* notice, this list of conditions and the following disclaimer.
12;*12;*
13;* ?Redistributions in binary form must reproduce the above copyright13;* ?Redistributions in binary form must reproduce the above copyright
14;* notice, this list of conditions and the following disclaimer in14;* notice, this list of conditions and the following disclaimer in
15;* the documentation and/or other materials provided with the15;* the documentation and/or other materials provided with the
16;* distribution.16;* distribution.
17;*17;*
18;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS18;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19;* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT19;* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20;* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS20;* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21;* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE21;* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22;* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,22;* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
23;* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,23;* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24;* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;24;* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25;* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER25;* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT26;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27;* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN27;* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28;* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE28;* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29;* POSSIBILITY OF SUCH DAMAGE.29;* POSSIBILITY OF SUCH DAMAGE.
30;*30;*
31;*31;*
32;* dct.asm32;* dct.asm
33;*33;*
34;* Abstract34;* Abstract
35;* WelsDctFourT4_sse235;* WelsDctFourT4_sse2
36;*36;*
37;* History37;* History
38;* 8/4/2009 Created38;* 8/4/2009 Created
39;*39;*
40;*40;*
41;*************************************************************************/41;*************************************************************************/
42 42
43%include "asm_inc.asm"43%include "asm_inc.asm"
44 44
45BITS 3245BITS 32
46 46
47;*******************************************************************************47;*******************************************************************************
48; Macros and other preprocessor constants48; Macros and other preprocessor constants
49;*******************************************************************************49;*******************************************************************************
50%macro MMX_SumSubDiv2 350%macro MMX_SumSubDiv2 3
51 movq %3, %251 movq %3, %2
52 psraw %3, $152 psraw %3, $1
53 paddw %3, %153 paddw %3, %1
54 psraw %1, $154 psraw %1, $1
55 psubw %1, %255 psubw %1, %2
56%endmacro56%endmacro
57 57
58%macro MMX_SumSub 358%macro MMX_SumSub 3
59 movq %3, %259 movq %3, %2
60 psubw %2, %160 psubw %2, %1
61 paddw %1, %361 paddw %1, %3
62%endmacro62%endmacro
63 63
64%macro MMX_IDCT 664%macro MMX_IDCT 6
65 MMX_SumSub %4, %5, %665 MMX_SumSub %4, %5, %6
66 MMX_SumSubDiv2 %3, %2, %166 MMX_SumSubDiv2 %3, %2, %1
67 MMX_SumSub %1, %4, %667 MMX_SumSub %1, %4, %6
68 MMX_SumSub %3, %5, %668 MMX_SumSub %3, %5, %6
69%endmacro69%endmacro
70 70
71 71
72%macro MMX_StoreDiff4P 572%macro MMX_StoreDiff4P 5
73 movd %2, %573 movd %2, %5
74 punpcklbw %2, %474 punpcklbw %2, %4
75 paddw %1, %375 paddw %1, %3
76 psraw %1, $676 psraw %1, $6
77 paddsw %1, %277 paddsw %1, %2
78 packuswb %1, %278 packuswb %1, %2
79 movd %5, %179 movd %5, %1
80%endmacro80%endmacro
81 81
82;*******************************************************************************82;*******************************************************************************
83; Code83; Code
84;*******************************************************************************84;*******************************************************************************
85 85
86SECTION .text86SECTION .text
87 87
88WELS_EXTERN IdctResAddPred_mmx88WELS_EXTERN IdctResAddPred_mmx
89 89
90ALIGN 1690ALIGN 16
91;*******************************************************************************91;*******************************************************************************
92; void_t __cdecl IdctResAddPred_mmx( uint8_t *pPred, const int32_t kiStride, int16_t *pRs )92; void_t __cdecl IdctResAddPred_mmx( uint8_t *pPred, const int32_t kiStride, int16_t *pRs )
93;*******************************************************************************93;*******************************************************************************
94 94
95IdctResAddPred_mmx:95IdctResAddPred_mmx:
96 96
97%define pushsize 097%define pushsize 0
98%define pPred esp+pushsize+498%define pPred esp+pushsize+4
99%define kiStride esp+pushsize+899%define kiStride esp+pushsize+8
100%define pRs esp+pushsize+12100%define pRs esp+pushsize+12
101 101
102 mov eax, [pRs ] 102 mov eax, [pRs ]
103 mov edx, [pPred ] 103 mov edx, [pPred ]
104 mov ecx, [kiStride] 104 mov ecx, [kiStride]
105 movq mm0, [eax+ 0]105 movq mm0, [eax+ 0]
106 movq mm1, [eax+ 8]106 movq mm1, [eax+ 8]
107 movq mm2, [eax+16]107 movq mm2, [eax+16]
108 movq mm3, [eax+24]108 movq mm3, [eax+24]
109 109
110 MMX_Trans4x4W mm0, mm1, mm2, mm3, mm4110 MMX_Trans4x4W mm0, mm1, mm2, mm3, mm4
111 MMX_IDCT mm1, mm2, mm3, mm4, mm0, mm6111 MMX_IDCT mm1, mm2, mm3, mm4, mm0, mm6
112 MMX_Trans4x4W mm1, mm3, mm0, mm4, mm2112 MMX_Trans4x4W mm1, mm3, mm0, mm4, mm2
113 MMX_IDCT mm3, mm0, mm4, mm2, mm1, mm6113 MMX_IDCT mm3, mm0, mm4, mm2, mm1, mm6
114 114
115 WELS_Zero mm7115 WELS_Zero mm7
116 WELS_DW32 mm6116 WELS_DW32 mm6
117 117
118 MMX_StoreDiff4P mm3, mm0, mm6, mm7, [edx]118 MMX_StoreDiff4P mm3, mm0, mm6, mm7, [edx]
119 MMX_StoreDiff4P mm4, mm0, mm6, mm7, [edx+ecx]119 MMX_StoreDiff4P mm4, mm0, mm6, mm7, [edx+ecx]
120 lea edx, [edx+2*ecx]120 lea edx, [edx+2*ecx]
121 MMX_StoreDiff4P mm1, mm0, mm6, mm7, [edx]121 MMX_StoreDiff4P mm1, mm0, mm6, mm7, [edx]
122 MMX_StoreDiff4P mm2, mm0, mm6, mm7, [edx+ecx]122 MMX_StoreDiff4P mm2, mm0, mm6, mm7, [edx+ecx]
123 123
124%undef pushsize124%undef pushsize
125%undef pPred125%undef pPred
126%undef kiStride126%undef kiStride
127%undef pRs127%undef pRs
128 emms128 emms
129 ret129 ret
codec/decoder/core/asm/deblock.asm+2112−2112
@@ -1,2113 +1,2113 @@
1;*!1;*!
2;* \copy2;* \copy
3;* Copyright (c) 2009-2013, Cisco Systems3;* Copyright (c) 2009-2013, Cisco Systems
4;* All rights reserved.4;* All rights reserved.
5;*5;*
6;* Redistribution and use in source and binary forms, with or without6;* Redistribution and use in source and binary forms, with or without
7;* modification, are permitted provided that the following conditions7;* modification, are permitted provided that the following conditions
8;* are met:8;* are met:
9;*9;*
10;* * Redistributions of source code must retain the above copyright10;* * Redistributions of source code must retain the above copyright
11;* notice, this list of conditions and the following disclaimer.11;* notice, this list of conditions and the following disclaimer.
12;*12;*
13;* * Redistributions in binary form must reproduce the above copyright13;* * Redistributions in binary form must reproduce the above copyright
14;* notice, this list of conditions and the following disclaimer in14;* notice, this list of conditions and the following disclaimer in
15;* the documentation and/or other materials provided with the15;* the documentation and/or other materials provided with the
16;* distribution.16;* distribution.
17;*17;*
18;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS18;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19;* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT19;* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20;* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS20;* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21;* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE21;* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22;* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,22;* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
23;* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,23;* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24;* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;24;* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25;* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER25;* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT26;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27;* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN27;* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28;* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE28;* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29;* POSSIBILITY OF SUCH DAMAGE.29;* POSSIBILITY OF SUCH DAMAGE.
30;*30;*
31;*31;*
32;* deblock.asm32;* deblock.asm
33;*33;*
34;* Abstract34;* Abstract
35;* edge loop35;* edge loop
36;*36;*
37;* History37;* History
38;* 08/07/2009 Created38;* 08/07/2009 Created
39;*39;*
40;*40;*
41;*************************************************************************/41;*************************************************************************/
42%include "asm_inc.asm"42%include "asm_inc.asm"
43BITS 3243BITS 32
44 44
45;*******************************************************************************45;*******************************************************************************
46; Macros and other preprocessor constants46; Macros and other preprocessor constants
47;*******************************************************************************47;*******************************************************************************
48 48
49%ifdef FORMAT_COFF49%ifdef FORMAT_COFF
50SECTION .rodata pData50SECTION .rodata pData
51%else51%else
52SECTION .rodata align=1652SECTION .rodata align=16
53%endif53%endif
54 54
55SECTION .text55SECTION .text
56 56
57;********************************************************************************57;********************************************************************************
58; void DeblockChromaEq4V_sse2(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride,58; void DeblockChromaEq4V_sse2(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride,
59; int32_t iAlpha, int32_t iBeta)59; int32_t iAlpha, int32_t iBeta)
60;********************************************************************************60;********************************************************************************
61WELS_EXTERN DeblockChromaEq4V_sse261WELS_EXTERN DeblockChromaEq4V_sse2
62 62
63ALIGN 1663ALIGN 16
64DeblockChromaEq4V_sse2:64DeblockChromaEq4V_sse2:
65 push ebp 65 push ebp
66 mov ebp,esp 66 mov ebp,esp
67 and esp,0FFFFFFF0h 67 and esp,0FFFFFFF0h
68 sub esp,68h 68 sub esp,68h
69 mov edx,[ebp+10h] ; iStride69 mov edx,[ebp+10h] ; iStride
70 mov eax,[ebp+8] ; pPixCb70 mov eax,[ebp+8] ; pPixCb
71 mov ecx,[ebp+0Ch] ; pPixCr71 mov ecx,[ebp+0Ch] ; pPixCr
72 movq xmm4,[ecx] 72 movq xmm4,[ecx]
73 movq xmm5,[edx+ecx] 73 movq xmm5,[edx+ecx]
74 push esi 74 push esi
75 push edi 75 push edi
76 lea esi,[edx+edx] 76 lea esi,[edx+edx]
77 mov edi,eax 77 mov edi,eax
78 sub edi,esi 78 sub edi,esi
79 movq xmm1,[edi] 79 movq xmm1,[edi]
80 mov edi,ecx 80 mov edi,ecx
81 sub edi,esi 81 sub edi,esi
82 movq xmm2,[edi] 82 movq xmm2,[edi]
83 punpcklqdq xmm1,xmm2 83 punpcklqdq xmm1,xmm2
84 mov esi,eax 84 mov esi,eax
85 sub esi,edx 85 sub esi,edx
86 movq xmm2,[esi] 86 movq xmm2,[esi]
87 mov edi,ecx 87 mov edi,ecx
88 sub edi,edx 88 sub edi,edx
89 movq xmm3,[edi] 89 movq xmm3,[edi]
90 punpcklqdq xmm2,xmm3 90 punpcklqdq xmm2,xmm3
91 movq xmm3,[eax] 91 movq xmm3,[eax]
92 punpcklqdq xmm3,xmm4 92 punpcklqdq xmm3,xmm4
93 movq xmm4,[edx+eax] 93 movq xmm4,[edx+eax]
94 mov edx, [ebp + 14h] 94 mov edx, [ebp + 14h]
95 punpcklqdq xmm4,xmm5 95 punpcklqdq xmm4,xmm5
96 movd xmm5,edx 96 movd xmm5,edx
97 mov edx, [ebp + 18h] 97 mov edx, [ebp + 18h]
98 pxor xmm0,xmm0 98 pxor xmm0,xmm0
99 movdqa xmm6,xmm5 99 movdqa xmm6,xmm5
100 punpcklwd xmm6,xmm5 100 punpcklwd xmm6,xmm5
101 pshufd xmm5,xmm6,0 101 pshufd xmm5,xmm6,0
102 movd xmm6,edx 102 movd xmm6,edx
103 movdqa xmm7,xmm6 103 movdqa xmm7,xmm6
104 punpcklwd xmm7,xmm6 104 punpcklwd xmm7,xmm6
105 pshufd xmm6,xmm7,0 105 pshufd xmm6,xmm7,0
106 movdqa xmm7,xmm1 106 movdqa xmm7,xmm1
107 punpckhbw xmm1,xmm0 107 punpckhbw xmm1,xmm0
108 punpcklbw xmm7,xmm0 108 punpcklbw xmm7,xmm0
109 movdqa [esp+40h],xmm1 109 movdqa [esp+40h],xmm1
110 movdqa [esp+60h],xmm7 110 movdqa [esp+60h],xmm7
111 movdqa xmm7,xmm2 111 movdqa xmm7,xmm2
112 punpcklbw xmm7,xmm0 112 punpcklbw xmm7,xmm0
113 movdqa [esp+10h],xmm7 113 movdqa [esp+10h],xmm7
114 movdqa xmm7,xmm3 114 movdqa xmm7,xmm3
115 punpcklbw xmm7,xmm0 115 punpcklbw xmm7,xmm0
116 punpckhbw xmm3,xmm0 116 punpckhbw xmm3,xmm0
117 movdqa [esp+50h],xmm7 117 movdqa [esp+50h],xmm7
118 movdqa xmm7,xmm4 118 movdqa xmm7,xmm4
119 punpckhbw xmm4,xmm0 119 punpckhbw xmm4,xmm0
120 punpckhbw xmm2,xmm0 120 punpckhbw xmm2,xmm0
121 punpcklbw xmm7,xmm0 121 punpcklbw xmm7,xmm0
122 movdqa [esp+30h],xmm3 122 movdqa [esp+30h],xmm3
123 movdqa xmm3,[esp+10h] 123 movdqa xmm3,[esp+10h]
124 movdqa xmm1,xmm3 124 movdqa xmm1,xmm3
125 psubw xmm1,[esp+50h] 125 psubw xmm1,[esp+50h]
126 pabsw xmm1,xmm1 126 pabsw xmm1,xmm1
127 movdqa [esp+20h],xmm4 127 movdqa [esp+20h],xmm4
128 movdqa xmm0,xmm5 128 movdqa xmm0,xmm5
129 pcmpgtw xmm0,xmm1 129 pcmpgtw xmm0,xmm1
130 movdqa xmm1,[esp+60h] 130 movdqa xmm1,[esp+60h]
131 psubw xmm1,xmm3 131 psubw xmm1,xmm3
132 pabsw xmm1,xmm1 132 pabsw xmm1,xmm1
133 movdqa xmm4,xmm6 133 movdqa xmm4,xmm6
134 pcmpgtw xmm4,xmm1 134 pcmpgtw xmm4,xmm1
135 pand xmm0,xmm4 135 pand xmm0,xmm4
136 movdqa xmm1,xmm7 136 movdqa xmm1,xmm7
137 psubw xmm1,[esp+50h] 137 psubw xmm1,[esp+50h]
138 pabsw xmm1,xmm1 138 pabsw xmm1,xmm1
139 movdqa xmm4,xmm6 139 movdqa xmm4,xmm6
140 pcmpgtw xmm4,xmm1 140 pcmpgtw xmm4,xmm1
141 movdqa xmm1,xmm2 141 movdqa xmm1,xmm2
142 psubw xmm1,[esp+30h] 142 psubw xmm1,[esp+30h]
143 pabsw xmm1,xmm1 143 pabsw xmm1,xmm1
144 pcmpgtw xmm5,xmm1 144 pcmpgtw xmm5,xmm1
145 movdqa xmm1,[esp+40h] 145 movdqa xmm1,[esp+40h]
146 pand xmm0,xmm4 146 pand xmm0,xmm4
147 psubw xmm1,xmm2 147 psubw xmm1,xmm2
148 pabsw xmm1,xmm1 148 pabsw xmm1,xmm1
149 movdqa xmm4,xmm6 149 movdqa xmm4,xmm6
150 pcmpgtw xmm4,xmm1 150 pcmpgtw xmm4,xmm1
151 movdqa xmm1,[esp+20h] 151 movdqa xmm1,[esp+20h]
152 psubw xmm1,[esp+30h] 152 psubw xmm1,[esp+30h]
153 pand xmm5,xmm4 153 pand xmm5,xmm4
154 pabsw xmm1,xmm1 154 pabsw xmm1,xmm1
155 pcmpgtw xmm6,xmm1 155 pcmpgtw xmm6,xmm1
156 pand xmm5,xmm6 156 pand xmm5,xmm6
157 mov edx,2 157 mov edx,2
158 movsx edx,dx 158 movsx edx,dx
159 movd xmm1,edx 159 movd xmm1,edx
160 movdqa xmm4,xmm1 160 movdqa xmm4,xmm1
161 punpcklwd xmm4,xmm1 161 punpcklwd xmm4,xmm1
162 pshufd xmm1,xmm4,0 162 pshufd xmm1,xmm4,0
163 movdqa xmm4,[esp+60h] 163 movdqa xmm4,[esp+60h]
164 movdqa xmm6,xmm4 164 movdqa xmm6,xmm4
165 paddw xmm6,xmm4 165 paddw xmm6,xmm4
166 paddw xmm6,xmm3 166 paddw xmm6,xmm3
167 paddw xmm6,xmm7 167 paddw xmm6,xmm7
168 movdqa [esp+10h],xmm1 168 movdqa [esp+10h],xmm1
169 paddw xmm6,[esp+10h] 169 paddw xmm6,[esp+10h]
170 psraw xmm6,2 170 psraw xmm6,2
171 movdqa xmm4,xmm0 171 movdqa xmm4,xmm0
172 pandn xmm4,xmm3 172 pandn xmm4,xmm3
173 movdqa xmm3,[esp+40h] 173 movdqa xmm3,[esp+40h]
174 movdqa xmm1,xmm0 174 movdqa xmm1,xmm0
175 pand xmm1,xmm6 175 pand xmm1,xmm6
176 por xmm1,xmm4 176 por xmm1,xmm4
177 movdqa xmm6,xmm3 177 movdqa xmm6,xmm3
178 paddw xmm6,xmm3 178 paddw xmm6,xmm3
179 movdqa xmm3,[esp+10h] 179 movdqa xmm3,[esp+10h]
180 paddw xmm6,xmm2 180 paddw xmm6,xmm2
181 paddw xmm6,[esp+20h] 181 paddw xmm6,[esp+20h]
182 paddw xmm6,xmm3 182 paddw xmm6,xmm3
183 psraw xmm6,2 183 psraw xmm6,2
184 movdqa xmm4,xmm5 184 movdqa xmm4,xmm5
185 pand xmm4,xmm6 185 pand xmm4,xmm6
186 movdqa xmm6,xmm5 186 movdqa xmm6,xmm5
187 pandn xmm6,xmm2 187 pandn xmm6,xmm2
188 por xmm4,xmm6 188 por xmm4,xmm6
189 packuswb xmm1,xmm4 189 packuswb xmm1,xmm4
190 movdqa xmm4,[esp+50h] 190 movdqa xmm4,[esp+50h]
191 movdqa xmm6,xmm7 191 movdqa xmm6,xmm7
192 paddw xmm6,xmm7 192 paddw xmm6,xmm7
193 paddw xmm6,xmm4 193 paddw xmm6,xmm4
194 paddw xmm6,[esp+60h] 194 paddw xmm6,[esp+60h]
195 paddw xmm6,xmm3 195 paddw xmm6,xmm3
196 psraw xmm6,2 196 psraw xmm6,2
197 movdqa xmm2,xmm0 197 movdqa xmm2,xmm0
198 pand xmm2,xmm6 198 pand xmm2,xmm6
199 pandn xmm0,xmm4 199 pandn xmm0,xmm4
200 por xmm2,xmm0 200 por xmm2,xmm0
201 movdqa xmm0,[esp+20h] 201 movdqa xmm0,[esp+20h]
202 movdqa xmm6,xmm0 202 movdqa xmm6,xmm0
203 paddw xmm6,xmm0 203 paddw xmm6,xmm0
204 movdqa xmm0,[esp+30h] 204 movdqa xmm0,[esp+30h]
205 paddw xmm6,xmm0 205 paddw xmm6,xmm0
206 paddw xmm6,[esp+40h] 206 paddw xmm6,[esp+40h]
207 movdqa xmm4,xmm5 207 movdqa xmm4,xmm5
208 paddw xmm6,xmm3 208 paddw xmm6,xmm3
209 movq [esi],xmm1 209 movq [esi],xmm1
210 psraw xmm6,2 210 psraw xmm6,2
211 pand xmm4,xmm6 211 pand xmm4,xmm6
212 pandn xmm5,xmm0 212 pandn xmm5,xmm0
213 por xmm4,xmm5 213 por xmm4,xmm5
214 packuswb xmm2,xmm4 214 packuswb xmm2,xmm4
215 movq [eax],xmm2 215 movq [eax],xmm2
216 psrldq xmm1,8 216 psrldq xmm1,8
217 movq [edi],xmm1 217 movq [edi],xmm1
218 pop edi 218 pop edi
219 psrldq xmm2,8 219 psrldq xmm2,8
220 movq [ecx],xmm2 220 movq [ecx],xmm2
221 pop esi 221 pop esi
222 mov esp,ebp 222 mov esp,ebp
223 pop ebp 223 pop ebp
224 ret 224 ret
225 225
226;******************************************************************************226;******************************************************************************
227; void DeblockChromaLt4V_sse2(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride, 227; void DeblockChromaLt4V_sse2(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride,
228; int32_t iAlpha, int32_t iBeta, int8_t * pTC);228; int32_t iAlpha, int32_t iBeta, int8_t * pTC);
229;*******************************************************************************229;*******************************************************************************
230 230
231WELS_EXTERN DeblockChromaLt4V_sse2231WELS_EXTERN DeblockChromaLt4V_sse2
232 232
233DeblockChromaLt4V_sse2:233DeblockChromaLt4V_sse2:
234 push ebp 234 push ebp
235 mov ebp,esp 235 mov ebp,esp
236 and esp,0FFFFFFF0h 236 and esp,0FFFFFFF0h
237 sub esp,0E4h 237 sub esp,0E4h
238 push ebx 238 push ebx
239 push esi 239 push esi
240 mov esi, [ebp+1Ch] ; pTC240 mov esi, [ebp+1Ch] ; pTC
241 movsx ebx, byte [esi+2] 241 movsx ebx, byte [esi+2]
242 push edi 242 push edi
243 movsx di,byte [esi+3] 243 movsx di,byte [esi+3]
244 mov word [esp+0Ch],bx 244 mov word [esp+0Ch],bx
245 movsx bx,byte [esi+1] 245 movsx bx,byte [esi+1]
246 movsx esi,byte [esi] 246 movsx esi,byte [esi]
247 mov word [esp+0Eh],si 247 mov word [esp+0Eh],si
248 movzx esi,di 248 movzx esi,di
249 movd xmm1,esi 249 movd xmm1,esi
250 movzx esi,di 250 movzx esi,di
251 movd xmm2,esi 251 movd xmm2,esi
252 mov si,word [esp+0Ch] 252 mov si,word [esp+0Ch]
253 mov edx, [ebp + 10h] 253 mov edx, [ebp + 10h]
254 mov eax, [ebp + 08h] 254 mov eax, [ebp + 08h]
255 movzx edi,si 255 movzx edi,si
256 movzx esi,si 256 movzx esi,si
257 mov ecx, [ebp + 0Ch] 257 mov ecx, [ebp + 0Ch]
258 movd xmm4,esi 258 movd xmm4,esi
259 movzx esi,bx 259 movzx esi,bx
260 movd xmm5,esi 260 movd xmm5,esi
261 movd xmm3,edi 261 movd xmm3,edi
262 movzx esi,bx 262 movzx esi,bx
263 movd xmm6,esi 263 movd xmm6,esi
264 mov si,word [esp+0Eh] 264 mov si,word [esp+0Eh]
265 movzx edi,si 265 movzx edi,si
266 movzx esi,si 266 movzx esi,si
267 punpcklwd xmm6,xmm2 267 punpcklwd xmm6,xmm2
268 pxor xmm0,xmm0 268 pxor xmm0,xmm0
269 movdqa [esp+40h],xmm0 269 movdqa [esp+40h],xmm0
270 movd xmm7,edi 270 movd xmm7,edi
271 movd xmm0,esi 271 movd xmm0,esi
272 lea esi,[edx+edx] 272 lea esi,[edx+edx]
273 mov edi,eax 273 mov edi,eax
274 sub edi,esi 274 sub edi,esi
275 punpcklwd xmm5,xmm1 275 punpcklwd xmm5,xmm1
276 movdqa xmm1,[esp+40h] 276 movdqa xmm1,[esp+40h]
277 punpcklwd xmm0,xmm4 277 punpcklwd xmm0,xmm4
278 movq xmm4,[edx+ecx] 278 movq xmm4,[edx+ecx]
279 punpcklwd xmm7,xmm3 279 punpcklwd xmm7,xmm3
280 movq xmm3,[eax] 280 movq xmm3,[eax]
281 punpcklwd xmm0,xmm6 281 punpcklwd xmm0,xmm6
282 movq xmm6,[edi] 282 movq xmm6,[edi]
283 punpcklwd xmm7,xmm5 283 punpcklwd xmm7,xmm5
284 punpcklwd xmm0,xmm7 284 punpcklwd xmm0,xmm7
285 mov edi,ecx 285 mov edi,ecx
286 sub edi,esi 286 sub edi,esi
287 movdqa xmm2,xmm1 287 movdqa xmm2,xmm1
288 psubw xmm2,xmm0 288 psubw xmm2,xmm0
289 movdqa [esp+60h],xmm2 289 movdqa [esp+60h],xmm2
290 movq xmm2, [edi] 290 movq xmm2, [edi]
291 punpcklqdq xmm6,xmm2 291 punpcklqdq xmm6,xmm2
292 mov esi,eax 292 mov esi,eax
293 sub esi,edx 293 sub esi,edx
294 movq xmm7,[esi] 294 movq xmm7,[esi]
295 mov edi,ecx 295 mov edi,ecx
296 sub edi,edx 296 sub edi,edx
297 movq xmm2,[edi] 297 movq xmm2,[edi]
298 punpcklqdq xmm7,xmm2 298 punpcklqdq xmm7,xmm2
299 movq xmm2,[ecx] 299 movq xmm2,[ecx]
300 punpcklqdq xmm3,xmm2 300 punpcklqdq xmm3,xmm2
301 movq xmm2,[edx+eax] 301 movq xmm2,[edx+eax]
302 movsx edx,word [ebp + 14h] 302 movsx edx,word [ebp + 14h]
303 punpcklqdq xmm2,xmm4 303 punpcklqdq xmm2,xmm4
304 movdqa [esp+0E0h],xmm2 304 movdqa [esp+0E0h],xmm2
305 movd xmm2,edx 305 movd xmm2,edx
306 movsx edx,word [ebp + 18h] 306 movsx edx,word [ebp + 18h]
307 movdqa xmm4,xmm2 307 movdqa xmm4,xmm2
308 punpcklwd xmm4,xmm2 308 punpcklwd xmm4,xmm2
309 movd xmm2,edx 309 movd xmm2,edx
310 movdqa xmm5,xmm2 310 movdqa xmm5,xmm2
311 punpcklwd xmm5,xmm2 311 punpcklwd xmm5,xmm2
312 pshufd xmm2,xmm5,0 312 pshufd xmm2,xmm5,0
313 movdqa [esp+50h],xmm2 313 movdqa [esp+50h],xmm2
314 movdqa xmm2,xmm6 314 movdqa xmm2,xmm6
315 punpcklbw xmm2,xmm1 315 punpcklbw xmm2,xmm1
316 movdqa [esp+0D0h],xmm3 316 movdqa [esp+0D0h],xmm3
317 pshufd xmm4,xmm4,0 317 pshufd xmm4,xmm4,0
318 movdqa [esp+30h],xmm2 318 movdqa [esp+30h],xmm2
319 punpckhbw xmm6,xmm1 319 punpckhbw xmm6,xmm1
320 movdqa [esp+80h],xmm6 320 movdqa [esp+80h],xmm6
321 movdqa xmm6,[esp+0D0h] 321 movdqa xmm6,[esp+0D0h]
322 punpckhbw xmm6,xmm1 322 punpckhbw xmm6,xmm1
323 movdqa [esp+70h],xmm6 323 movdqa [esp+70h],xmm6
324 movdqa xmm6, [esp+0E0h] 324 movdqa xmm6, [esp+0E0h]
325 punpckhbw xmm6,xmm1 325 punpckhbw xmm6,xmm1
326 movdqa [esp+90h],xmm6 326 movdqa [esp+90h],xmm6
327 movdqa xmm5, [esp+0E0h] 327 movdqa xmm5, [esp+0E0h]
328 movdqa xmm2,xmm7 328 movdqa xmm2,xmm7
329 punpckhbw xmm7,xmm1 329 punpckhbw xmm7,xmm1
330 punpcklbw xmm5,xmm1 330 punpcklbw xmm5,xmm1
331 movdqa [esp+0A0h],xmm7 331 movdqa [esp+0A0h],xmm7
332 punpcklbw xmm3,xmm1 332 punpcklbw xmm3,xmm1
333 mov edx,4 333 mov edx,4
334 punpcklbw xmm2,xmm1 334 punpcklbw xmm2,xmm1
335 movsx edx,dx 335 movsx edx,dx
336 movd xmm6,edx 336 movd xmm6,edx
337 movdqa xmm7,xmm6 337 movdqa xmm7,xmm6
338 punpcklwd xmm7,xmm6 338 punpcklwd xmm7,xmm6
339 pshufd xmm6,xmm7,0 339 pshufd xmm6,xmm7,0
340 movdqa xmm7,[esp+30h] 340 movdqa xmm7,[esp+30h]
341 movdqa [esp+20h],xmm6 341 movdqa [esp+20h],xmm6
342 psubw xmm7,xmm5 342 psubw xmm7,xmm5
343 movdqa xmm6,xmm0 343 movdqa xmm6,xmm0
344 pcmpgtw xmm6,xmm1 344 pcmpgtw xmm6,xmm1
345 movdqa xmm1,[esp+60h] 345 movdqa xmm1,[esp+60h]
346 movdqa [esp+40h],xmm6 346 movdqa [esp+40h],xmm6
347 movdqa xmm6,xmm3 347 movdqa xmm6,xmm3
348 psubw xmm6,xmm2 348 psubw xmm6,xmm2
349 psllw xmm6,2 349 psllw xmm6,2
350 paddw xmm6,xmm7 350 paddw xmm6,xmm7
351 paddw xmm6, [esp+20h] 351 paddw xmm6, [esp+20h]
352 movdqa xmm7, [esp+50h] 352 movdqa xmm7, [esp+50h]
353 psraw xmm6,3 353 psraw xmm6,3
354 pmaxsw xmm1,xmm6 354 pmaxsw xmm1,xmm6
355 movdqa [esp+10h],xmm0 355 movdqa [esp+10h],xmm0
356 movdqa xmm6, [esp+10h] 356 movdqa xmm6, [esp+10h]
357 pminsw xmm6,xmm1 357 pminsw xmm6,xmm1
358 movdqa [esp+10h],xmm6 358 movdqa [esp+10h],xmm6
359 movdqa xmm1,xmm2 359 movdqa xmm1,xmm2
360 psubw xmm1,xmm3 360 psubw xmm1,xmm3
361 pabsw xmm1,xmm1 361 pabsw xmm1,xmm1
362 movdqa xmm6,xmm4 362 movdqa xmm6,xmm4
363 pcmpgtw xmm6,xmm1 363 pcmpgtw xmm6,xmm1
364 movdqa xmm1, [esp+30h] 364 movdqa xmm1, [esp+30h]
365 psubw xmm1,xmm2 365 psubw xmm1,xmm2
366 pabsw xmm1,xmm1 366 pabsw xmm1,xmm1
367 pcmpgtw xmm7,xmm1 367 pcmpgtw xmm7,xmm1
368 movdqa xmm1,[esp+50h] 368 movdqa xmm1,[esp+50h]
369 pand xmm6,xmm7 369 pand xmm6,xmm7
370 movdqa xmm7,[esp+50h] 370 movdqa xmm7,[esp+50h]
371 psubw xmm5,xmm3 371 psubw xmm5,xmm3
372 pabsw xmm5,xmm5 372 pabsw xmm5,xmm5
373 pcmpgtw xmm1,xmm5 373 pcmpgtw xmm1,xmm5
374 movdqa xmm5,[esp+80h] 374 movdqa xmm5,[esp+80h]
375 psubw xmm5,[esp+90h] 375 psubw xmm5,[esp+90h]
376 pand xmm6,xmm1 376 pand xmm6,xmm1
377 pand xmm6,[esp+40h] 377 pand xmm6,[esp+40h]
378 movdqa xmm1,[esp+10h] 378 movdqa xmm1,[esp+10h]
379 pand xmm1,xmm6 379 pand xmm1,xmm6
380 movdqa xmm6,[esp+70h] 380 movdqa xmm6,[esp+70h]
381 movdqa [esp+30h],xmm1 381 movdqa [esp+30h],xmm1
382 movdqa xmm1,[esp+0A0h] 382 movdqa xmm1,[esp+0A0h]
383 psubw xmm6,xmm1 383 psubw xmm6,xmm1
384 psllw xmm6,2 384 psllw xmm6,2
385 paddw xmm6,xmm5 385 paddw xmm6,xmm5
386 paddw xmm6,[esp+20h] 386 paddw xmm6,[esp+20h]
387 movdqa xmm5,[esp+60h] 387 movdqa xmm5,[esp+60h]
388 psraw xmm6,3 388 psraw xmm6,3
389 pmaxsw xmm5,xmm6 389 pmaxsw xmm5,xmm6
390 pminsw xmm0,xmm5 390 pminsw xmm0,xmm5
391 movdqa xmm5,[esp+70h] 391 movdqa xmm5,[esp+70h]
392 movdqa xmm6,xmm1 392 movdqa xmm6,xmm1
393 psubw xmm6,xmm5 393 psubw xmm6,xmm5
394 pabsw xmm6,xmm6 394 pabsw xmm6,xmm6
395 pcmpgtw xmm4,xmm6 395 pcmpgtw xmm4,xmm6
396 movdqa xmm6,[esp+80h] 396 movdqa xmm6,[esp+80h]
397 psubw xmm6,xmm1 397 psubw xmm6,xmm1
398 pabsw xmm6,xmm6 398 pabsw xmm6,xmm6
399 pcmpgtw xmm7,xmm6 399 pcmpgtw xmm7,xmm6
400 movdqa xmm6,[esp+90h] 400 movdqa xmm6,[esp+90h]
401 pand xmm4,xmm7 401 pand xmm4,xmm7
402 movdqa xmm7,[esp+50h] 402 movdqa xmm7,[esp+50h]
403 psubw xmm6,xmm5 403 psubw xmm6,xmm5
404 pabsw xmm6,xmm6 404 pabsw xmm6,xmm6
405 pcmpgtw xmm7,xmm6 405 pcmpgtw xmm7,xmm6
406 pand xmm4,xmm7 406 pand xmm4,xmm7
407 pand xmm4,[esp+40h] 407 pand xmm4,[esp+40h]
408 pand xmm0,xmm4 408 pand xmm0,xmm4
409 movdqa xmm4,[esp+30h] 409 movdqa xmm4,[esp+30h]
410 paddw xmm2,xmm4 410 paddw xmm2,xmm4
411 paddw xmm1,xmm0 411 paddw xmm1,xmm0
412 packuswb xmm2,xmm1 412 packuswb xmm2,xmm1
413 movq [esi],xmm2 413 movq [esi],xmm2
414 psubw xmm3,xmm4 414 psubw xmm3,xmm4
415 psubw xmm5,xmm0 415 psubw xmm5,xmm0
416 packuswb xmm3,xmm5 416 packuswb xmm3,xmm5
417 movq [eax],xmm3 417 movq [eax],xmm3
418 psrldq xmm2,8 418 psrldq xmm2,8
419 movq [edi],xmm2 419 movq [edi],xmm2
420 pop edi 420 pop edi
421 pop esi 421 pop esi
422 psrldq xmm3,8 422 psrldq xmm3,8
423 movq [ecx],xmm3 423 movq [ecx],xmm3
424 pop ebx 424 pop ebx
425 mov esp,ebp 425 mov esp,ebp
426 pop ebp 426 pop ebp
427 ret 427 ret
428 428
429;***************************************************************************429;***************************************************************************
430; void DeblockChromaEq4H_sse2(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride, 430; void DeblockChromaEq4H_sse2(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride,
431; int32_t iAlpha, int32_t iBeta)431; int32_t iAlpha, int32_t iBeta)
432;***************************************************************************432;***************************************************************************
433 433
434WELS_EXTERN DeblockChromaEq4H_sse2434WELS_EXTERN DeblockChromaEq4H_sse2
435 435
436ALIGN 16436ALIGN 16
437 437
438DeblockChromaEq4H_sse2:438DeblockChromaEq4H_sse2:
439 push ebp 439 push ebp
440 mov ebp,esp 440 mov ebp,esp
441 and esp,0FFFFFFF0h 441 and esp,0FFFFFFF0h
442 sub esp,0C8h 442 sub esp,0C8h
443 mov ecx,dword [ebp+8] 443 mov ecx,dword [ebp+8]
444 mov edx,dword [ebp+0Ch] 444 mov edx,dword [ebp+0Ch]
445 mov eax,dword [ebp+10h] 445 mov eax,dword [ebp+10h]
446 sub ecx,2 446 sub ecx,2
447 sub edx,2 447 sub edx,2
448 push esi 448 push esi
449 lea esi,[eax+eax*2] 449 lea esi,[eax+eax*2]
450 mov dword [esp+18h],ecx 450 mov dword [esp+18h],ecx
451 mov dword [esp+4],edx 451 mov dword [esp+4],edx
452 lea ecx,[ecx+eax*4] 452 lea ecx,[ecx+eax*4]
453 lea edx,[edx+eax*4] 453 lea edx,[edx+eax*4]
454 lea eax,[esp+7Ch] 454 lea eax,[esp+7Ch]
455 push edi 455 push edi
456 mov dword [esp+14h],esi 456 mov dword [esp+14h],esi
457 mov dword [esp+18h],ecx 457 mov dword [esp+18h],ecx
458 mov dword [esp+0Ch],edx 458 mov dword [esp+0Ch],edx
459 mov dword [esp+10h],eax 459 mov dword [esp+10h],eax
460 mov esi,dword [esp+1Ch] 460 mov esi,dword [esp+1Ch]
461 mov ecx,dword [ebp+10h] 461 mov ecx,dword [ebp+10h]
462 mov edx,dword [esp+14h] 462 mov edx,dword [esp+14h]
463 movd xmm0,dword [esi] 463 movd xmm0,dword [esi]
464 movd xmm1,dword [esi+ecx] 464 movd xmm1,dword [esi+ecx]
465 movd xmm2,dword [esi+ecx*2] 465 movd xmm2,dword [esi+ecx*2]
466 movd xmm3,dword [esi+edx] 466 movd xmm3,dword [esi+edx]
467 mov esi,dword [esp+8] 467 mov esi,dword [esp+8]
468 movd xmm4,dword [esi] 468 movd xmm4,dword [esi]
469 movd xmm5,dword [esi+ecx] 469 movd xmm5,dword [esi+ecx]
470 movd xmm6,dword [esi+ecx*2] 470 movd xmm6,dword [esi+ecx*2]
471 movd xmm7,dword [esi+edx] 471 movd xmm7,dword [esi+edx]
472 punpckldq xmm0,xmm4 472 punpckldq xmm0,xmm4
473 punpckldq xmm1,xmm5 473 punpckldq xmm1,xmm5
474 punpckldq xmm2,xmm6 474 punpckldq xmm2,xmm6
475 punpckldq xmm3,xmm7 475 punpckldq xmm3,xmm7
476 mov esi,dword [esp+18h] 476 mov esi,dword [esp+18h]
477 mov edi,dword [esp+0Ch] 477 mov edi,dword [esp+0Ch]
478 movd xmm4,dword [esi] 478 movd xmm4,dword [esi]
479 movd xmm5,dword [edi] 479 movd xmm5,dword [edi]
480 punpckldq xmm4,xmm5 480 punpckldq xmm4,xmm5
481 punpcklqdq xmm0,xmm4 481 punpcklqdq xmm0,xmm4
482 movd xmm4,dword [esi+ecx] 482 movd xmm4,dword [esi+ecx]
483 movd xmm5,dword [edi+ecx] 483 movd xmm5,dword [edi+ecx]
484 punpckldq xmm4,xmm5 484 punpckldq xmm4,xmm5
485 punpcklqdq xmm1,xmm4 485 punpcklqdq xmm1,xmm4
486 movd xmm4,dword [esi+ecx*2] 486 movd xmm4,dword [esi+ecx*2]
487 movd xmm5,dword [edi+ecx*2] 487 movd xmm5,dword [edi+ecx*2]
488 punpckldq xmm4,xmm5 488 punpckldq xmm4,xmm5
489 punpcklqdq xmm2,xmm4 489 punpcklqdq xmm2,xmm4
490 movd xmm4,dword [esi+edx] 490 movd xmm4,dword [esi+edx]
491 movd xmm5,dword [edi+edx] 491 movd xmm5,dword [edi+edx]
492 punpckldq xmm4,xmm5 492 punpckldq xmm4,xmm5
493 punpcklqdq xmm3,xmm4 493 punpcklqdq xmm3,xmm4
494 movdqa xmm6,xmm0 494 movdqa xmm6,xmm0
495 punpcklbw xmm0,xmm1 495 punpcklbw xmm0,xmm1
496 punpckhbw xmm6,xmm1 496 punpckhbw xmm6,xmm1
497 movdqa xmm7,xmm2 497 movdqa xmm7,xmm2
498 punpcklbw xmm2,xmm3 498 punpcklbw xmm2,xmm3
499 punpckhbw xmm7,xmm3 499 punpckhbw xmm7,xmm3
500 movdqa xmm4,xmm0 500 movdqa xmm4,xmm0
501 movdqa xmm5,xmm6 501 movdqa xmm5,xmm6
502 punpcklwd xmm0,xmm2 502 punpcklwd xmm0,xmm2
503 punpckhwd xmm4,xmm2 503 punpckhwd xmm4,xmm2
504 punpcklwd xmm6,xmm7 504 punpcklwd xmm6,xmm7
505 punpckhwd xmm5,xmm7 505 punpckhwd xmm5,xmm7
506 movdqa xmm1,xmm0 506 movdqa xmm1,xmm0
507 movdqa xmm2,xmm4 507 movdqa xmm2,xmm4
508 punpckldq xmm0,xmm6 508 punpckldq xmm0,xmm6
509 punpckhdq xmm1,xmm6 509 punpckhdq xmm1,xmm6
510 punpckldq xmm4,xmm5 510 punpckldq xmm4,xmm5
511 punpckhdq xmm2,xmm5 511 punpckhdq xmm2,xmm5
512 movdqa xmm5,xmm0 512 movdqa xmm5,xmm0
513 movdqa xmm6,xmm1 513 movdqa xmm6,xmm1
514 punpcklqdq xmm0,xmm4 514 punpcklqdq xmm0,xmm4
515 punpckhqdq xmm5,xmm4 515 punpckhqdq xmm5,xmm4
516 punpcklqdq xmm1,xmm2 516 punpcklqdq xmm1,xmm2
517 punpckhqdq xmm6,xmm2 517 punpckhqdq xmm6,xmm2
518 mov edi,dword [esp+10h] 518 mov edi,dword [esp+10h]
519 movdqa [edi],xmm0 519 movdqa [edi],xmm0
520 movdqa [edi+10h],xmm5 520 movdqa [edi+10h],xmm5
521 movdqa [edi+20h],xmm1 521 movdqa [edi+20h],xmm1
522 movdqa [edi+30h],xmm6 522 movdqa [edi+30h],xmm6
523 movsx ecx,word [ebp+14h] 523 movsx ecx,word [ebp+14h]
524 movsx edx,word [ebp+18h] 524 movsx edx,word [ebp+18h]
525 movdqa xmm6,[esp+80h] 525 movdqa xmm6,[esp+80h]
526 movdqa xmm4,[esp+90h] 526 movdqa xmm4,[esp+90h]
527 movdqa xmm5,[esp+0A0h] 527 movdqa xmm5,[esp+0A0h]
528 movdqa xmm7,[esp+0B0h] 528 movdqa xmm7,[esp+0B0h]
529 pxor xmm0,xmm0 529 pxor xmm0,xmm0
530 movd xmm1,ecx 530 movd xmm1,ecx
531 movdqa xmm2,xmm1 531 movdqa xmm2,xmm1
532 punpcklwd xmm2,xmm1 532 punpcklwd xmm2,xmm1
533 pshufd xmm1,xmm2,0 533 pshufd xmm1,xmm2,0
534 movd xmm2,edx 534 movd xmm2,edx
535 movdqa xmm3,xmm2 535 movdqa xmm3,xmm2
536 punpcklwd xmm3,xmm2 536 punpcklwd xmm3,xmm2
537 pshufd xmm2,xmm3,0 537 pshufd xmm2,xmm3,0
538 movdqa xmm3,xmm6 538 movdqa xmm3,xmm6
539 punpckhbw xmm6,xmm0 539 punpckhbw xmm6,xmm0
540 movdqa [esp+60h],xmm6 540 movdqa [esp+60h],xmm6
541 movdqa xmm6,[esp+90h] 541 movdqa xmm6,[esp+90h]
542 punpckhbw xmm6,xmm0 542 punpckhbw xmm6,xmm0
543 movdqa [esp+30h],xmm6 543 movdqa [esp+30h],xmm6
544 movdqa xmm6,[esp+0A0h] 544 movdqa xmm6,[esp+0A0h]
545 punpckhbw xmm6,xmm0 545 punpckhbw xmm6,xmm0
546 movdqa [esp+40h],xmm6 546 movdqa [esp+40h],xmm6
547 movdqa xmm6,[esp+0B0h] 547 movdqa xmm6,[esp+0B0h]
548 punpckhbw xmm6,xmm0 548 punpckhbw xmm6,xmm0
549 movdqa [esp+70h],xmm6 549 movdqa [esp+70h],xmm6
550 punpcklbw xmm7,xmm0 550 punpcklbw xmm7,xmm0
551 punpcklbw xmm4,xmm0 551 punpcklbw xmm4,xmm0
552 punpcklbw xmm5,xmm0 552 punpcklbw xmm5,xmm0
553 punpcklbw xmm3,xmm0 553 punpcklbw xmm3,xmm0
554 movdqa [esp+50h],xmm7 554 movdqa [esp+50h],xmm7
555 movdqa xmm6,xmm4 555 movdqa xmm6,xmm4
556 psubw xmm6,xmm5 556 psubw xmm6,xmm5
557 pabsw xmm6,xmm6 557 pabsw xmm6,xmm6
558 movdqa xmm0,xmm1 558 movdqa xmm0,xmm1
559 pcmpgtw xmm0,xmm6 559 pcmpgtw xmm0,xmm6
560 movdqa xmm6,xmm3 560 movdqa xmm6,xmm3
561 psubw xmm6,xmm4 561 psubw xmm6,xmm4
562 pabsw xmm6,xmm6 562 pabsw xmm6,xmm6
563 movdqa xmm7,xmm2 563 movdqa xmm7,xmm2
564 pcmpgtw xmm7,xmm6 564 pcmpgtw xmm7,xmm6
565 movdqa xmm6,[esp+50h] 565 movdqa xmm6,[esp+50h]
566 psubw xmm6,xmm5 566 psubw xmm6,xmm5
567 pabsw xmm6,xmm6 567 pabsw xmm6,xmm6
568 pand xmm0,xmm7 568 pand xmm0,xmm7
569 movdqa xmm7,xmm2 569 movdqa xmm7,xmm2
570 pcmpgtw xmm7,xmm6 570 pcmpgtw xmm7,xmm6
571 movdqa xmm6,[esp+30h] 571 movdqa xmm6,[esp+30h]
572 psubw xmm6,[esp+40h] 572 psubw xmm6,[esp+40h]
573 pabsw xmm6,xmm6 573 pabsw xmm6,xmm6
574 pcmpgtw xmm1,xmm6 574 pcmpgtw xmm1,xmm6
575 movdqa xmm6,[esp+60h] 575 movdqa xmm6,[esp+60h]
576 psubw xmm6,[esp+30h] 576 psubw xmm6,[esp+30h]
577 pabsw xmm6,xmm6 577 pabsw xmm6,xmm6
578 pand xmm0,xmm7 578 pand xmm0,xmm7
579 movdqa xmm7,xmm2 579 movdqa xmm7,xmm2
580 pcmpgtw xmm7,xmm6 580 pcmpgtw xmm7,xmm6
581 movdqa xmm6,[esp+70h] 581 movdqa xmm6,[esp+70h]
582 psubw xmm6,[esp+40h] 582 psubw xmm6,[esp+40h]
583 pabsw xmm6,xmm6 583 pabsw xmm6,xmm6
584 pand xmm1,xmm7 584 pand xmm1,xmm7
585 pcmpgtw xmm2,xmm6 585 pcmpgtw xmm2,xmm6
586 pand xmm1,xmm2 586 pand xmm1,xmm2
587 mov eax,2 587 mov eax,2
588 movsx ecx,ax 588 movsx ecx,ax
589 movd xmm2,ecx 589 movd xmm2,ecx
590 movdqa xmm6,xmm2 590 movdqa xmm6,xmm2
591 punpcklwd xmm6,xmm2 591 punpcklwd xmm6,xmm2
592 pshufd xmm2,xmm6,0 592 pshufd xmm2,xmm6,0
593 movdqa [esp+20h],xmm2 593 movdqa [esp+20h],xmm2
594 movdqa xmm2,xmm3 594 movdqa xmm2,xmm3
595 paddw xmm2,xmm3 595 paddw xmm2,xmm3
596 paddw xmm2,xmm4 596 paddw xmm2,xmm4
597 paddw xmm2,[esp+50h] 597 paddw xmm2,[esp+50h]
598 paddw xmm2,[esp+20h] 598 paddw xmm2,[esp+20h]
599 psraw xmm2,2 599 psraw xmm2,2
600 movdqa xmm6,xmm0 600 movdqa xmm6,xmm0
601 pand xmm6,xmm2 601 pand xmm6,xmm2
602 movdqa xmm2,xmm0 602 movdqa xmm2,xmm0
603 pandn xmm2,xmm4 603 pandn xmm2,xmm4
604 por xmm6,xmm2 604 por xmm6,xmm2
605 movdqa xmm2,[esp+60h] 605 movdqa xmm2,[esp+60h]
606 movdqa xmm7,xmm2 606 movdqa xmm7,xmm2
607 paddw xmm7,xmm2 607 paddw xmm7,xmm2
608 paddw xmm7,[esp+30h] 608 paddw xmm7,[esp+30h]
609 paddw xmm7,[esp+70h] 609 paddw xmm7,[esp+70h]
610 paddw xmm7,[esp+20h] 610 paddw xmm7,[esp+20h]
611 movdqa xmm4,xmm1 611 movdqa xmm4,xmm1
612 movdqa xmm2,xmm1 612 movdqa xmm2,xmm1
613 pandn xmm2,[esp+30h] 613 pandn xmm2,[esp+30h]
614 psraw xmm7,2 614 psraw xmm7,2
615 pand xmm4,xmm7 615 pand xmm4,xmm7
616 por xmm4,xmm2 616 por xmm4,xmm2
617 movdqa xmm2,[esp+50h] 617 movdqa xmm2,[esp+50h]
618 packuswb xmm6,xmm4 618 packuswb xmm6,xmm4
619 movdqa [esp+90h],xmm6 619 movdqa [esp+90h],xmm6
620 movdqa xmm6,xmm2 620 movdqa xmm6,xmm2
621 paddw xmm6,xmm2 621 paddw xmm6,xmm2
622 movdqa xmm2,[esp+20h] 622 movdqa xmm2,[esp+20h]
623 paddw xmm6,xmm5 623 paddw xmm6,xmm5
624 paddw xmm6,xmm3 624 paddw xmm6,xmm3
625 movdqa xmm4,xmm0 625 movdqa xmm4,xmm0
626 pandn xmm0,xmm5 626 pandn xmm0,xmm5
627 paddw xmm6,xmm2 627 paddw xmm6,xmm2
628 psraw xmm6,2 628 psraw xmm6,2
629 pand xmm4,xmm6 629 pand xmm4,xmm6
630 por xmm4,xmm0 630 por xmm4,xmm0
631 movdqa xmm0,[esp+70h] 631 movdqa xmm0,[esp+70h]
632 movdqa xmm5,xmm0 632 movdqa xmm5,xmm0
633 paddw xmm5,xmm0 633 paddw xmm5,xmm0
634 movdqa xmm0,[esp+40h] 634 movdqa xmm0,[esp+40h]
635 paddw xmm5,xmm0 635 paddw xmm5,xmm0
636 paddw xmm5,[esp+60h] 636 paddw xmm5,[esp+60h]
637 movdqa xmm3,xmm1 637 movdqa xmm3,xmm1
638 paddw xmm5,xmm2 638 paddw xmm5,xmm2
639 psraw xmm5,2 639 psraw xmm5,2
640 pand xmm3,xmm5 640 pand xmm3,xmm5
641 pandn xmm1,xmm0 641 pandn xmm1,xmm0
642 por xmm3,xmm1 642 por xmm3,xmm1
643 packuswb xmm4,xmm3 643 packuswb xmm4,xmm3
644 movdqa [esp+0A0h],xmm4 644 movdqa [esp+0A0h],xmm4
645 mov esi,dword [esp+10h] 645 mov esi,dword [esp+10h]
646 movdqa xmm0,[esi] 646 movdqa xmm0,[esi]
647 movdqa xmm1,[esi+10h] 647 movdqa xmm1,[esi+10h]
648 movdqa xmm2,[esi+20h] 648 movdqa xmm2,[esi+20h]
649 movdqa xmm3,[esi+30h] 649 movdqa xmm3,[esi+30h]
650 movdqa xmm6,xmm0 650 movdqa xmm6,xmm0
651 punpcklbw xmm0,xmm1 651 punpcklbw xmm0,xmm1
652 punpckhbw xmm6,xmm1 652 punpckhbw xmm6,xmm1
653 movdqa xmm7,xmm2 653 movdqa xmm7,xmm2
654 punpcklbw xmm2,xmm3 654 punpcklbw xmm2,xmm3
655 punpckhbw xmm7,xmm3 655 punpckhbw xmm7,xmm3
656 movdqa xmm4,xmm0 656 movdqa xmm4,xmm0
657 movdqa xmm5,xmm6 657 movdqa xmm5,xmm6
658 punpcklwd xmm0,xmm2 658 punpcklwd xmm0,xmm2
659 punpckhwd xmm4,xmm2 659 punpckhwd xmm4,xmm2
660 punpcklwd xmm6,xmm7 660 punpcklwd xmm6,xmm7
661 punpckhwd xmm5,xmm7 661 punpckhwd xmm5,xmm7
662 movdqa xmm1,xmm0 662 movdqa xmm1,xmm0
663 movdqa xmm2,xmm4 663 movdqa xmm2,xmm4
664 punpckldq xmm0,xmm6 664 punpckldq xmm0,xmm6
665 punpckhdq xmm1,xmm6 665 punpckhdq xmm1,xmm6
666 punpckldq xmm4,xmm5 666 punpckldq xmm4,xmm5
667 punpckhdq xmm2,xmm5 667 punpckhdq xmm2,xmm5
668 movdqa xmm5,xmm0 668 movdqa xmm5,xmm0
669 movdqa xmm6,xmm1 669 movdqa xmm6,xmm1
670 punpcklqdq xmm0,xmm4 670 punpcklqdq xmm0,xmm4
671 punpckhqdq xmm5,xmm4 671 punpckhqdq xmm5,xmm4
672 punpcklqdq xmm1,xmm2 672 punpcklqdq xmm1,xmm2
673 punpckhqdq xmm6,xmm2 673 punpckhqdq xmm6,xmm2
674 mov esi,dword [esp+1Ch] 674 mov esi,dword [esp+1Ch]
675 mov ecx,dword [ebp+10h] 675 mov ecx,dword [ebp+10h]
676 mov edx,dword [esp+14h] 676 mov edx,dword [esp+14h]
677 mov edi,dword [esp+8] 677 mov edi,dword [esp+8]
678 movd dword [esi],xmm0 678 movd dword [esi],xmm0
679 movd dword [esi+ecx],xmm5 679 movd dword [esi+ecx],xmm5
680 movd dword [esi+ecx*2],xmm1 680 movd dword [esi+ecx*2],xmm1
681 movd dword [esi+edx],xmm6 681 movd dword [esi+edx],xmm6
682 psrldq xmm0,4 682 psrldq xmm0,4
683 psrldq xmm5,4 683 psrldq xmm5,4
684 psrldq xmm1,4 684 psrldq xmm1,4
685 psrldq xmm6,4 685 psrldq xmm6,4
686 mov esi,dword [esp+18h] 686 mov esi,dword [esp+18h]
687 movd dword [edi],xmm0 687 movd dword [edi],xmm0
688 movd dword [edi+ecx],xmm5 688 movd dword [edi+ecx],xmm5
689 movd dword [edi+ecx*2],xmm1 689 movd dword [edi+ecx*2],xmm1
690 movd dword [edi+edx],xmm6 690 movd dword [edi+edx],xmm6
691 psrldq xmm0,4 691 psrldq xmm0,4
692 psrldq xmm5,4 692 psrldq xmm5,4
693 psrldq xmm1,4 693 psrldq xmm1,4
694 psrldq xmm6,4 694 psrldq xmm6,4
695 movd dword [esi],xmm0 695 movd dword [esi],xmm0
696 movd dword [esi+ecx],xmm5 696 movd dword [esi+ecx],xmm5
697 movd dword [esi+ecx*2],xmm1 697 movd dword [esi+ecx*2],xmm1
698 movd dword [esi+edx],xmm6 698 movd dword [esi+edx],xmm6
699 psrldq xmm0,4 699 psrldq xmm0,4
700 psrldq xmm5,4 700 psrldq xmm5,4
701 psrldq xmm1,4 701 psrldq xmm1,4
702 psrldq xmm6,4 702 psrldq xmm6,4
703 mov edi,dword [esp+0Ch] 703 mov edi,dword [esp+0Ch]
704 movd dword [edi],xmm0 704 movd dword [edi],xmm0
705 movd dword [edi+ecx],xmm5 705 movd dword [edi+ecx],xmm5
706 movd dword [edi+ecx*2],xmm1 706 movd dword [edi+ecx*2],xmm1
707 movd dword [edi+edx],xmm6 707 movd dword [edi+edx],xmm6
708 pop edi 708 pop edi
709 pop esi 709 pop esi
710 mov esp,ebp 710 mov esp,ebp
711 pop ebp 711 pop ebp
712 ret 712 ret
713 713
714;*******************************************************************************714;*******************************************************************************
715; void DeblockChromaLt4H_sse2(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride, 715; void DeblockChromaLt4H_sse2(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride,
716; int32_t iAlpha, int32_t iBeta, int8_t * pTC);716; int32_t iAlpha, int32_t iBeta, int8_t * pTC);
717;*******************************************************************************717;*******************************************************************************
718 718
719WELS_EXTERN DeblockChromaLt4H_sse2719WELS_EXTERN DeblockChromaLt4H_sse2
720 720
721ALIGN 16721ALIGN 16
722 722
723DeblockChromaLt4H_sse2:723DeblockChromaLt4H_sse2:
724 push ebp 724 push ebp
725 mov ebp,esp 725 mov ebp,esp
726 and esp,0FFFFFFF0h 726 and esp,0FFFFFFF0h
727 sub esp,108h 727 sub esp,108h
728 mov ecx,dword [ebp+8] 728 mov ecx,dword [ebp+8]
729 mov edx,dword [ebp+0Ch] 729 mov edx,dword [ebp+0Ch]
730 mov eax,dword [ebp+10h] 730 mov eax,dword [ebp+10h]
731 sub ecx,2 731 sub ecx,2
732 sub edx,2 732 sub edx,2
733 push esi 733 push esi
734 lea esi,[eax+eax*2] 734 lea esi,[eax+eax*2]
735 mov dword [esp+10h],ecx 735 mov dword [esp+10h],ecx
736 mov dword [esp+4],edx 736 mov dword [esp+4],edx
737 lea ecx,[ecx+eax*4] 737 lea ecx,[ecx+eax*4]
738 lea edx,[edx+eax*4] 738 lea edx,[edx+eax*4]
739 lea eax,[esp+6Ch] 739 lea eax,[esp+6Ch]
740 push edi 740 push edi
741 mov dword [esp+0Ch],esi 741 mov dword [esp+0Ch],esi
742 mov dword [esp+18h],ecx 742 mov dword [esp+18h],ecx
743 mov dword [esp+10h],edx 743 mov dword [esp+10h],edx
744 mov dword [esp+1Ch],eax 744 mov dword [esp+1Ch],eax
745 mov esi,dword [esp+14h] 745 mov esi,dword [esp+14h]
746 mov ecx,dword [ebp+10h] 746 mov ecx,dword [ebp+10h]
747 mov edx,dword [esp+0Ch] 747 mov edx,dword [esp+0Ch]
748 movd xmm0,dword [esi] 748 movd xmm0,dword [esi]
749 movd xmm1,dword [esi+ecx] 749 movd xmm1,dword [esi+ecx]
750 movd xmm2,dword [esi+ecx*2] 750 movd xmm2,dword [esi+ecx*2]
751 movd xmm3,dword [esi+edx] 751 movd xmm3,dword [esi+edx]
752 mov esi,dword [esp+8] 752 mov esi,dword [esp+8]
753 movd xmm4,dword [esi] 753 movd xmm4,dword [esi]
754 movd xmm5,dword [esi+ecx] 754 movd xmm5,dword [esi+ecx]
755 movd xmm6,dword [esi+ecx*2] 755 movd xmm6,dword [esi+ecx*2]
756 movd xmm7,dword [esi+edx] 756 movd xmm7,dword [esi+edx]
757 punpckldq xmm0,xmm4 757 punpckldq xmm0,xmm4
758 punpckldq xmm1,xmm5 758 punpckldq xmm1,xmm5
759 punpckldq xmm2,xmm6 759 punpckldq xmm2,xmm6
760 punpckldq xmm3,xmm7 760 punpckldq xmm3,xmm7
761 mov esi,dword [esp+18h] 761 mov esi,dword [esp+18h]
762 mov edi,dword [esp+10h] 762 mov edi,dword [esp+10h]
763 movd xmm4,dword [esi] 763 movd xmm4,dword [esi]
764 movd xmm5,dword [edi] 764 movd xmm5,dword [edi]
765 punpckldq xmm4,xmm5 765 punpckldq xmm4,xmm5
766 punpcklqdq xmm0,xmm4 766 punpcklqdq xmm0,xmm4
767 movd xmm4,dword [esi+ecx] 767 movd xmm4,dword [esi+ecx]
768 movd xmm5,dword [edi+ecx] 768 movd xmm5,dword [edi+ecx]
769 punpckldq xmm4,xmm5 769 punpckldq xmm4,xmm5
770 punpcklqdq xmm1,xmm4 770 punpcklqdq xmm1,xmm4
771 movd xmm4,dword [esi+ecx*2] 771 movd xmm4,dword [esi+ecx*2]
772 movd xmm5,dword [edi+ecx*2] 772 movd xmm5,dword [edi+ecx*2]
773 punpckldq xmm4,xmm5 773 punpckldq xmm4,xmm5
774 punpcklqdq xmm2,xmm4 774 punpcklqdq xmm2,xmm4
775 movd xmm4,dword [esi+edx] 775 movd xmm4,dword [esi+edx]
776 movd xmm5,dword [edi+edx] 776 movd xmm5,dword [edi+edx]
777 punpckldq xmm4,xmm5 777 punpckldq xmm4,xmm5
778 punpcklqdq xmm3,xmm4 778 punpcklqdq xmm3,xmm4
779 movdqa xmm6,xmm0 779 movdqa xmm6,xmm0
780 punpcklbw xmm0,xmm1 780 punpcklbw xmm0,xmm1
781 punpckhbw xmm6,xmm1 781 punpckhbw xmm6,xmm1
782 movdqa xmm7,xmm2 782 movdqa xmm7,xmm2
783 punpcklbw xmm2,xmm3 783 punpcklbw xmm2,xmm3
784 punpckhbw xmm7,xmm3 784 punpckhbw xmm7,xmm3
785 movdqa xmm4,xmm0 785 movdqa xmm4,xmm0
786 movdqa xmm5,xmm6 786 movdqa xmm5,xmm6
787 punpcklwd xmm0,xmm2 787 punpcklwd xmm0,xmm2
788 punpckhwd xmm4,xmm2 788 punpckhwd xmm4,xmm2
789 punpcklwd xmm6,xmm7 789 punpcklwd xmm6,xmm7
790 punpckhwd xmm5,xmm7 790 punpckhwd xmm5,xmm7
791 movdqa xmm1,xmm0 791 movdqa xmm1,xmm0
792 movdqa xmm2,xmm4 792 movdqa xmm2,xmm4
793 punpckldq xmm0,xmm6 793 punpckldq xmm0,xmm6
794 punpckhdq xmm1,xmm6 794 punpckhdq xmm1,xmm6
795 punpckldq xmm4,xmm5 795 punpckldq xmm4,xmm5
796 punpckhdq xmm2,xmm5 796 punpckhdq xmm2,xmm5
797 movdqa xmm5,xmm0 797 movdqa xmm5,xmm0
798 movdqa xmm6,xmm1 798 movdqa xmm6,xmm1
799 punpcklqdq xmm0,xmm4 799 punpcklqdq xmm0,xmm4
800 punpckhqdq xmm5,xmm4 800 punpckhqdq xmm5,xmm4
801 punpcklqdq xmm1,xmm2 801 punpcklqdq xmm1,xmm2
802 punpckhqdq xmm6,xmm2 802 punpckhqdq xmm6,xmm2
803 mov edi,dword [esp+1Ch] 803 mov edi,dword [esp+1Ch]
804 movdqa [edi],xmm0 804 movdqa [edi],xmm0
805 movdqa [edi+10h],xmm5 805 movdqa [edi+10h],xmm5
806 movdqa [edi+20h],xmm1 806 movdqa [edi+20h],xmm1
807 movdqa [edi+30h],xmm6 807 movdqa [edi+30h],xmm6
808 mov eax,dword [ebp+1Ch] 808 mov eax,dword [ebp+1Ch]
809 movsx cx,byte [eax+3] 809 movsx cx,byte [eax+3]
810 movsx dx,byte [eax+2] 810 movsx dx,byte [eax+2]
811 movsx si,byte [eax+1] 811 movsx si,byte [eax+1]
812 movsx ax,byte [eax] 812 movsx ax,byte [eax]
813 movzx edi,cx 813 movzx edi,cx
814 movzx ecx,cx 814 movzx ecx,cx
815 movd xmm2,ecx 815 movd xmm2,ecx
816 movzx ecx,dx 816 movzx ecx,dx
817 movzx edx,dx 817 movzx edx,dx
818 movd xmm3,ecx 818 movd xmm3,ecx
819 movd xmm4,edx 819 movd xmm4,edx
820 movzx ecx,si 820 movzx ecx,si
821 movzx edx,si 821 movzx edx,si
822 movd xmm5,ecx 822 movd xmm5,ecx
823 pxor xmm0,xmm0 823 pxor xmm0,xmm0
824 movd xmm6,edx 824 movd xmm6,edx
825 movzx ecx,ax 825 movzx ecx,ax
826 movdqa [esp+60h],xmm0 826 movdqa [esp+60h],xmm0
827 movzx edx,ax 827 movzx edx,ax
828 movsx eax,word [ebp+14h] 828 movsx eax,word [ebp+14h]
829 punpcklwd xmm6,xmm2 829 punpcklwd xmm6,xmm2
830 movd xmm1,edi 830 movd xmm1,edi
831 movd xmm7,ecx 831 movd xmm7,ecx
832 movsx ecx,word [ebp+18h] 832 movsx ecx,word [ebp+18h]
833 movd xmm0,edx 833 movd xmm0,edx
834 punpcklwd xmm7,xmm3 834 punpcklwd xmm7,xmm3
835 punpcklwd xmm5,xmm1 835 punpcklwd xmm5,xmm1
836 movdqa xmm1,[esp+60h] 836 movdqa xmm1,[esp+60h]
837 punpcklwd xmm7,xmm5 837 punpcklwd xmm7,xmm5
838 movdqa xmm5,[esp+0A0h] 838 movdqa xmm5,[esp+0A0h]
839 punpcklwd xmm0,xmm4 839 punpcklwd xmm0,xmm4
840 punpcklwd xmm0,xmm6 840 punpcklwd xmm0,xmm6
841 movdqa xmm6, [esp+70h] 841 movdqa xmm6, [esp+70h]
842 punpcklwd xmm0,xmm7 842 punpcklwd xmm0,xmm7
843 movdqa xmm7,[esp+80h] 843 movdqa xmm7,[esp+80h]
844 movdqa xmm2,xmm1 844 movdqa xmm2,xmm1
845 psubw xmm2,xmm0 845 psubw xmm2,xmm0
846 movdqa [esp+0D0h],xmm2 846 movdqa [esp+0D0h],xmm2
847 movd xmm2,eax 847 movd xmm2,eax
848 movdqa xmm3,xmm2 848 movdqa xmm3,xmm2
849 punpcklwd xmm3,xmm2 849 punpcklwd xmm3,xmm2
850 pshufd xmm4,xmm3,0 850 pshufd xmm4,xmm3,0
851 movd xmm2,ecx 851 movd xmm2,ecx
852 movdqa xmm3,xmm2 852 movdqa xmm3,xmm2
853 punpcklwd xmm3,xmm2 853 punpcklwd xmm3,xmm2
854 pshufd xmm2,xmm3,0 854 pshufd xmm2,xmm3,0
855 movdqa xmm3, [esp+90h] 855 movdqa xmm3, [esp+90h]
856 movdqa [esp+50h],xmm2 856 movdqa [esp+50h],xmm2
857 movdqa xmm2,xmm6 857 movdqa xmm2,xmm6
858 punpcklbw xmm2,xmm1 858 punpcklbw xmm2,xmm1
859 punpckhbw xmm6,xmm1 859 punpckhbw xmm6,xmm1
860 movdqa [esp+40h],xmm2 860 movdqa [esp+40h],xmm2
861 movdqa [esp+0B0h],xmm6 861 movdqa [esp+0B0h],xmm6
862 movdqa xmm6,[esp+90h] 862 movdqa xmm6,[esp+90h]
863 movdqa xmm2,xmm7 863 movdqa xmm2,xmm7
864 punpckhbw xmm7,xmm1 864 punpckhbw xmm7,xmm1
865 punpckhbw xmm6,xmm1 865 punpckhbw xmm6,xmm1
866 punpcklbw xmm2,xmm1 866 punpcklbw xmm2,xmm1
867 punpcklbw xmm3,xmm1 867 punpcklbw xmm3,xmm1
868 punpcklbw xmm5,xmm1 868 punpcklbw xmm5,xmm1
869 movdqa [esp+0F0h],xmm7 869 movdqa [esp+0F0h],xmm7
870 movdqa [esp+0C0h],xmm6 870 movdqa [esp+0C0h],xmm6
871 movdqa xmm6, [esp+0A0h] 871 movdqa xmm6, [esp+0A0h]
872 punpckhbw xmm6,xmm1 872 punpckhbw xmm6,xmm1
873 movdqa [esp+0E0h],xmm6 873 movdqa [esp+0E0h],xmm6
874 mov edx,4 874 mov edx,4
875 movsx eax,dx 875 movsx eax,dx
876 movd xmm6,eax 876 movd xmm6,eax
877 movdqa xmm7,xmm6 877 movdqa xmm7,xmm6
878 punpcklwd xmm7,xmm6 878 punpcklwd xmm7,xmm6
879 pshufd xmm6,xmm7,0 879 pshufd xmm6,xmm7,0
880 movdqa [esp+30h],xmm6 880 movdqa [esp+30h],xmm6
881 movdqa xmm7, [esp+40h] 881 movdqa xmm7, [esp+40h]
882 psubw xmm7,xmm5 882 psubw xmm7,xmm5
883 movdqa xmm6,xmm0 883 movdqa xmm6,xmm0
884 pcmpgtw xmm6,xmm1 884 pcmpgtw xmm6,xmm1
885 movdqa [esp+60h],xmm6 885 movdqa [esp+60h],xmm6
886 movdqa xmm1, [esp+0D0h] 886 movdqa xmm1, [esp+0D0h]
887 movdqa xmm6,xmm3 887 movdqa xmm6,xmm3
888 psubw xmm6,xmm2 888 psubw xmm6,xmm2
889 psllw xmm6,2 889 psllw xmm6,2
890 paddw xmm6,xmm7 890 paddw xmm6,xmm7
891 paddw xmm6,[esp+30h] 891 paddw xmm6,[esp+30h]
892 psraw xmm6,3 892 psraw xmm6,3
893 pmaxsw xmm1,xmm6 893 pmaxsw xmm1,xmm6
894 movdqa xmm7,[esp+50h] 894 movdqa xmm7,[esp+50h]
895 movdqa [esp+20h],xmm0 895 movdqa [esp+20h],xmm0
896 movdqa xmm6, [esp+20h] 896 movdqa xmm6, [esp+20h]
897 pminsw xmm6,xmm1 897 pminsw xmm6,xmm1
898 movdqa [esp+20h],xmm6 898 movdqa [esp+20h],xmm6
899 movdqa xmm6,xmm4 899 movdqa xmm6,xmm4
900 movdqa xmm1,xmm2 900 movdqa xmm1,xmm2
901 psubw xmm1,xmm3 901 psubw xmm1,xmm3
902 pabsw xmm1,xmm1 902 pabsw xmm1,xmm1
903 pcmpgtw xmm6,xmm1 903 pcmpgtw xmm6,xmm1
904 movdqa xmm1, [esp+40h] 904 movdqa xmm1, [esp+40h]
905 psubw xmm1,xmm2 905 psubw xmm1,xmm2
906 pabsw xmm1,xmm1 906 pabsw xmm1,xmm1
907 pcmpgtw xmm7,xmm1 907 pcmpgtw xmm7,xmm1
908 movdqa xmm1, [esp+50h] 908 movdqa xmm1, [esp+50h]
909 pand xmm6,xmm7 909 pand xmm6,xmm7
910 movdqa xmm7, [esp+50h] 910 movdqa xmm7, [esp+50h]
911 psubw xmm5,xmm3 911 psubw xmm5,xmm3
912 pabsw xmm5,xmm5 912 pabsw xmm5,xmm5
913 pcmpgtw xmm1,xmm5 913 pcmpgtw xmm1,xmm5
914 movdqa xmm5, [esp+0B0h] 914 movdqa xmm5, [esp+0B0h]
915 psubw xmm5,[esp+0E0h] 915 psubw xmm5,[esp+0E0h]
916 pand xmm6,xmm1 916 pand xmm6,xmm1
917 pand xmm6, [esp+60h] 917 pand xmm6, [esp+60h]
918 movdqa xmm1, [esp+20h] 918 movdqa xmm1, [esp+20h]
919 pand xmm1,xmm6 919 pand xmm1,xmm6
920 movdqa xmm6, [esp+0C0h] 920 movdqa xmm6, [esp+0C0h]
921 movdqa [esp+40h],xmm1 921 movdqa [esp+40h],xmm1
922 movdqa xmm1, [esp+0F0h] 922 movdqa xmm1, [esp+0F0h]
923 psubw xmm6,xmm1 923 psubw xmm6,xmm1
924 psllw xmm6,2 924 psllw xmm6,2
925 paddw xmm6,xmm5 925 paddw xmm6,xmm5
926 paddw xmm6, [esp+30h] 926 paddw xmm6, [esp+30h]
927 movdqa xmm5, [esp+0D0h] 927 movdqa xmm5, [esp+0D0h]
928 psraw xmm6,3 928 psraw xmm6,3
929 pmaxsw xmm5,xmm6 929 pmaxsw xmm5,xmm6
930 pminsw xmm0,xmm5 930 pminsw xmm0,xmm5
931 movdqa xmm5,[esp+0C0h] 931 movdqa xmm5,[esp+0C0h]
932 movdqa xmm6,xmm1 932 movdqa xmm6,xmm1
933 psubw xmm6,xmm5 933 psubw xmm6,xmm5
934 pabsw xmm6,xmm6 934 pabsw xmm6,xmm6
935 pcmpgtw xmm4,xmm6 935 pcmpgtw xmm4,xmm6
936 movdqa xmm6,[esp+0B0h] 936 movdqa xmm6,[esp+0B0h]
937 psubw xmm6,xmm1 937 psubw xmm6,xmm1
938 pabsw xmm6,xmm6 938 pabsw xmm6,xmm6
939 pcmpgtw xmm7,xmm6 939 pcmpgtw xmm7,xmm6
940 movdqa xmm6, [esp+0E0h] 940 movdqa xmm6, [esp+0E0h]
941 pand xmm4,xmm7 941 pand xmm4,xmm7
942 movdqa xmm7, [esp+50h] 942 movdqa xmm7, [esp+50h]
943 psubw xmm6,xmm5 943 psubw xmm6,xmm5
944 pabsw xmm6,xmm6 944 pabsw xmm6,xmm6
945 pcmpgtw xmm7,xmm6 945 pcmpgtw xmm7,xmm6
946 pand xmm4,xmm7 946 pand xmm4,xmm7
947 pand xmm4,[esp+60h] 947 pand xmm4,[esp+60h]
948 pand xmm0,xmm4 948 pand xmm0,xmm4
949 movdqa xmm4, [esp+40h] 949 movdqa xmm4, [esp+40h]
950 paddw xmm2,xmm4 950 paddw xmm2,xmm4
951 paddw xmm1,xmm0 951 paddw xmm1,xmm0
952 psubw xmm3,xmm4 952 psubw xmm3,xmm4
953 psubw xmm5,xmm0 953 psubw xmm5,xmm0
954 packuswb xmm2,xmm1 954 packuswb xmm2,xmm1
955 packuswb xmm3,xmm5 955 packuswb xmm3,xmm5
956 movdqa [esp+80h],xmm2 956 movdqa [esp+80h],xmm2
957 movdqa [esp+90h],xmm3 957 movdqa [esp+90h],xmm3
958 mov esi,dword [esp+1Ch] 958 mov esi,dword [esp+1Ch]
959 movdqa xmm0, [esi] 959 movdqa xmm0, [esi]
960 movdqa xmm1, [esi+10h] 960 movdqa xmm1, [esi+10h]
961 movdqa xmm2, [esi+20h] 961 movdqa xmm2, [esi+20h]
962 movdqa xmm3, [esi+30h] 962 movdqa xmm3, [esi+30h]
963 movdqa xmm6,xmm0 963 movdqa xmm6,xmm0
964 punpcklbw xmm0,xmm1 964 punpcklbw xmm0,xmm1
965 punpckhbw xmm6,xmm1 965 punpckhbw xmm6,xmm1
966 movdqa xmm7,xmm2 966 movdqa xmm7,xmm2
967 punpcklbw xmm2,xmm3 967 punpcklbw xmm2,xmm3
968 punpckhbw xmm7,xmm3 968 punpckhbw xmm7,xmm3
969 movdqa xmm4,xmm0 969 movdqa xmm4,xmm0
970 movdqa xmm5,xmm6 970 movdqa xmm5,xmm6
971 punpcklwd xmm0,xmm2 971 punpcklwd xmm0,xmm2
972 punpckhwd xmm4,xmm2 972 punpckhwd xmm4,xmm2
973 punpcklwd xmm6,xmm7 973 punpcklwd xmm6,xmm7
974 punpckhwd xmm5,xmm7 974 punpckhwd xmm5,xmm7
975 movdqa xmm1,xmm0 975 movdqa xmm1,xmm0
976 movdqa xmm2,xmm4 976 movdqa xmm2,xmm4
977 punpckldq xmm0,xmm6 977 punpckldq xmm0,xmm6
978 punpckhdq xmm1,xmm6 978 punpckhdq xmm1,xmm6
979 punpckldq xmm4,xmm5 979 punpckldq xmm4,xmm5
980 punpckhdq xmm2,xmm5 980 punpckhdq xmm2,xmm5
981 movdqa xmm5,xmm0 981 movdqa xmm5,xmm0
982 movdqa xmm6,xmm1 982 movdqa xmm6,xmm1
983 punpcklqdq xmm0,xmm4 983 punpcklqdq xmm0,xmm4
984 punpckhqdq xmm5,xmm4 984 punpckhqdq xmm5,xmm4
985 punpcklqdq xmm1,xmm2 985 punpcklqdq xmm1,xmm2
986 punpckhqdq xmm6,xmm2 986 punpckhqdq xmm6,xmm2
987 mov esi,dword [esp+14h] 987 mov esi,dword [esp+14h]
988 mov ecx,dword [ebp+10h] 988 mov ecx,dword [ebp+10h]
989 mov edx,dword [esp+0Ch] 989 mov edx,dword [esp+0Ch]
990 mov edi,dword [esp+8] 990 mov edi,dword [esp+8]
991 movd dword [esi],xmm0 991 movd dword [esi],xmm0
992 movd dword [esi+ecx],xmm5 992 movd dword [esi+ecx],xmm5
993 movd dword [esi+ecx*2],xmm1 993 movd dword [esi+ecx*2],xmm1
994 movd dword [esi+edx],xmm6 994 movd dword [esi+edx],xmm6
995 psrldq xmm0,4 995 psrldq xmm0,4
996 psrldq xmm5,4 996 psrldq xmm5,4
997 psrldq xmm1,4 997 psrldq xmm1,4
998 psrldq xmm6,4 998 psrldq xmm6,4
999 mov esi,dword [esp+18h] 999 mov esi,dword [esp+18h]
1000 movd dword [edi],xmm0 1000 movd dword [edi],xmm0
1001 movd dword [edi+ecx],xmm5 1001 movd dword [edi+ecx],xmm5
1002 movd dword [edi+ecx*2],xmm1 1002 movd dword [edi+ecx*2],xmm1
1003 movd dword [edi+edx],xmm6 1003 movd dword [edi+edx],xmm6
1004 psrldq xmm0,4 1004 psrldq xmm0,4
1005 psrldq xmm5,4 1005 psrldq xmm5,4
1006 psrldq xmm1,4 1006 psrldq xmm1,4
1007 psrldq xmm6,4 1007 psrldq xmm6,4
1008 movd dword [esi],xmm0 1008 movd dword [esi],xmm0
1009 movd dword [esi+ecx],xmm5 1009 movd dword [esi+ecx],xmm5
1010 movd dword [esi+ecx*2],xmm1 1010 movd dword [esi+ecx*2],xmm1
1011 movd dword [esi+edx],xmm6 1011 movd dword [esi+edx],xmm6
1012 psrldq xmm0,4 1012 psrldq xmm0,4
1013 psrldq xmm5,4 1013 psrldq xmm5,4
1014 psrldq xmm1,4 1014 psrldq xmm1,4
1015 psrldq xmm6,4 1015 psrldq xmm6,4
1016 mov edi,dword [esp+10h] 1016 mov edi,dword [esp+10h]
1017 movd dword [edi],xmm0 1017 movd dword [edi],xmm0
1018 movd dword [edi+ecx],xmm5 1018 movd dword [edi+ecx],xmm5
1019 movd dword [edi+ecx*2],xmm1 1019 movd dword [edi+ecx*2],xmm1
1020 movd dword [edi+edx],xmm6 1020 movd dword [edi+edx],xmm6
1021 pop edi 1021 pop edi
1022 pop esi 1022 pop esi
1023 mov esp,ebp 1023 mov esp,ebp
1024 pop ebp 1024 pop ebp
1025 ret 1025 ret
1026 1026
1027 1027
1028 1028
1029;*******************************************************************************1029;*******************************************************************************
1030; void DeblockLumaLt4V_sse2(uint8_t * pPix, int32_t iStride, int32_t iAlpha, 1030; void DeblockLumaLt4V_sse2(uint8_t * pPix, int32_t iStride, int32_t iAlpha,
1031; int32_t iBeta, int8_t * pTC)1031; int32_t iBeta, int8_t * pTC)
1032;*******************************************************************************1032;*******************************************************************************
1033 1033
1034 1034
1035WELS_EXTERN DeblockLumaLt4V_sse21035WELS_EXTERN DeblockLumaLt4V_sse2
1036 1036
1037ALIGN 161037ALIGN 16
1038 1038
1039DeblockLumaLt4V_sse2:1039DeblockLumaLt4V_sse2:
1040 push ebp1040 push ebp
1041 mov ebp, esp1041 mov ebp, esp
1042 and esp, -16 ; fffffff0H1042 and esp, -16 ; fffffff0H
1043 sub esp, 420 ; 000001a4H1043 sub esp, 420 ; 000001a4H
1044 mov eax, dword [ebp+8]1044 mov eax, dword [ebp+8]
1045 mov ecx, dword [ebp+12]1045 mov ecx, dword [ebp+12]
1046 1046
1047 pxor xmm0, xmm01047 pxor xmm0, xmm0
1048 push ebx1048 push ebx
1049 mov edx, dword [ebp+24]1049 mov edx, dword [ebp+24]
1050 movdqa [esp+424-384], xmm01050 movdqa [esp+424-384], xmm0
1051 push esi1051 push esi
1052 1052
1053 lea esi, [ecx+ecx*2]1053 lea esi, [ecx+ecx*2]
1054 push edi1054 push edi
1055 mov edi, eax1055 mov edi, eax
1056 sub edi, esi1056 sub edi, esi
1057 movdqa xmm0, [edi]1057 movdqa xmm0, [edi]
1058 1058
1059 lea esi, [ecx+ecx]1059 lea esi, [ecx+ecx]
1060 movdqa [esp+432-208], xmm01060 movdqa [esp+432-208], xmm0
1061 mov edi, eax1061 mov edi, eax
1062 sub edi, esi1062 sub edi, esi
1063 movdqa xmm0, [edi]1063 movdqa xmm0, [edi]
1064 movdqa [esp+448-208], xmm01064 movdqa [esp+448-208], xmm0
1065 1065
1066 mov ebx, eax1066 mov ebx, eax
1067 sub ebx, ecx1067 sub ebx, ecx
1068 movdqa xmm0, [ebx]1068 movdqa xmm0, [ebx]
1069 movdqa [esp+464-208], xmm01069 movdqa [esp+464-208], xmm0
1070 1070
1071 movdqa xmm0, [eax]1071 movdqa xmm0, [eax]
1072 1072
1073 add ecx, eax1073 add ecx, eax
1074 movdqa [esp+480-208], xmm01074 movdqa [esp+480-208], xmm0
1075 movdqa xmm0, [ecx]1075 movdqa xmm0, [ecx]
1076 mov dword [esp+432-404], ecx1076 mov dword [esp+432-404], ecx
1077 1077
1078 movsx ecx, word [ebp+16]1078 movsx ecx, word [ebp+16]
1079 movdqa [esp+496-208], xmm01079 movdqa [esp+496-208], xmm0
1080 movdqa xmm0, [esi+eax]1080 movdqa xmm0, [esi+eax]
1081 1081
1082 movsx si, byte [edx]1082 movsx si, byte [edx]
1083 movdqa [esp+512-208], xmm01083 movdqa [esp+512-208], xmm0
1084 movd xmm0, ecx1084 movd xmm0, ecx
1085 movsx ecx, word [ebp+20]1085 movsx ecx, word [ebp+20]
1086 movdqa xmm1, xmm01086 movdqa xmm1, xmm0
1087 punpcklwd xmm1, xmm01087 punpcklwd xmm1, xmm0
1088 pshufd xmm0, xmm1, 01088 pshufd xmm0, xmm1, 0
1089 movdqa [esp+432-112], xmm01089 movdqa [esp+432-112], xmm0
1090 movd xmm0, ecx1090 movd xmm0, ecx
1091 movsx cx, byte [edx+1]1091 movsx cx, byte [edx+1]
1092 movdqa xmm1, xmm01092 movdqa xmm1, xmm0
1093 punpcklwd xmm1, xmm01093 punpcklwd xmm1, xmm0
1094 mov dword [esp+432-408], ebx1094 mov dword [esp+432-408], ebx
1095 movzx ebx, cx1095 movzx ebx, cx
1096 pshufd xmm0, xmm1, 01096 pshufd xmm0, xmm1, 0
1097 movd xmm1, ebx1097 movd xmm1, ebx
1098 movzx ebx, cx1098 movzx ebx, cx
1099 movd xmm2, ebx1099 movd xmm2, ebx
1100 movzx ebx, cx1100 movzx ebx, cx
1101 movzx ecx, cx1101 movzx ecx, cx
1102 movd xmm4, ecx1102 movd xmm4, ecx
1103 movzx ecx, si1103 movzx ecx, si
1104 movd xmm5, ecx1104 movd xmm5, ecx
1105 movzx ecx, si1105 movzx ecx, si
1106 movd xmm6, ecx1106 movd xmm6, ecx
1107 movzx ecx, si1107 movzx ecx, si
1108 movd xmm7, ecx1108 movd xmm7, ecx
1109 movzx ecx, si1109 movzx ecx, si
1110 movdqa [esp+432-336], xmm01110 movdqa [esp+432-336], xmm0
1111 movd xmm0, ecx1111 movd xmm0, ecx
1112 1112
1113 movsx cx, byte [edx+3]1113 movsx cx, byte [edx+3]
1114 movsx dx, byte [edx+2]1114 movsx dx, byte [edx+2]
1115 movd xmm3, ebx1115 movd xmm3, ebx
1116 punpcklwd xmm0, xmm41116 punpcklwd xmm0, xmm4
1117 movzx esi, cx1117 movzx esi, cx
1118 punpcklwd xmm6, xmm21118 punpcklwd xmm6, xmm2
1119 punpcklwd xmm5, xmm11119 punpcklwd xmm5, xmm1
1120 punpcklwd xmm0, xmm61120 punpcklwd xmm0, xmm6
1121 punpcklwd xmm7, xmm31121 punpcklwd xmm7, xmm3
1122 punpcklwd xmm7, xmm51122 punpcklwd xmm7, xmm5
1123 punpcklwd xmm0, xmm71123 punpcklwd xmm0, xmm7
1124 movdqa [esp+432-400], xmm01124 movdqa [esp+432-400], xmm0
1125 movd xmm0, esi1125 movd xmm0, esi
1126 movzx esi, cx1126 movzx esi, cx
1127 movd xmm2, esi1127 movd xmm2, esi
1128 movzx esi, cx1128 movzx esi, cx
1129 movzx ecx, cx1129 movzx ecx, cx
1130 movd xmm4, ecx1130 movd xmm4, ecx
1131 movzx ecx, dx1131 movzx ecx, dx
1132 movd xmm3, esi1132 movd xmm3, esi
1133 movd xmm5, ecx1133 movd xmm5, ecx
1134 punpcklwd xmm5, xmm01134 punpcklwd xmm5, xmm0
1135 1135
1136 movdqa xmm0, [esp+432-384]1136 movdqa xmm0, [esp+432-384]
1137 movzx ecx, dx1137 movzx ecx, dx
1138 movd xmm6, ecx1138 movd xmm6, ecx
1139 movzx ecx, dx1139 movzx ecx, dx
1140 movzx edx, dx1140 movzx edx, dx
1141 punpcklwd xmm6, xmm21141 punpcklwd xmm6, xmm2
1142 movd xmm7, ecx1142 movd xmm7, ecx
1143 movd xmm1, edx1143 movd xmm1, edx
1144 1144
1145 movdqa xmm2, [esp+448-208]1145 movdqa xmm2, [esp+448-208]
1146 punpcklbw xmm2, xmm01146 punpcklbw xmm2, xmm0
1147 1147
1148 mov ecx, 41148 mov ecx, 4
1149 movsx edx, cx1149 movsx edx, cx
1150 punpcklwd xmm7, xmm31150 punpcklwd xmm7, xmm3
1151 punpcklwd xmm7, xmm51151 punpcklwd xmm7, xmm5
1152 movdqa xmm5, [esp+496-208]1152 movdqa xmm5, [esp+496-208]
1153 movdqa xmm3, [esp+464-208]1153 movdqa xmm3, [esp+464-208]
1154 punpcklbw xmm5, xmm01154 punpcklbw xmm5, xmm0
1155 movdqa [esp+432-240], xmm51155 movdqa [esp+432-240], xmm5
1156 movdqa xmm5, [esp+512-208]1156 movdqa xmm5, [esp+512-208]
1157 punpcklbw xmm5, xmm01157 punpcklbw xmm5, xmm0
1158 movdqa [esp+432-352], xmm51158 movdqa [esp+432-352], xmm5
1159 punpcklwd xmm1, xmm41159 punpcklwd xmm1, xmm4
1160 movdqa xmm4, [esp+432-208]1160 movdqa xmm4, [esp+432-208]
1161 punpcklwd xmm1, xmm61161 punpcklwd xmm1, xmm6
1162 movdqa xmm6, [esp+480-208]1162 movdqa xmm6, [esp+480-208]
1163 punpcklwd xmm1, xmm71163 punpcklwd xmm1, xmm7
1164 punpcklbw xmm6, xmm01164 punpcklbw xmm6, xmm0
1165 punpcklbw xmm3, xmm01165 punpcklbw xmm3, xmm0
1166 punpcklbw xmm4, xmm01166 punpcklbw xmm4, xmm0
1167 movdqa xmm7, xmm31167 movdqa xmm7, xmm3
1168 psubw xmm7, xmm41168 psubw xmm7, xmm4
1169 pabsw xmm7, xmm71169 pabsw xmm7, xmm7
1170 movdqa [esp+432-272], xmm41170 movdqa [esp+432-272], xmm4
1171 movdqa xmm4, [esp+432-336]1171 movdqa xmm4, [esp+432-336]
1172 movdqa xmm5, xmm41172 movdqa xmm5, xmm4
1173 pcmpgtw xmm5, xmm71173 pcmpgtw xmm5, xmm7
1174 movdqa [esp+432-288], xmm51174 movdqa [esp+432-288], xmm5
1175 movdqa xmm7, xmm61175 movdqa xmm7, xmm6
1176 psubw xmm7, [esp+432-352]1176 psubw xmm7, [esp+432-352]
1177 pabsw xmm7, xmm71177 pabsw xmm7, xmm7
1178 movdqa xmm5, xmm41178 movdqa xmm5, xmm4
1179 pcmpgtw xmm5, xmm71179 pcmpgtw xmm5, xmm7
1180 movdqa [esp+432-256], xmm51180 movdqa [esp+432-256], xmm5
1181 movdqa xmm5, xmm31181 movdqa xmm5, xmm3
1182 pavgw xmm5, xmm61182 pavgw xmm5, xmm6
1183 movdqa [esp+432-304], xmm51183 movdqa [esp+432-304], xmm5
1184 movdqa xmm5, [esp+432-400]1184 movdqa xmm5, [esp+432-400]
1185 psubw xmm5, [esp+432-288]1185 psubw xmm5, [esp+432-288]
1186 psubw xmm5, [esp+432-256]1186 psubw xmm5, [esp+432-256]
1187 movdqa [esp+432-224], xmm51187 movdqa [esp+432-224], xmm5
1188 movdqa xmm5, xmm61188 movdqa xmm5, xmm6
1189 psubw xmm5, xmm31189 psubw xmm5, xmm3
1190 movdqa [esp+432-32], xmm61190 movdqa [esp+432-32], xmm6
1191 psubw xmm6, [esp+432-240]1191 psubw xmm6, [esp+432-240]
1192 movdqa xmm7, xmm51192 movdqa xmm7, xmm5
1193 movdqa [esp+432-384], xmm51193 movdqa [esp+432-384], xmm5
1194 movdqa xmm5, [esp+432-112]1194 movdqa xmm5, [esp+432-112]
1195 pabsw xmm7, xmm71195 pabsw xmm7, xmm7
1196 pcmpgtw xmm5, xmm71196 pcmpgtw xmm5, xmm7
1197 pabsw xmm6, xmm61197 pabsw xmm6, xmm6
1198 movdqa xmm7, xmm41198 movdqa xmm7, xmm4
1199 pcmpgtw xmm7, xmm61199 pcmpgtw xmm7, xmm6
1200 1200
1201 pand xmm5, xmm71201 pand xmm5, xmm7
1202 movdqa xmm6, xmm31202 movdqa xmm6, xmm3
1203 psubw xmm6, xmm21203 psubw xmm6, xmm2
1204 pabsw xmm6, xmm61204 pabsw xmm6, xmm6
1205 movdqa xmm7, xmm41205 movdqa xmm7, xmm4
1206 pcmpgtw xmm7, xmm61206 pcmpgtw xmm7, xmm6
1207 movdqa xmm6, [esp+432-400]1207 movdqa xmm6, [esp+432-400]
1208 pand xmm5, xmm71208 pand xmm5, xmm7
1209 movdqa xmm7, xmm61209 movdqa xmm7, xmm6
1210 pcmpeqw xmm6, xmm01210 pcmpeqw xmm6, xmm0
1211 pcmpgtw xmm7, xmm01211 pcmpgtw xmm7, xmm0
1212 por xmm7, xmm61212 por xmm7, xmm6
1213 pand xmm5, xmm71213 pand xmm5, xmm7
1214 movdqa [esp+432-320], xmm51214 movdqa [esp+432-320], xmm5
1215 movd xmm5, edx1215 movd xmm5, edx
1216 movdqa xmm6, xmm51216 movdqa xmm6, xmm5
1217 punpcklwd xmm6, xmm51217 punpcklwd xmm6, xmm5
1218 pshufd xmm5, xmm6, 01218 pshufd xmm5, xmm6, 0
1219 movdqa [esp+432-336], xmm51219 movdqa [esp+432-336], xmm5
1220 movdqa xmm5, [esp+432-224]1220 movdqa xmm5, [esp+432-224]
1221 movdqa [esp+432-368], xmm51221 movdqa [esp+432-368], xmm5
1222 movdqa xmm6, xmm01222 movdqa xmm6, xmm0
1223 psubw xmm6, xmm51223 psubw xmm6, xmm5
1224 movdqa xmm5, [esp+432-384]1224 movdqa xmm5, [esp+432-384]
1225 psllw xmm5, 21225 psllw xmm5, 2
1226 movdqa xmm7, xmm21226 movdqa xmm7, xmm2
1227 psubw xmm7, [esp+432-240]1227 psubw xmm7, [esp+432-240]
1228 paddw xmm7, xmm51228 paddw xmm7, xmm5
1229 paddw xmm7, [esp+432-336]1229 paddw xmm7, [esp+432-336]
1230 movdqa xmm5, [esp+432-368]1230 movdqa xmm5, [esp+432-368]
1231 psraw xmm7, 31231 psraw xmm7, 3
1232 pmaxsw xmm6, xmm71232 pmaxsw xmm6, xmm7
1233 pminsw xmm5, xmm61233 pminsw xmm5, xmm6
1234 1234
1235 pand xmm5, [esp+432-320]1235 pand xmm5, [esp+432-320]
1236 movdqa xmm6, [esp+432-400]1236 movdqa xmm6, [esp+432-400]
1237 movdqa [esp+432-64], xmm51237 movdqa [esp+432-64], xmm5
1238 movdqa [esp+432-384], xmm61238 movdqa [esp+432-384], xmm6
1239 movdqa xmm5, xmm01239 movdqa xmm5, xmm0
1240 psubw xmm5, xmm61240 psubw xmm5, xmm6
1241 movdqa [esp+432-368], xmm51241 movdqa [esp+432-368], xmm5
1242 movdqa xmm6, xmm51242 movdqa xmm6, xmm5
1243 movdqa xmm5, [esp+432-272]1243 movdqa xmm5, [esp+432-272]
1244 paddw xmm5, [esp+432-304]1244 paddw xmm5, [esp+432-304]
1245 movdqa xmm7, xmm21245 movdqa xmm7, xmm2
1246 paddw xmm7, xmm21246 paddw xmm7, xmm2
1247 psubw xmm5, xmm71247 psubw xmm5, xmm7
1248 psraw xmm5, 11248 psraw xmm5, 1
1249 pmaxsw xmm6, xmm51249 pmaxsw xmm6, xmm5
1250 movdqa xmm5, [esp+432-384]1250 movdqa xmm5, [esp+432-384]
1251 pminsw xmm5, xmm61251 pminsw xmm5, xmm6
1252 1252
1253 pand xmm5, [esp+432-320]1253 pand xmm5, [esp+432-320]
1254 pand xmm5, [esp+432-288]1254 pand xmm5, [esp+432-288]
1255 movdqa xmm6, [esp+432-240]1255 movdqa xmm6, [esp+432-240]
1256 movdqa [esp+432-96], xmm51256 movdqa [esp+432-96], xmm5
1257 movdqa xmm5, [esp+432-352]1257 movdqa xmm5, [esp+432-352]
1258 paddw xmm5, [esp+432-304]1258 paddw xmm5, [esp+432-304]
1259 movdqa xmm7, xmm61259 movdqa xmm7, xmm6
1260 paddw xmm7, xmm61260 paddw xmm7, xmm6
1261 movdqa xmm6, [esp+432-368]1261 movdqa xmm6, [esp+432-368]
1262 psubw xmm5, xmm71262 psubw xmm5, xmm7
1263 1263
1264 movdqa xmm7, [esp+496-208]1264 movdqa xmm7, [esp+496-208]
1265 psraw xmm5, 11265 psraw xmm5, 1
1266 pmaxsw xmm6, xmm51266 pmaxsw xmm6, xmm5
1267 movdqa xmm5, [esp+432-400]1267 movdqa xmm5, [esp+432-400]
1268 pminsw xmm5, xmm61268 pminsw xmm5, xmm6
1269 pand xmm5, [esp+432-320]1269 pand xmm5, [esp+432-320]
1270 pand xmm5, [esp+432-256]1270 pand xmm5, [esp+432-256]
1271 movdqa xmm6, [esp+448-208]1271 movdqa xmm6, [esp+448-208]
1272 punpckhbw xmm7, xmm01272 punpckhbw xmm7, xmm0
1273 movdqa [esp+432-352], xmm71273 movdqa [esp+432-352], xmm7
1274 1274
1275 movdqa xmm7, [esp+512-208]1275 movdqa xmm7, [esp+512-208]
1276 punpckhbw xmm6, xmm01276 punpckhbw xmm6, xmm0
1277 movdqa [esp+432-48], xmm51277 movdqa [esp+432-48], xmm5
1278 movdqa xmm5, [esp+432-208]1278 movdqa xmm5, [esp+432-208]
1279 movdqa [esp+432-368], xmm61279 movdqa [esp+432-368], xmm6
1280 movdqa xmm6, [esp+464-208]1280 movdqa xmm6, [esp+464-208]
1281 punpckhbw xmm7, xmm01281 punpckhbw xmm7, xmm0
1282 punpckhbw xmm5, xmm01282 punpckhbw xmm5, xmm0
1283 movdqa [esp+432-384], xmm71283 movdqa [esp+432-384], xmm7
1284 punpckhbw xmm6, xmm01284 punpckhbw xmm6, xmm0
1285 movdqa [esp+432-400], xmm61285 movdqa [esp+432-400], xmm6
1286 1286
1287 movdqa xmm7, [esp+432-400]1287 movdqa xmm7, [esp+432-400]
1288 movdqa xmm6, [esp+480-208]1288 movdqa xmm6, [esp+480-208]
1289 psubw xmm7, xmm51289 psubw xmm7, xmm5
1290 movdqa [esp+432-16], xmm51290 movdqa [esp+432-16], xmm5
1291 pabsw xmm7, xmm71291 pabsw xmm7, xmm7
1292 punpckhbw xmm6, xmm01292 punpckhbw xmm6, xmm0
1293 movdqa xmm5, xmm41293 movdqa xmm5, xmm4
1294 pcmpgtw xmm5, xmm71294 pcmpgtw xmm5, xmm7
1295 movdqa [esp+432-288], xmm51295 movdqa [esp+432-288], xmm5
1296 1296
1297 movdqa xmm7, xmm61297 movdqa xmm7, xmm6
1298 psubw xmm7, [esp+432-384]1298 psubw xmm7, [esp+432-384]
1299 pabsw xmm7, xmm71299 pabsw xmm7, xmm7
1300 movdqa xmm5, xmm41300 movdqa xmm5, xmm4
1301 pcmpgtw xmm5, xmm71301 pcmpgtw xmm5, xmm7
1302 movdqa [esp+432-256], xmm51302 movdqa [esp+432-256], xmm5
1303 1303
1304 movdqa xmm5, [esp+432-400]1304 movdqa xmm5, [esp+432-400]
1305 movdqa [esp+432-80], xmm61305 movdqa [esp+432-80], xmm6
1306 pavgw xmm5, xmm61306 pavgw xmm5, xmm6
1307 movdqa [esp+432-304], xmm51307 movdqa [esp+432-304], xmm5
1308 1308
1309 movdqa xmm5, xmm11309 movdqa xmm5, xmm1
1310 psubw xmm5, [esp+432-288]1310 psubw xmm5, [esp+432-288]
1311 psubw xmm5, [esp+432-256]1311 psubw xmm5, [esp+432-256]
1312 movdqa [esp+432-224], xmm51312 movdqa [esp+432-224], xmm5
1313 movdqa xmm5, xmm61313 movdqa xmm5, xmm6
1314 psubw xmm5, [esp+432-400]1314 psubw xmm5, [esp+432-400]
1315 psubw xmm6, [esp+432-352]1315 psubw xmm6, [esp+432-352]
1316 movdqa [esp+432-272], xmm51316 movdqa [esp+432-272], xmm5
1317 movdqa xmm7, xmm51317 movdqa xmm7, xmm5
1318 movdqa xmm5, [esp+432-112]1318 movdqa xmm5, [esp+432-112]
1319 pabsw xmm7, xmm71319 pabsw xmm7, xmm7
1320 pcmpgtw xmm5, xmm71320 pcmpgtw xmm5, xmm7
1321 movdqa xmm7, xmm41321 movdqa xmm7, xmm4
1322 pabsw xmm6, xmm61322 pabsw xmm6, xmm6
1323 pcmpgtw xmm7, xmm61323 pcmpgtw xmm7, xmm6
1324 movdqa xmm6, [esp+432-368]1324 movdqa xmm6, [esp+432-368]
1325 1325
1326 pand xmm5, xmm71326 pand xmm5, xmm7
1327 movdqa xmm7, [esp+432-400]1327 movdqa xmm7, [esp+432-400]
1328 psubw xmm7, xmm61328 psubw xmm7, xmm6
1329 psubw xmm6, [esp+432-352]1329 psubw xmm6, [esp+432-352]
1330 pabsw xmm7, xmm71330 pabsw xmm7, xmm7
1331 pcmpgtw xmm4, xmm71331 pcmpgtw xmm4, xmm7
1332 pand xmm5, xmm41332 pand xmm5, xmm4
1333 1333
1334 paddw xmm2, [esp+432-96]1334 paddw xmm2, [esp+432-96]
1335 movdqa xmm4, xmm11335 movdqa xmm4, xmm1
1336 pcmpgtw xmm4, xmm01336 pcmpgtw xmm4, xmm0
1337 movdqa xmm7, xmm11337 movdqa xmm7, xmm1
1338 pcmpeqw xmm7, xmm01338 pcmpeqw xmm7, xmm0
1339 por xmm4, xmm71339 por xmm4, xmm7
1340 pand xmm5, xmm41340 pand xmm5, xmm4
1341 movdqa xmm4, [esp+432-224]1341 movdqa xmm4, [esp+432-224]
1342 movdqa [esp+432-320], xmm51342 movdqa [esp+432-320], xmm5
1343 movdqa xmm5, [esp+432-272]1343 movdqa xmm5, [esp+432-272]
1344 movdqa xmm7, xmm01344 movdqa xmm7, xmm0
1345 psubw xmm7, xmm41345 psubw xmm7, xmm4
1346 psubw xmm0, xmm11346 psubw xmm0, xmm1
1347 psllw xmm5, 21347 psllw xmm5, 2
1348 paddw xmm6, xmm51348 paddw xmm6, xmm5
1349 paddw xmm6, [esp+432-336]1349 paddw xmm6, [esp+432-336]
1350 movdqa xmm5, [esp+432-368]1350 movdqa xmm5, [esp+432-368]
1351 movdqa [esp+432-336], xmm01351 movdqa [esp+432-336], xmm0
1352 psraw xmm6, 31352 psraw xmm6, 3
1353 pmaxsw xmm7, xmm61353 pmaxsw xmm7, xmm6
1354 pminsw xmm4, xmm71354 pminsw xmm4, xmm7
1355 pand xmm4, [esp+432-320]1355 pand xmm4, [esp+432-320]
1356 movdqa xmm6, xmm01356 movdqa xmm6, xmm0
1357 movdqa xmm0, [esp+432-16]1357 movdqa xmm0, [esp+432-16]
1358 paddw xmm0, [esp+432-304]1358 paddw xmm0, [esp+432-304]
1359 movdqa [esp+432-272], xmm41359 movdqa [esp+432-272], xmm4
1360 movdqa xmm4, [esp+432-368]1360 movdqa xmm4, [esp+432-368]
1361 paddw xmm4, xmm41361 paddw xmm4, xmm4
1362 psubw xmm0, xmm41362 psubw xmm0, xmm4
1363 1363
1364 movdqa xmm4, [esp+432-64]1364 movdqa xmm4, [esp+432-64]
1365 psraw xmm0, 11365 psraw xmm0, 1
1366 pmaxsw xmm6, xmm01366 pmaxsw xmm6, xmm0
1367 movdqa xmm0, [esp+432-400]1367 movdqa xmm0, [esp+432-400]
1368 movdqa xmm7, xmm11368 movdqa xmm7, xmm1
1369 pminsw xmm7, xmm61369 pminsw xmm7, xmm6
1370 movdqa xmm6, [esp+432-320]1370 movdqa xmm6, [esp+432-320]
1371 pand xmm7, xmm61371 pand xmm7, xmm6
1372 pand xmm7, [esp+432-288]1372 pand xmm7, [esp+432-288]
1373 paddw xmm5, xmm71373 paddw xmm5, xmm7
1374 packuswb xmm2, xmm51374 packuswb xmm2, xmm5
1375 movdqa xmm5, [esp+432-272]1375 movdqa xmm5, [esp+432-272]
1376 paddw xmm0, xmm51376 paddw xmm0, xmm5
1377 paddw xmm3, xmm41377 paddw xmm3, xmm4
1378 packuswb xmm3, xmm01378 packuswb xmm3, xmm0
1379 1379
1380 movdqa xmm0, [esp+432-32]1380 movdqa xmm0, [esp+432-32]
1381 psubw xmm0, xmm41381 psubw xmm0, xmm4
1382 movdqa xmm4, [esp+432-80]1382 movdqa xmm4, [esp+432-80]
1383 psubw xmm4, xmm51383 psubw xmm4, xmm5
1384 1384
1385 movdqa xmm5, [esp+432-240]1385 movdqa xmm5, [esp+432-240]
1386 paddw xmm5, [esp+432-48]1386 paddw xmm5, [esp+432-48]
1387 packuswb xmm0, xmm41387 packuswb xmm0, xmm4
1388 movdqa xmm4, [esp+432-384]1388 movdqa xmm4, [esp+432-384]
1389 paddw xmm4, [esp+432-304]1389 paddw xmm4, [esp+432-304]
1390 movdqa [esp+480-208], xmm01390 movdqa [esp+480-208], xmm0
1391 movdqa xmm0, [esp+432-352]1391 movdqa xmm0, [esp+432-352]
1392 movdqa xmm7, xmm01392 movdqa xmm7, xmm0
1393 paddw xmm0, xmm01393 paddw xmm0, xmm0
1394 1394
1395 mov ecx, dword [esp+432-408]1395 mov ecx, dword [esp+432-408]
1396 1396
1397 mov edx, dword [esp+432-404]1397 mov edx, dword [esp+432-404]
1398 psubw xmm4, xmm01398 psubw xmm4, xmm0
1399 movdqa xmm0, [esp+432-336]1399 movdqa xmm0, [esp+432-336]
1400 movdqa [edi], xmm21400 movdqa [edi], xmm2
1401 psraw xmm4, 11401 psraw xmm4, 1
1402 pmaxsw xmm0, xmm41402 pmaxsw xmm0, xmm4
1403 pminsw xmm1, xmm01403 pminsw xmm1, xmm0
1404 movdqa xmm0, [esp+480-208]1404 movdqa xmm0, [esp+480-208]
1405 1405
1406 pop edi1406 pop edi
1407 pand xmm1, xmm61407 pand xmm1, xmm6
1408 pand xmm1, [esp+428-256]1408 pand xmm1, [esp+428-256]
1409 movdqa [ecx], xmm31409 movdqa [ecx], xmm3
1410 paddw xmm7, xmm11410 paddw xmm7, xmm1
1411 pop esi1411 pop esi
1412 packuswb xmm5, xmm71412 packuswb xmm5, xmm7
1413 movdqa [eax], xmm01413 movdqa [eax], xmm0
1414 movdqa [edx], xmm51414 movdqa [edx], xmm5
1415 pop ebx1415 pop ebx
1416 mov esp, ebp1416 mov esp, ebp
1417 pop ebp1417 pop ebp
1418 ret1418 ret
1419 1419
1420 1420
1421;*******************************************************************************1421;*******************************************************************************
1422; void DeblockLumaEq4V_sse2(uint8_t * pPix, int32_t iStride, int32_t iAlpha, 1422; void DeblockLumaEq4V_sse2(uint8_t * pPix, int32_t iStride, int32_t iAlpha,
1423; int32_t iBeta)1423; int32_t iBeta)
1424;*******************************************************************************1424;*******************************************************************************
1425 1425
1426WELS_EXTERN DeblockLumaEq4V_sse21426WELS_EXTERN DeblockLumaEq4V_sse2
1427 1427
1428ALIGN 161428ALIGN 16
1429 1429
1430DeblockLumaEq4V_sse2:1430DeblockLumaEq4V_sse2:
1431 1431
1432 push ebp1432 push ebp
1433 mov ebp, esp1433 mov ebp, esp
1434 and esp, -16 ; fffffff0H1434 and esp, -16 ; fffffff0H
1435 sub esp, 628 ; 00000274H1435 sub esp, 628 ; 00000274H
1436 mov eax, dword [ebp+8]1436 mov eax, dword [ebp+8]
1437 mov ecx, dword [ebp+12]1437 mov ecx, dword [ebp+12]
1438 push ebx1438 push ebx
1439 push esi1439 push esi
1440 1440
1441 lea edx, [ecx*4]1441 lea edx, [ecx*4]
1442 pxor xmm0, xmm01442 pxor xmm0, xmm0
1443 movdqa xmm2, xmm01443 movdqa xmm2, xmm0
1444 1444
1445 movdqa xmm0, [ecx+eax]1445 movdqa xmm0, [ecx+eax]
1446 mov esi, eax1446 mov esi, eax
1447 sub esi, edx1447 sub esi, edx
1448 movdqa xmm3, [esi]1448 movdqa xmm3, [esi]
1449 movdqa xmm5, [eax]1449 movdqa xmm5, [eax]
1450 push edi1450 push edi
1451 lea edi, [ecx+ecx]1451 lea edi, [ecx+ecx]
1452 lea ebx, [ecx+ecx*2]1452 lea ebx, [ecx+ecx*2]
1453 mov dword [esp+640-600], edi1453 mov dword [esp+640-600], edi
1454 mov esi, eax1454 mov esi, eax
1455 sub esi, edi1455 sub esi, edi
1456 movdqa xmm1, [esi]1456 movdqa xmm1, [esi]
1457 movdqa [esp+720-272], xmm01457 movdqa [esp+720-272], xmm0
1458 mov edi, eax1458 mov edi, eax
1459 sub edi, ecx1459 sub edi, ecx
1460 movdqa xmm4, [edi]1460 movdqa xmm4, [edi]
1461 add ecx, eax1461 add ecx, eax
1462 mov dword [esp+640-596], ecx1462 mov dword [esp+640-596], ecx
1463 1463
1464 mov ecx, dword [esp+640-600]1464 mov ecx, dword [esp+640-600]
1465 movdqa xmm0, [ecx+eax]1465 movdqa xmm0, [ecx+eax]
1466 movdqa [esp+736-272], xmm01466 movdqa [esp+736-272], xmm0
1467 1467
1468 movdqa xmm0, [eax+ebx]1468 movdqa xmm0, [eax+ebx]
1469 mov edx, eax1469 mov edx, eax
1470 sub edx, ebx1470 sub edx, ebx
1471 1471
1472 movsx ebx, word [ebp+16]1472 movsx ebx, word [ebp+16]
1473 movdqa xmm6, [edx]1473 movdqa xmm6, [edx]
1474 add ecx, eax1474 add ecx, eax
1475 movdqa [esp+752-272], xmm01475 movdqa [esp+752-272], xmm0
1476 movd xmm0, ebx1476 movd xmm0, ebx
1477 1477
1478 movsx ebx, word [ebp+20]1478 movsx ebx, word [ebp+20]
1479 movdqa xmm7, xmm01479 movdqa xmm7, xmm0
1480 punpcklwd xmm7, xmm01480 punpcklwd xmm7, xmm0
1481 pshufd xmm0, xmm7, 01481 pshufd xmm0, xmm7, 0
1482 movdqa [esp+640-320], xmm01482 movdqa [esp+640-320], xmm0
1483 movd xmm0, ebx1483 movd xmm0, ebx
1484 movdqa xmm7, xmm01484 movdqa xmm7, xmm0
1485 punpcklwd xmm7, xmm01485 punpcklwd xmm7, xmm0
1486 pshufd xmm0, xmm7, 01486 pshufd xmm0, xmm7, 0
1487 1487
1488 movdqa xmm7, [esp+736-272]1488 movdqa xmm7, [esp+736-272]
1489 punpcklbw xmm7, xmm21489 punpcklbw xmm7, xmm2
1490 movdqa [esp+640-416], xmm71490 movdqa [esp+640-416], xmm7
1491 movdqa [esp+640-512], xmm01491 movdqa [esp+640-512], xmm0
1492 movdqa xmm0, xmm11492 movdqa xmm0, xmm1
1493 movdqa [esp+672-272], xmm11493 movdqa [esp+672-272], xmm1
1494 movdqa xmm1, xmm41494 movdqa xmm1, xmm4
1495 movdqa [esp+704-272], xmm51495 movdqa [esp+704-272], xmm5
1496 punpcklbw xmm5, xmm21496 punpcklbw xmm5, xmm2
1497 punpcklbw xmm1, xmm21497 punpcklbw xmm1, xmm2
1498 1498
1499 movdqa xmm7, xmm51499 movdqa xmm7, xmm5
1500 psubw xmm7, xmm11500 psubw xmm7, xmm1
1501 pabsw xmm7, xmm71501 pabsw xmm7, xmm7
1502 movdqa [esp+640-560], xmm71502 movdqa [esp+640-560], xmm7
1503 punpcklbw xmm0, xmm21503 punpcklbw xmm0, xmm2
1504 movdqa [esp+688-272], xmm41504 movdqa [esp+688-272], xmm4
1505 movdqa xmm4, [esp+720-272]1505 movdqa xmm4, [esp+720-272]
1506 movdqa [esp+640-480], xmm01506 movdqa [esp+640-480], xmm0
1507 1507
1508 movdqa xmm7, xmm11508 movdqa xmm7, xmm1
1509 psubw xmm7, xmm01509 psubw xmm7, xmm0
1510 1510
1511 movdqa xmm0, [esp+640-512]1511 movdqa xmm0, [esp+640-512]
1512 pabsw xmm7, xmm71512 pabsw xmm7, xmm7
1513 punpcklbw xmm4, xmm21513 punpcklbw xmm4, xmm2
1514 pcmpgtw xmm0, xmm71514 pcmpgtw xmm0, xmm7
1515 movdqa [esp+640-384], xmm41515 movdqa [esp+640-384], xmm4
1516 movdqa xmm7, xmm51516 movdqa xmm7, xmm5
1517 psubw xmm7, xmm41517 psubw xmm7, xmm4
1518 movdqa xmm4, [esp+640-512]1518 movdqa xmm4, [esp+640-512]
1519 movdqa [esp+656-272], xmm61519 movdqa [esp+656-272], xmm6
1520 punpcklbw xmm6, xmm21520 punpcklbw xmm6, xmm2
1521 pabsw xmm7, xmm71521 pabsw xmm7, xmm7
1522 movdqa [esp+640-48], xmm21522 movdqa [esp+640-48], xmm2
1523 movdqa [esp+640-368], xmm61523 movdqa [esp+640-368], xmm6
1524 movdqa [esp+640-144], xmm11524 movdqa [esp+640-144], xmm1
1525 movdqa [esp+640-400], xmm51525 movdqa [esp+640-400], xmm5
1526 pcmpgtw xmm4, xmm71526 pcmpgtw xmm4, xmm7
1527 pand xmm0, xmm41527 pand xmm0, xmm4
1528 movdqa xmm4, [esp+640-320]1528 movdqa xmm4, [esp+640-320]
1529 pcmpgtw xmm4, [esp+640-560]1529 pcmpgtw xmm4, [esp+640-560]
1530 pand xmm0, xmm41530 pand xmm0, xmm4
1531 1531
1532 mov ebx, 21532 mov ebx, 2
1533 movsx ebx, bx1533 movsx ebx, bx
1534 movd xmm4, ebx1534 movd xmm4, ebx
1535 movdqa xmm7, xmm41535 movdqa xmm7, xmm4
1536 punpcklwd xmm7, xmm41536 punpcklwd xmm7, xmm4
1537 movdqa xmm4, [esp+640-320]1537 movdqa xmm4, [esp+640-320]
1538 psraw xmm4, 21538 psraw xmm4, 2
1539 pshufd xmm7, xmm7, 01539 pshufd xmm7, xmm7, 0
1540 paddw xmm4, xmm71540 paddw xmm4, xmm7
1541 movdqa [esp+640-576], xmm41541 movdqa [esp+640-576], xmm4
1542 pcmpgtw xmm4, [esp+640-560]1542 pcmpgtw xmm4, [esp+640-560]
1543 movdqa [esp+640-560], xmm41543 movdqa [esp+640-560], xmm4
1544 1544
1545 movdqa xmm4, [esp+640-512]1545 movdqa xmm4, [esp+640-512]
1546 movdqa [esp+640-624], xmm71546 movdqa [esp+640-624], xmm7
1547 movdqa xmm7, xmm11547 movdqa xmm7, xmm1
1548 psubw xmm7, xmm61548 psubw xmm7, xmm6
1549 pabsw xmm7, xmm71549 pabsw xmm7, xmm7
1550 pcmpgtw xmm4, xmm71550 pcmpgtw xmm4, xmm7
1551 1551
1552 pand xmm4, [esp+640-560]1552 pand xmm4, [esp+640-560]
1553 movdqa [esp+640-544], xmm41553 movdqa [esp+640-544], xmm4
1554 movdqa xmm4, [esp+640-512]1554 movdqa xmm4, [esp+640-512]
1555 movdqa xmm7, xmm51555 movdqa xmm7, xmm5
1556 psubw xmm7, [esp+640-416]1556 psubw xmm7, [esp+640-416]
1557 pabsw xmm7, xmm71557 pabsw xmm7, xmm7
1558 pcmpgtw xmm4, xmm71558 pcmpgtw xmm4, xmm7
1559 1559
1560 pand xmm4, [esp+640-560]1560 pand xmm4, [esp+640-560]
1561 movdqa [esp+640-560], xmm41561 movdqa [esp+640-560], xmm4
1562 1562
1563 movdqa xmm4, [esp+640-544]1563 movdqa xmm4, [esp+640-544]
1564 pandn xmm4, xmm61564 pandn xmm4, xmm6
1565 movdqa [esp+640-16], xmm41565 movdqa [esp+640-16], xmm4
1566 mov ebx, 41566 mov ebx, 4
1567 movsx ebx, bx1567 movsx ebx, bx
1568 movd xmm4, ebx1568 movd xmm4, ebx
1569 movdqa xmm7, xmm41569 movdqa xmm7, xmm4
1570 punpcklwd xmm7, xmm41570 punpcklwd xmm7, xmm4
1571 movdqa xmm4, xmm31571 movdqa xmm4, xmm3
1572 punpcklbw xmm4, xmm21572 punpcklbw xmm4, xmm2
1573 psllw xmm4, 11573 psllw xmm4, 1
1574 paddw xmm4, xmm61574 paddw xmm4, xmm6
1575 paddw xmm4, xmm61575 paddw xmm4, xmm6
1576 paddw xmm4, xmm61576 paddw xmm4, xmm6
1577 paddw xmm4, [esp+640-480]1577 paddw xmm4, [esp+640-480]
1578 1578
1579 movdqa xmm6, [esp+640-560]1579 movdqa xmm6, [esp+640-560]
1580 pshufd xmm7, xmm7, 01580 pshufd xmm7, xmm7, 0
1581 paddw xmm4, xmm11581 paddw xmm4, xmm1
1582 movdqa [esp+640-592], xmm71582 movdqa [esp+640-592], xmm7
1583 paddw xmm4, xmm51583 paddw xmm4, xmm5
1584 paddw xmm4, xmm71584 paddw xmm4, xmm7
1585 movdqa xmm7, [esp+640-416]1585 movdqa xmm7, [esp+640-416]
1586 pandn xmm6, xmm71586 pandn xmm6, xmm7
1587 movdqa [esp+640-80], xmm61587 movdqa [esp+640-80], xmm6
1588 movdqa xmm6, [esp+752-272]1588 movdqa xmm6, [esp+752-272]
1589 punpcklbw xmm6, xmm21589 punpcklbw xmm6, xmm2
1590 psllw xmm6, 11590 psllw xmm6, 1
1591 paddw xmm6, xmm71591 paddw xmm6, xmm7
1592 paddw xmm6, xmm71592 paddw xmm6, xmm7
1593 paddw xmm6, xmm71593 paddw xmm6, xmm7
1594 paddw xmm6, [esp+640-384]1594 paddw xmm6, [esp+640-384]
1595 1595
1596 movdqa xmm7, [esp+640-480]1596 movdqa xmm7, [esp+640-480]
1597 paddw xmm6, xmm51597 paddw xmm6, xmm5
1598 paddw xmm6, xmm11598 paddw xmm6, xmm1
1599 paddw xmm6, [esp+640-592]1599 paddw xmm6, [esp+640-592]
1600 psraw xmm6, 31600 psraw xmm6, 3
1601 pand xmm6, [esp+640-560]1601 pand xmm6, [esp+640-560]
1602 movdqa [esp+640-112], xmm61602 movdqa [esp+640-112], xmm6
1603 movdqa xmm6, [esp+640-544]1603 movdqa xmm6, [esp+640-544]
1604 pandn xmm6, xmm71604 pandn xmm6, xmm7
1605 movdqa [esp+640-336], xmm61605 movdqa [esp+640-336], xmm6
1606 movdqa xmm6, [esp+640-544]1606 movdqa xmm6, [esp+640-544]
1607 movdqa [esp+640-528], xmm61607 movdqa [esp+640-528], xmm6
1608 movdqa xmm6, [esp+640-368]1608 movdqa xmm6, [esp+640-368]
1609 paddw xmm6, xmm71609 paddw xmm6, xmm7
1610 movdqa xmm7, xmm11610 movdqa xmm7, xmm1
1611 psraw xmm4, 31611 psraw xmm4, 3
1612 pand xmm4, [esp+640-544]1612 pand xmm4, [esp+640-544]
1613 paddw xmm7, xmm51613 paddw xmm7, xmm5
1614 paddw xmm6, xmm71614 paddw xmm6, xmm7
1615 paddw xmm6, [esp+640-624]1615 paddw xmm6, [esp+640-624]
1616 movdqa xmm7, [esp+640-528]1616 movdqa xmm7, [esp+640-528]
1617 1617
1618 paddw xmm5, xmm11618 paddw xmm5, xmm1
1619 psraw xmm6, 21619 psraw xmm6, 2
1620 pand xmm7, xmm61620 pand xmm7, xmm6
1621 1621
1622 movdqa xmm6, [esp+640-384]1622 movdqa xmm6, [esp+640-384]
1623 movdqa [esp+640-64], xmm71623 movdqa [esp+640-64], xmm7
1624 movdqa xmm7, [esp+640-560]1624 movdqa xmm7, [esp+640-560]
1625 pandn xmm7, xmm61625 pandn xmm7, xmm6
1626 movdqa [esp+640-304], xmm71626 movdqa [esp+640-304], xmm7
1627 movdqa xmm7, [esp+640-560]1627 movdqa xmm7, [esp+640-560]
1628 movdqa [esp+640-528], xmm71628 movdqa [esp+640-528], xmm7
1629 movdqa xmm7, [esp+640-416]1629 movdqa xmm7, [esp+640-416]
1630 paddw xmm7, xmm61630 paddw xmm7, xmm6
1631 paddw xmm7, xmm51631 paddw xmm7, xmm5
1632 paddw xmm7, [esp+640-624]1632 paddw xmm7, [esp+640-624]
1633 movdqa xmm5, [esp+640-528]1633 movdqa xmm5, [esp+640-528]
1634 psraw xmm7, 21634 psraw xmm7, 2
1635 pand xmm5, xmm71635 pand xmm5, xmm7
1636 movdqa [esp+640-32], xmm51636 movdqa [esp+640-32], xmm5
1637 1637
1638 movdqa xmm5, [esp+640-544]1638 movdqa xmm5, [esp+640-544]
1639 movdqa [esp+640-528], xmm51639 movdqa [esp+640-528], xmm5
1640 movdqa xmm5, [esp+640-480]1640 movdqa xmm5, [esp+640-480]
1641 movdqa xmm7, xmm51641 movdqa xmm7, xmm5
1642 paddw xmm7, xmm51642 paddw xmm7, xmm5
1643 movdqa xmm5, xmm11643 movdqa xmm5, xmm1
1644 paddw xmm5, xmm61644 paddw xmm5, xmm6
1645 paddw xmm6, [esp+640-592]1645 paddw xmm6, [esp+640-592]
1646 paddw xmm7, xmm51646 paddw xmm7, xmm5
1647 paddw xmm7, [esp+640-624]1647 paddw xmm7, [esp+640-624]
1648 movdqa xmm5, [esp+640-528]1648 movdqa xmm5, [esp+640-528]
1649 psraw xmm7, 21649 psraw xmm7, 2
1650 pandn xmm5, xmm71650 pandn xmm5, xmm7
1651 movdqa xmm7, [esp+640-480]1651 movdqa xmm7, [esp+640-480]
1652 paddw xmm7, xmm11652 paddw xmm7, xmm1
1653 paddw xmm7, [esp+640-400]1653 paddw xmm7, [esp+640-400]
1654 movdqa xmm1, [esp+640-544]1654 movdqa xmm1, [esp+640-544]
1655 movdqa [esp+640-352], xmm51655 movdqa [esp+640-352], xmm5
1656 movdqa xmm5, [esp+640-368]1656 movdqa xmm5, [esp+640-368]
1657 psllw xmm7, 11657 psllw xmm7, 1
1658 paddw xmm7, xmm61658 paddw xmm7, xmm6
1659 paddw xmm5, xmm71659 paddw xmm5, xmm7
1660 1660
1661 movdqa xmm7, [esp+640-400]1661 movdqa xmm7, [esp+640-400]
1662 psraw xmm5, 31662 psraw xmm5, 3
1663 pand xmm1, xmm51663 pand xmm1, xmm5
1664 movdqa xmm5, [esp+640-480]1664 movdqa xmm5, [esp+640-480]
1665 movdqa [esp+640-96], xmm11665 movdqa [esp+640-96], xmm1
1666 movdqa xmm1, [esp+640-560]1666 movdqa xmm1, [esp+640-560]
1667 movdqa [esp+640-528], xmm11667 movdqa [esp+640-528], xmm1
1668 movdqa xmm1, [esp+640-384]1668 movdqa xmm1, [esp+640-384]
1669 movdqa xmm6, xmm11669 movdqa xmm6, xmm1
1670 paddw xmm6, xmm11670 paddw xmm6, xmm1
1671 paddw xmm1, [esp+640-400]1671 paddw xmm1, [esp+640-400]
1672 paddw xmm1, [esp+640-144]1672 paddw xmm1, [esp+640-144]
1673 paddw xmm7, xmm51673 paddw xmm7, xmm5
1674 paddw xmm5, [esp+640-592]1674 paddw xmm5, [esp+640-592]
1675 paddw xmm6, xmm71675 paddw xmm6, xmm7
1676 paddw xmm6, [esp+640-624]1676 paddw xmm6, [esp+640-624]
1677 movdqa xmm7, [esp+640-528]1677 movdqa xmm7, [esp+640-528]
1678 psraw xmm6, 21678 psraw xmm6, 2
1679 psllw xmm1, 11679 psllw xmm1, 1
1680 paddw xmm1, xmm51680 paddw xmm1, xmm5
1681 1681
1682 movdqa xmm5, [esp+656-272]1682 movdqa xmm5, [esp+656-272]
1683 pandn xmm7, xmm61683 pandn xmm7, xmm6
1684 movdqa xmm6, [esp+640-416]1684 movdqa xmm6, [esp+640-416]
1685 paddw xmm6, xmm11685 paddw xmm6, xmm1
1686 movdqa xmm1, [esp+640-560]1686 movdqa xmm1, [esp+640-560]
1687 psraw xmm6, 31687 psraw xmm6, 3
1688 pand xmm1, xmm61688 pand xmm1, xmm6
1689 1689
1690 movdqa xmm6, [esp+704-272]1690 movdqa xmm6, [esp+704-272]
1691 movdqa [esp+640-128], xmm11691 movdqa [esp+640-128], xmm1
1692 movdqa xmm1, [esp+672-272]1692 movdqa xmm1, [esp+672-272]
1693 punpckhbw xmm1, xmm21693 punpckhbw xmm1, xmm2
1694 movdqa [esp+640-448], xmm11694 movdqa [esp+640-448], xmm1
1695 movdqa xmm1, [esp+688-272]1695 movdqa xmm1, [esp+688-272]
1696 punpckhbw xmm1, xmm21696 punpckhbw xmm1, xmm2
1697 punpckhbw xmm6, xmm21697 punpckhbw xmm6, xmm2
1698 movdqa [esp+640-288], xmm71698 movdqa [esp+640-288], xmm7
1699 punpckhbw xmm5, xmm21699 punpckhbw xmm5, xmm2
1700 movdqa [esp+640-496], xmm11700 movdqa [esp+640-496], xmm1
1701 movdqa [esp+640-432], xmm61701 movdqa [esp+640-432], xmm6
1702 1702
1703 movdqa xmm7, [esp+720-272]1703 movdqa xmm7, [esp+720-272]
1704 punpckhbw xmm7, xmm21704 punpckhbw xmm7, xmm2
1705 movdqa [esp+640-464], xmm71705 movdqa [esp+640-464], xmm7
1706 1706
1707 movdqa xmm7, [esp+736-272]1707 movdqa xmm7, [esp+736-272]
1708 punpckhbw xmm7, xmm21708 punpckhbw xmm7, xmm2
1709 movdqa [esp+640-528], xmm71709 movdqa [esp+640-528], xmm7
1710 1710
1711 movdqa xmm7, xmm61711 movdqa xmm7, xmm6
1712 1712
1713 psubw xmm6, [esp+640-464]1713 psubw xmm6, [esp+640-464]
1714 psubw xmm7, xmm11714 psubw xmm7, xmm1
1715 pabsw xmm7, xmm71715 pabsw xmm7, xmm7
1716 movdqa [esp+640-560], xmm71716 movdqa [esp+640-560], xmm7
1717 por xmm4, [esp+640-16]1717 por xmm4, [esp+640-16]
1718 pabsw xmm6, xmm61718 pabsw xmm6, xmm6
1719 movdqa xmm7, xmm11719 movdqa xmm7, xmm1
1720 psubw xmm7, [esp+640-448]1720 psubw xmm7, [esp+640-448]
1721 1721
1722 movdqa xmm1, [esp+640-512]1722 movdqa xmm1, [esp+640-512]
1723 pabsw xmm7, xmm71723 pabsw xmm7, xmm7
1724 pcmpgtw xmm1, xmm71724 pcmpgtw xmm1, xmm7
1725 movdqa xmm7, [esp+640-512]1725 movdqa xmm7, [esp+640-512]
1726 pcmpgtw xmm7, xmm61726 pcmpgtw xmm7, xmm6
1727 movdqa xmm6, [esp+640-320]1727 movdqa xmm6, [esp+640-320]
1728 pand xmm1, xmm71728 pand xmm1, xmm7
1729 movdqa xmm7, [esp+640-560]1729 movdqa xmm7, [esp+640-560]
1730 pcmpgtw xmm6, xmm71730 pcmpgtw xmm6, xmm7
1731 pand xmm1, xmm61731 pand xmm1, xmm6
1732 1732
1733 movdqa xmm6, [esp+640-576]1733 movdqa xmm6, [esp+640-576]
1734 pcmpgtw xmm6, xmm71734 pcmpgtw xmm6, xmm7
1735 1735
1736 movdqa xmm7, [esp+640-496]1736 movdqa xmm7, [esp+640-496]
1737 punpckhbw xmm3, xmm21737 punpckhbw xmm3, xmm2
1738 movdqa [esp+640-560], xmm61738 movdqa [esp+640-560], xmm6
1739 movdqa xmm6, [esp+640-512]1739 movdqa xmm6, [esp+640-512]
1740 psubw xmm7, xmm51740 psubw xmm7, xmm5
1741 pabsw xmm7, xmm71741 pabsw xmm7, xmm7
1742 pcmpgtw xmm6, xmm71742 pcmpgtw xmm6, xmm7
1743 1743
1744 pand xmm6, [esp+640-560]1744 pand xmm6, [esp+640-560]
1745 movdqa xmm7, [esp+640-432]1745 movdqa xmm7, [esp+640-432]
1746 psubw xmm7, [esp+640-528]1746 psubw xmm7, [esp+640-528]
1747 1747
1748 psllw xmm3, 11748 psllw xmm3, 1
1749 movdqa [esp+640-544], xmm61749 movdqa [esp+640-544], xmm6
1750 movdqa xmm6, [esp+640-512]1750 movdqa xmm6, [esp+640-512]
1751 1751
1752 movdqa xmm2, [esp+640-544]1752 movdqa xmm2, [esp+640-544]
1753 paddw xmm3, xmm51753 paddw xmm3, xmm5
1754 paddw xmm3, xmm51754 paddw xmm3, xmm5
1755 paddw xmm3, xmm51755 paddw xmm3, xmm5
1756 paddw xmm3, [esp+640-448]1756 paddw xmm3, [esp+640-448]
1757 paddw xmm3, [esp+640-496]1757 paddw xmm3, [esp+640-496]
1758 pabsw xmm7, xmm71758 pabsw xmm7, xmm7
1759 pcmpgtw xmm6, xmm71759 pcmpgtw xmm6, xmm7
1760 pand xmm6, [esp+640-560]1760 pand xmm6, [esp+640-560]
1761 movdqa [esp+640-560], xmm61761 movdqa [esp+640-560], xmm6
1762 1762
1763 movdqa xmm6, xmm01763 movdqa xmm6, xmm0
1764 pand xmm6, xmm41764 pand xmm6, xmm4
1765 movdqa xmm4, xmm01765 movdqa xmm4, xmm0
1766 pandn xmm4, [esp+640-368]1766 pandn xmm4, [esp+640-368]
1767 por xmm6, xmm41767 por xmm6, xmm4
1768 movdqa xmm4, [esp+640-432]1768 movdqa xmm4, [esp+640-432]
1769 paddw xmm3, xmm41769 paddw xmm3, xmm4
1770 paddw xmm3, [esp+640-592]1770 paddw xmm3, [esp+640-592]
1771 psraw xmm3, 31771 psraw xmm3, 3
1772 pand xmm3, xmm21772 pand xmm3, xmm2
1773 pandn xmm2, xmm51773 pandn xmm2, xmm5
1774 por xmm3, xmm21774 por xmm3, xmm2
1775 movdqa xmm7, xmm11775 movdqa xmm7, xmm1
1776 pand xmm7, xmm31776 pand xmm7, xmm3
1777 movdqa xmm3, [esp+640-64]1777 movdqa xmm3, [esp+640-64]
1778 por xmm3, [esp+640-336]1778 por xmm3, [esp+640-336]
1779 movdqa xmm2, xmm11779 movdqa xmm2, xmm1
1780 pandn xmm2, xmm51780 pandn xmm2, xmm5
1781 por xmm7, xmm21781 por xmm7, xmm2
1782 1782
1783 movdqa xmm2, xmm01783 movdqa xmm2, xmm0
1784 pand xmm2, xmm31784 pand xmm2, xmm3
1785 movdqa xmm3, xmm01785 movdqa xmm3, xmm0
1786 pandn xmm3, [esp+640-480]1786 pandn xmm3, [esp+640-480]
1787 por xmm2, xmm31787 por xmm2, xmm3
1788 packuswb xmm6, xmm71788 packuswb xmm6, xmm7
1789 movdqa [esp+640-336], xmm21789 movdqa [esp+640-336], xmm2
1790 movdqa [esp+656-272], xmm61790 movdqa [esp+656-272], xmm6
1791 movdqa xmm6, [esp+640-544]1791 movdqa xmm6, [esp+640-544]
1792 movdqa xmm2, xmm51792 movdqa xmm2, xmm5
1793 paddw xmm2, [esp+640-448]1793 paddw xmm2, [esp+640-448]
1794 movdqa xmm3, xmm11794 movdqa xmm3, xmm1
1795 movdqa xmm7, [esp+640-496]1795 movdqa xmm7, [esp+640-496]
1796 paddw xmm7, xmm41796 paddw xmm7, xmm4
1797 paddw xmm2, xmm71797 paddw xmm2, xmm7
1798 paddw xmm2, [esp+640-624]1798 paddw xmm2, [esp+640-624]
1799 movdqa xmm7, [esp+640-544]1799 movdqa xmm7, [esp+640-544]
1800 psraw xmm2, 21800 psraw xmm2, 2
1801 pand xmm6, xmm21801 pand xmm6, xmm2
1802 movdqa xmm2, [esp+640-448]1802 movdqa xmm2, [esp+640-448]
1803 pandn xmm7, xmm21803 pandn xmm7, xmm2
1804 por xmm6, xmm71804 por xmm6, xmm7
1805 pand xmm3, xmm61805 pand xmm3, xmm6
1806 movdqa xmm6, xmm11806 movdqa xmm6, xmm1
1807 pandn xmm6, xmm21807 pandn xmm6, xmm2
1808 paddw xmm2, [esp+640-496]1808 paddw xmm2, [esp+640-496]
1809 paddw xmm2, xmm41809 paddw xmm2, xmm4
1810 por xmm3, xmm61810 por xmm3, xmm6
1811 movdqa xmm6, [esp+640-336]1811 movdqa xmm6, [esp+640-336]
1812 packuswb xmm6, xmm31812 packuswb xmm6, xmm3
1813 psllw xmm2, 11813 psllw xmm2, 1
1814 movdqa [esp+672-272], xmm61814 movdqa [esp+672-272], xmm6
1815 movdqa xmm6, [esp+640-96]1815 movdqa xmm6, [esp+640-96]
1816 por xmm6, [esp+640-352]1816 por xmm6, [esp+640-352]
1817 1817
1818 movdqa xmm3, xmm01818 movdqa xmm3, xmm0
1819 pand xmm3, xmm61819 pand xmm3, xmm6
1820 movdqa xmm6, xmm01820 movdqa xmm6, xmm0
1821 pandn xmm6, [esp+640-144]1821 pandn xmm6, [esp+640-144]
1822 por xmm3, xmm61822 por xmm3, xmm6
1823 movdqa xmm6, [esp+640-544]1823 movdqa xmm6, [esp+640-544]
1824 movdqa [esp+640-352], xmm31824 movdqa [esp+640-352], xmm3
1825 movdqa xmm3, [esp+640-464]1825 movdqa xmm3, [esp+640-464]
1826 paddw xmm3, [esp+640-592]1826 paddw xmm3, [esp+640-592]
1827 paddw xmm2, xmm31827 paddw xmm2, xmm3
1828 movdqa xmm3, [esp+640-448]1828 movdqa xmm3, [esp+640-448]
1829 paddw xmm5, xmm21829 paddw xmm5, xmm2
1830 movdqa xmm2, [esp+640-496]1830 movdqa xmm2, [esp+640-496]
1831 psraw xmm5, 31831 psraw xmm5, 3
1832 pand xmm6, xmm51832 pand xmm6, xmm5
1833 movdqa xmm5, [esp+640-464]1833 movdqa xmm5, [esp+640-464]
1834 paddw xmm2, xmm51834 paddw xmm2, xmm5
1835 paddw xmm5, [esp+640-432]1835 paddw xmm5, [esp+640-432]
1836 movdqa xmm4, xmm31836 movdqa xmm4, xmm3
1837 paddw xmm4, xmm31837 paddw xmm4, xmm3
1838 paddw xmm4, xmm21838 paddw xmm4, xmm2
1839 paddw xmm4, [esp+640-624]1839 paddw xmm4, [esp+640-624]
1840 movdqa xmm2, [esp+640-544]1840 movdqa xmm2, [esp+640-544]
1841 paddw xmm3, [esp+640-592]1841 paddw xmm3, [esp+640-592]
1842 psraw xmm4, 21842 psraw xmm4, 2
1843 pandn xmm2, xmm41843 pandn xmm2, xmm4
1844 por xmm6, xmm21844 por xmm6, xmm2
1845 movdqa xmm7, xmm11845 movdqa xmm7, xmm1
1846 pand xmm7, xmm61846 pand xmm7, xmm6
1847 movdqa xmm6, [esp+640-496]1847 movdqa xmm6, [esp+640-496]
1848 movdqa xmm2, xmm11848 movdqa xmm2, xmm1
1849 pandn xmm2, xmm61849 pandn xmm2, xmm6
1850 por xmm7, xmm21850 por xmm7, xmm2
1851 movdqa xmm2, [esp+640-352]1851 movdqa xmm2, [esp+640-352]
1852 packuswb xmm2, xmm71852 packuswb xmm2, xmm7
1853 movdqa [esp+688-272], xmm21853 movdqa [esp+688-272], xmm2
1854 movdqa xmm2, [esp+640-128]1854 movdqa xmm2, [esp+640-128]
1855 por xmm2, [esp+640-288]1855 por xmm2, [esp+640-288]
1856 1856
1857 movdqa xmm4, xmm01857 movdqa xmm4, xmm0
1858 pand xmm4, xmm21858 pand xmm4, xmm2
1859 paddw xmm5, xmm61859 paddw xmm5, xmm6
1860 movdqa xmm2, xmm01860 movdqa xmm2, xmm0
1861 pandn xmm2, [esp+640-400]1861 pandn xmm2, [esp+640-400]
1862 por xmm4, xmm21862 por xmm4, xmm2
1863 movdqa xmm2, [esp+640-528]1863 movdqa xmm2, [esp+640-528]
1864 psllw xmm5, 11864 psllw xmm5, 1
1865 paddw xmm5, xmm31865 paddw xmm5, xmm3
1866 movdqa xmm3, [esp+640-560]1866 movdqa xmm3, [esp+640-560]
1867 paddw xmm2, xmm51867 paddw xmm2, xmm5
1868 psraw xmm2, 31868 psraw xmm2, 3
1869 movdqa [esp+640-288], xmm41869 movdqa [esp+640-288], xmm4
1870 movdqa xmm4, [esp+640-560]1870 movdqa xmm4, [esp+640-560]
1871 pand xmm4, xmm21871 pand xmm4, xmm2
1872 movdqa xmm2, [esp+640-464]1872 movdqa xmm2, [esp+640-464]
1873 movdqa xmm5, xmm21873 movdqa xmm5, xmm2
1874 paddw xmm5, xmm21874 paddw xmm5, xmm2
1875 movdqa xmm2, [esp+640-432]1875 movdqa xmm2, [esp+640-432]
1876 paddw xmm2, [esp+640-448]1876 paddw xmm2, [esp+640-448]
1877 movdqa xmm7, xmm11877 movdqa xmm7, xmm1
1878 paddw xmm5, xmm21878 paddw xmm5, xmm2
1879 paddw xmm5, [esp+640-624]1879 paddw xmm5, [esp+640-624]
1880 movdqa xmm6, [esp+640-560]1880 movdqa xmm6, [esp+640-560]
1881 psraw xmm5, 21881 psraw xmm5, 2
1882 pandn xmm3, xmm51882 pandn xmm3, xmm5
1883 por xmm4, xmm31883 por xmm4, xmm3
1884 movdqa xmm3, [esp+640-32]1884 movdqa xmm3, [esp+640-32]
1885 por xmm3, [esp+640-304]1885 por xmm3, [esp+640-304]
1886 pand xmm7, xmm41886 pand xmm7, xmm4
1887 movdqa xmm4, [esp+640-432]1887 movdqa xmm4, [esp+640-432]
1888 movdqa xmm5, [esp+640-464]1888 movdqa xmm5, [esp+640-464]
1889 movdqa xmm2, xmm11889 movdqa xmm2, xmm1
1890 pandn xmm2, xmm41890 pandn xmm2, xmm4
1891 paddw xmm4, [esp+640-496]1891 paddw xmm4, [esp+640-496]
1892 por xmm7, xmm21892 por xmm7, xmm2
1893 movdqa xmm2, [esp+640-288]1893 movdqa xmm2, [esp+640-288]
1894 packuswb xmm2, xmm71894 packuswb xmm2, xmm7
1895 movdqa [esp+704-272], xmm21895 movdqa [esp+704-272], xmm2
1896 1896
1897 movdqa xmm2, xmm01897 movdqa xmm2, xmm0
1898 pand xmm2, xmm31898 pand xmm2, xmm3
1899 movdqa xmm3, xmm01899 movdqa xmm3, xmm0
1900 pandn xmm3, [esp+640-384]1900 pandn xmm3, [esp+640-384]
1901 por xmm2, xmm31901 por xmm2, xmm3
1902 movdqa [esp+640-304], xmm21902 movdqa [esp+640-304], xmm2
1903 movdqa xmm2, [esp+640-528]1903 movdqa xmm2, [esp+640-528]
1904 movdqa xmm3, xmm21904 movdqa xmm3, xmm2
1905 paddw xmm3, [esp+640-464]1905 paddw xmm3, [esp+640-464]
1906 paddw xmm3, xmm41906 paddw xmm3, xmm4
1907 paddw xmm3, [esp+640-624]1907 paddw xmm3, [esp+640-624]
1908 psraw xmm3, 21908 psraw xmm3, 2
1909 pand xmm6, xmm31909 pand xmm6, xmm3
1910 movdqa xmm3, [esp+640-560]1910 movdqa xmm3, [esp+640-560]
1911 movdqa xmm4, xmm31911 movdqa xmm4, xmm3
1912 pandn xmm4, xmm51912 pandn xmm4, xmm5
1913 por xmm6, xmm41913 por xmm6, xmm4
1914 movdqa xmm7, xmm11914 movdqa xmm7, xmm1
1915 pand xmm7, xmm61915 pand xmm7, xmm6
1916 movdqa xmm6, [esp+640-304]1916 movdqa xmm6, [esp+640-304]
1917 movdqa xmm4, xmm11917 movdqa xmm4, xmm1
1918 pandn xmm4, xmm51918 pandn xmm4, xmm5
1919 por xmm7, xmm41919 por xmm7, xmm4
1920 1920
1921 movdqa xmm4, xmm01921 movdqa xmm4, xmm0
1922 pandn xmm0, [esp+640-416]1922 pandn xmm0, [esp+640-416]
1923 packuswb xmm6, xmm71923 packuswb xmm6, xmm7
1924 movdqa xmm7, [esp+640-112]1924 movdqa xmm7, [esp+640-112]
1925 por xmm7, [esp+640-80]1925 por xmm7, [esp+640-80]
1926 pand xmm4, xmm71926 pand xmm4, xmm7
1927 por xmm4, xmm01927 por xmm4, xmm0
1928 movdqa xmm0, [esp+752-272]1928 movdqa xmm0, [esp+752-272]
1929 punpckhbw xmm0, [esp+640-48]1929 punpckhbw xmm0, [esp+640-48]
1930 psllw xmm0, 11930 psllw xmm0, 1
1931 paddw xmm0, xmm21931 paddw xmm0, xmm2
1932 paddw xmm0, xmm21932 paddw xmm0, xmm2
1933 paddw xmm0, xmm21933 paddw xmm0, xmm2
1934 paddw xmm0, xmm51934 paddw xmm0, xmm5
1935 paddw xmm0, [esp+640-432]1935 paddw xmm0, [esp+640-432]
1936 paddw xmm0, [esp+640-496]1936 paddw xmm0, [esp+640-496]
1937 paddw xmm0, [esp+640-592]1937 paddw xmm0, [esp+640-592]
1938 psraw xmm0, 31938 psraw xmm0, 3
1939 pand xmm0, xmm31939 pand xmm0, xmm3
1940 movdqa xmm7, xmm11940 movdqa xmm7, xmm1
1941 pandn xmm3, xmm21941 pandn xmm3, xmm2
1942 por xmm0, xmm31942 por xmm0, xmm3
1943 pand xmm7, xmm01943 pand xmm7, xmm0
1944 1944
1945 movdqa xmm0, [esp+656-272]1945 movdqa xmm0, [esp+656-272]
1946 movdqa [edx], xmm01946 movdqa [edx], xmm0
1947 1947
1948 movdqa xmm0, [esp+672-272]1948 movdqa xmm0, [esp+672-272]
1949 1949
1950 mov edx, dword [esp+640-596]1950 mov edx, dword [esp+640-596]
1951 movdqa [esi], xmm01951 movdqa [esi], xmm0
1952 movdqa xmm0, [esp+688-272]1952 movdqa xmm0, [esp+688-272]
1953 movdqa [edi], xmm01953 movdqa [edi], xmm0
1954 movdqa xmm0, [esp+704-272]1954 movdqa xmm0, [esp+704-272]
1955 1955
1956 pop edi1956 pop edi
1957 pandn xmm1, xmm21957 pandn xmm1, xmm2
1958 movdqa [eax], xmm01958 movdqa [eax], xmm0
1959 por xmm7, xmm11959 por xmm7, xmm1
1960 pop esi1960 pop esi
1961 packuswb xmm4, xmm71961 packuswb xmm4, xmm7
1962 movdqa [edx], xmm61962 movdqa [edx], xmm6
1963 movdqa [ecx], xmm41963 movdqa [ecx], xmm4
1964 pop ebx1964 pop ebx
1965 mov esp, ebp1965 mov esp, ebp
1966 pop ebp1966 pop ebp
1967 ret1967 ret
1968 1968
1969 1969
1970;********************************************************************************1970;********************************************************************************
1971;1971;
1972; void DeblockLumaTransposeH2V_sse2(uint8_t * pPixY, int32_t iStride, uint8_t * pDst); 1972; void DeblockLumaTransposeH2V_sse2(uint8_t * pPixY, int32_t iStride, uint8_t * pDst);
1973;1973;
1974;********************************************************************************1974;********************************************************************************
1975 1975
1976WELS_EXTERN DeblockLumaTransposeH2V_sse21976WELS_EXTERN DeblockLumaTransposeH2V_sse2
1977 1977
1978ALIGN 161978ALIGN 16
1979 1979
1980DeblockLumaTransposeH2V_sse2:1980DeblockLumaTransposeH2V_sse2:
1981 push ebp1981 push ebp
1982 push ebx1982 push ebx
1983 mov ebp, esp1983 mov ebp, esp
1984 and esp,0FFFFFFF0h1984 and esp,0FFFFFFF0h
1985 sub esp, 10h 1985 sub esp, 10h
1986 1986
1987 mov eax, [ebp + 0Ch] 1987 mov eax, [ebp + 0Ch]
1988 mov ecx, [ebp + 10h]1988 mov ecx, [ebp + 10h]
1989 lea edx, [eax + ecx * 8]1989 lea edx, [eax + ecx * 8]
1990 lea ebx, [ecx*3]1990 lea ebx, [ecx*3]
1991 1991
1992 movq xmm0, [eax] 1992 movq xmm0, [eax]
1993 movq xmm7, [edx]1993 movq xmm7, [edx]
1994 punpcklqdq xmm0, xmm7 1994 punpcklqdq xmm0, xmm7
1995 movq xmm1, [eax + ecx]1995 movq xmm1, [eax + ecx]
1996 movq xmm7, [edx + ecx]1996 movq xmm7, [edx + ecx]
1997 punpcklqdq xmm1, xmm71997 punpcklqdq xmm1, xmm7
1998 movq xmm2, [eax + ecx*2] 1998 movq xmm2, [eax + ecx*2]
1999 movq xmm7, [edx + ecx*2]1999 movq xmm7, [edx + ecx*2]
2000 punpcklqdq xmm2, xmm72000 punpcklqdq xmm2, xmm7
2001 movq xmm3, [eax + ebx]2001 movq xmm3, [eax + ebx]
2002 movq xmm7, [edx + ebx]2002 movq xmm7, [edx + ebx]
2003 punpcklqdq xmm3, xmm72003 punpcklqdq xmm3, xmm7
2004 2004
2005 lea eax, [eax + ecx * 4]2005 lea eax, [eax + ecx * 4]
2006 lea edx, [edx + ecx * 4]2006 lea edx, [edx + ecx * 4]
2007 movq xmm4, [eax] 2007 movq xmm4, [eax]
2008 movq xmm7, [edx]2008 movq xmm7, [edx]
2009 punpcklqdq xmm4, xmm7 2009 punpcklqdq xmm4, xmm7
2010 movq xmm5, [eax + ecx]2010 movq xmm5, [eax + ecx]
2011 movq xmm7, [edx + ecx]2011 movq xmm7, [edx + ecx]
2012 punpcklqdq xmm5, xmm72012 punpcklqdq xmm5, xmm7
2013 movq xmm6, [eax + ecx*2] 2013 movq xmm6, [eax + ecx*2]
2014 movq xmm7, [edx + ecx*2]2014 movq xmm7, [edx + ecx*2]
2015 punpcklqdq xmm6, xmm72015 punpcklqdq xmm6, xmm7
2016 2016
2017 movdqa [esp], xmm02017 movdqa [esp], xmm0
2018 movq xmm7, [eax + ebx]2018 movq xmm7, [eax + ebx]
2019 movq xmm0, [edx + ebx]2019 movq xmm0, [edx + ebx]
2020 punpcklqdq xmm7, xmm02020 punpcklqdq xmm7, xmm0
2021 movdqa xmm0, [esp]2021 movdqa xmm0, [esp]
2022 2022
2023 SSE2_TransTwo8x8B xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, [esp]2023 SSE2_TransTwo8x8B xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, [esp]
2024 ;pOut: m5, m3, m4, m8, m6, m2, m7, m12024 ;pOut: m5, m3, m4, m8, m6, m2, m7, m1
2025 2025
2026 mov eax, [ebp + 14h]2026 mov eax, [ebp + 14h]
2027 movdqa [eax], xmm4 2027 movdqa [eax], xmm4
2028 movdqa [eax + 10h], xmm22028 movdqa [eax + 10h], xmm2
2029 movdqa [eax + 20h], xmm32029 movdqa [eax + 20h], xmm3
2030 movdqa [eax + 30h], xmm72030 movdqa [eax + 30h], xmm7
2031 movdqa [eax + 40h], xmm52031 movdqa [eax + 40h], xmm5
2032 movdqa [eax + 50h], xmm12032 movdqa [eax + 50h], xmm1
2033 movdqa [eax + 60h], xmm62033 movdqa [eax + 60h], xmm6
2034 movdqa [eax + 70h], xmm0 2034 movdqa [eax + 70h], xmm0
2035 2035
2036 mov esp, ebp2036 mov esp, ebp
2037 pop ebx2037 pop ebx
2038 pop ebp2038 pop ebp
2039 ret2039 ret
2040 2040
2041 2041
2042 2042
2043;*******************************************************************************************2043;*******************************************************************************************
2044;2044;
2045; void DeblockLumaTransposeV2H_sse2(uint8_t * pPixY, int32_t iStride, uint8_t * pSrc);2045; void DeblockLumaTransposeV2H_sse2(uint8_t * pPixY, int32_t iStride, uint8_t * pSrc);
2046;2046;
2047;*******************************************************************************************2047;*******************************************************************************************
2048 2048
2049WELS_EXTERN DeblockLumaTransposeV2H_sse22049WELS_EXTERN DeblockLumaTransposeV2H_sse2
2050 2050
2051ALIGN 162051ALIGN 16
2052 2052
2053DeblockLumaTransposeV2H_sse2:2053DeblockLumaTransposeV2H_sse2:
2054 push ebp2054 push ebp
2055 mov ebp, esp2055 mov ebp, esp
2056 2056
2057 and esp, 0FFFFFFF0h2057 and esp, 0FFFFFFF0h
2058 sub esp, 10h 2058 sub esp, 10h
2059 2059
2060 mov eax, [ebp + 10h] 2060 mov eax, [ebp + 10h]
2061 mov ecx, [ebp + 0Ch]2061 mov ecx, [ebp + 0Ch]
2062 mov edx, [ebp + 08h]2062 mov edx, [ebp + 08h]
2063 2063
2064 movdqa xmm0, [eax]2064 movdqa xmm0, [eax]
2065 movdqa xmm1, [eax + 10h]2065 movdqa xmm1, [eax + 10h]
2066 movdqa xmm2, [eax + 20h]2066 movdqa xmm2, [eax + 20h]
2067 movdqa xmm3, [eax + 30h]2067 movdqa xmm3, [eax + 30h]
2068 movdqa xmm4, [eax + 40h]2068 movdqa xmm4, [eax + 40h]
2069 movdqa xmm5, [eax + 50h]2069 movdqa xmm5, [eax + 50h]
2070 movdqa xmm6, [eax + 60h]2070 movdqa xmm6, [eax + 60h]
2071 movdqa xmm7, [eax + 70h]2071 movdqa xmm7, [eax + 70h]
2072 2072
2073 SSE2_TransTwo8x8B xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, [esp]2073 SSE2_TransTwo8x8B xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, [esp]
2074 ;pOut: m5, m3, m4, m8, m6, m2, m7, m12074 ;pOut: m5, m3, m4, m8, m6, m2, m7, m1
2075 2075
2076 lea eax, [ecx * 3]2076 lea eax, [ecx * 3]
2077 2077
2078 movq [edx], xmm4 2078 movq [edx], xmm4
2079 movq [edx + ecx], xmm22079 movq [edx + ecx], xmm2
2080 movq [edx + ecx*2], xmm32080 movq [edx + ecx*2], xmm3
2081 movq [edx + eax], xmm72081 movq [edx + eax], xmm7
2082 2082
2083 lea edx, [edx + ecx*4]2083 lea edx, [edx + ecx*4]
2084 movq [edx], xmm5 2084 movq [edx], xmm5
2085 movq [edx + ecx], xmm12085 movq [edx + ecx], xmm1
2086 movq [edx + ecx*2], xmm62086 movq [edx + ecx*2], xmm6
2087 movq [edx + eax], xmm0 2087 movq [edx + eax], xmm0
2088 2088
2089 psrldq xmm4, 82089 psrldq xmm4, 8
2090 psrldq xmm2, 82090 psrldq xmm2, 8
2091 psrldq xmm3, 82091 psrldq xmm3, 8
2092 psrldq xmm7, 82092 psrldq xmm7, 8
2093 psrldq xmm5, 82093 psrldq xmm5, 8
2094 psrldq xmm1, 82094 psrldq xmm1, 8
2095 psrldq xmm6, 82095 psrldq xmm6, 8
2096 psrldq xmm0, 82096 psrldq xmm0, 8
2097 2097
2098 lea edx, [edx + ecx*4]2098 lea edx, [edx + ecx*4]
2099 movq [edx], xmm4 2099 movq [edx], xmm4
2100 movq [edx + ecx], xmm22100 movq [edx + ecx], xmm2
2101 movq [edx + ecx*2], xmm32101 movq [edx + ecx*2], xmm3
2102 movq [edx + eax], xmm72102 movq [edx + eax], xmm7
2103 2103
2104 lea edx, [edx + ecx*4]2104 lea edx, [edx + ecx*4]
2105 movq [edx], xmm5 2105 movq [edx], xmm5
2106 movq [edx + ecx], xmm12106 movq [edx + ecx], xmm1
2107 movq [edx + ecx*2], xmm62107 movq [edx + ecx*2], xmm6
2108 movq [edx + eax], xmm0 2108 movq [edx + eax], xmm0
2109 2109
2110 2110
2111 mov esp, ebp2111 mov esp, ebp
2112 pop ebp2112 pop ebp
2113 ret2113 ret
codec/decoder/core/asm/mc_chroma.asm+317−317
@@ -1,317 +1,317 @@
1;*!1;*!
2;* \copy2;* \copy
3;* Copyright (c) 2004-2013, Cisco Systems3;* Copyright (c) 2004-2013, Cisco Systems
4;* All rights reserved.4;* All rights reserved.
5;*5;*
6;* Redistribution and use in source and binary forms, with or without6;* Redistribution and use in source and binary forms, with or without
7;* modification, are permitted provided that the following conditions7;* modification, are permitted provided that the following conditions
8;* are met:8;* are met:
9;*9;*
10;* * Redistributions of source code must retain the above copyright10;* * Redistributions of source code must retain the above copyright
11;* notice, this list of conditions and the following disclaimer.11;* notice, this list of conditions and the following disclaimer.
12;*12;*
13;* * Redistributions in binary form must reproduce the above copyright13;* * Redistributions in binary form must reproduce the above copyright
14;* notice, this list of conditions and the following disclaimer in14;* notice, this list of conditions and the following disclaimer in
15;* the documentation and/or other materials provided with the15;* the documentation and/or other materials provided with the
16;* distribution.16;* distribution.
17;*17;*
18;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS18;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19;* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT19;* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20;* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS20;* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21;* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE21;* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22;* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,22;* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
23;* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,23;* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24;* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;24;* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25;* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER25;* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT26;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27;* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN27;* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28;* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE28;* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29;* POSSIBILITY OF SUCH DAMAGE.29;* POSSIBILITY OF SUCH DAMAGE.
30;*30;*
31;*31;*
32;* mc_chroma.asm32;* mc_chroma.asm
33;*33;*
34;* Abstract34;* Abstract
35;* mmx motion compensation for chroma35;* mmx motion compensation for chroma
36;*36;*
37;* History37;* History
38;* 10/13/2004 Created38;* 10/13/2004 Created
39;*39;*
40;*40;*
41;*************************************************************************/41;*************************************************************************/
42%include "asm_inc.asm"42%include "asm_inc.asm"
43 43
44BITS 3244BITS 32
45 45
46;***********************************************************************46;***********************************************************************
47; Local Data (Read Only)47; Local Data (Read Only)
48;***********************************************************************48;***********************************************************************
49 49
50SECTION .rodata align=1650SECTION .rodata align=16
51 51
52;***********************************************************************52;***********************************************************************
53; Various memory constants (trigonometric values or rounding values)53; Various memory constants (trigonometric values or rounding values)
54;***********************************************************************54;***********************************************************************
55 55
56ALIGN 1656ALIGN 16
57h264_d0x20_sse2:57h264_d0x20_sse2:
58 dw 32,32,32,32,32,32,32,3258 dw 32,32,32,32,32,32,32,32
59ALIGN 1659ALIGN 16
60h264_d0x20_mmx:60h264_d0x20_mmx:
61 dw 32,32,32,3261 dw 32,32,32,32
62 62
63 63
64;=============================================================================64;=============================================================================
65; Code65; Code
66;=============================================================================66;=============================================================================
67 67
68SECTION .text68SECTION .text
69 69
70ALIGN 1670ALIGN 16
71;*******************************************************************************71;*******************************************************************************
72; void McChromaWidthEq4_mmx( uint8_t *src, 72; void McChromaWidthEq4_mmx( uint8_t *src,
73; int32_t iSrcStride, 73; int32_t iSrcStride,
74; uint8_t *pDst, 74; uint8_t *pDst,
75; int32_t iDstStride, 75; int32_t iDstStride,
76; uint8_t *pABCD, 76; uint8_t *pABCD,
77; int32_t iHeigh );77; int32_t iHeigh );
78;*******************************************************************************78;*******************************************************************************
79WELS_EXTERN McChromaWidthEq4_mmx79WELS_EXTERN McChromaWidthEq4_mmx
80McChromaWidthEq4_mmx:80McChromaWidthEq4_mmx:
81 push esi81 push esi
82 push edi82 push edi
83 push ebx83 push ebx
84 84
85 mov eax, [esp +12 + 20]85 mov eax, [esp +12 + 20]
86 movd mm3, [eax]86 movd mm3, [eax]
87 WELS_Zero mm787 WELS_Zero mm7
88 punpcklbw mm3, mm388 punpcklbw mm3, mm3
89 movq mm4, mm389 movq mm4, mm3
90 punpcklwd mm3, mm3 90 punpcklwd mm3, mm3
91 punpckhwd mm4, mm4 91 punpckhwd mm4, mm4
92 92
93 movq mm5, mm393 movq mm5, mm3
94 punpcklbw mm3, mm794 punpcklbw mm3, mm7
95 punpckhbw mm5, mm795 punpckhbw mm5, mm7
96 96
97 movq mm6, mm497 movq mm6, mm4
98 punpcklbw mm4, mm798 punpcklbw mm4, mm7
99 punpckhbw mm6, mm799 punpckhbw mm6, mm7
100 100
101 mov esi, [esp +12+ 4] 101 mov esi, [esp +12+ 4]
102 mov eax, [esp + 12 + 8] 102 mov eax, [esp + 12 + 8]
103 mov edi, [esp + 12 + 12] 103 mov edi, [esp + 12 + 12]
104 mov edx, [esp + 12 + 16] 104 mov edx, [esp + 12 + 16]
105 mov ecx, [esp + 12 + 24] 105 mov ecx, [esp + 12 + 24]
106 106
107 lea ebx, [esi + eax]107 lea ebx, [esi + eax]
108 movd mm0, [esi]108 movd mm0, [esi]
109 movd mm1, [esi+1]109 movd mm1, [esi+1]
110 punpcklbw mm0, mm7110 punpcklbw mm0, mm7
111 punpcklbw mm1, mm7111 punpcklbw mm1, mm7
112.xloop:112.xloop:
113 113
114 pmullw mm0, mm3114 pmullw mm0, mm3
115 pmullw mm1, mm5115 pmullw mm1, mm5
116 paddw mm0, mm1116 paddw mm0, mm1
117 117
118 movd mm1, [ebx]118 movd mm1, [ebx]
119 punpcklbw mm1, mm7119 punpcklbw mm1, mm7
120 movq mm2, mm1120 movq mm2, mm1
121 pmullw mm1, mm4121 pmullw mm1, mm4
122 paddw mm0, mm1122 paddw mm0, mm1
123 123
124 movd mm1, [ebx+1]124 movd mm1, [ebx+1]
125 punpcklbw mm1, mm7125 punpcklbw mm1, mm7
126 movq mm7, mm1126 movq mm7, mm1
127 pmullw mm1,mm6127 pmullw mm1,mm6
128 paddw mm0, mm1128 paddw mm0, mm1
129 movq mm1,mm7129 movq mm1,mm7
130 130
131 paddw mm0, [h264_d0x20_mmx]131 paddw mm0, [h264_d0x20_mmx]
132 psrlw mm0, 6132 psrlw mm0, 6
133 133
134 WELS_Zero mm7134 WELS_Zero mm7
135 packuswb mm0, mm7135 packuswb mm0, mm7
136 movd [edi], mm0 136 movd [edi], mm0
137 137
138 movq mm0, mm2138 movq mm0, mm2
139 139
140 lea edi, [edi +edx ]140 lea edi, [edi +edx ]
141 lea ebx, [ebx + eax]141 lea ebx, [ebx + eax]
142 142
143 dec ecx143 dec ecx
144 jnz near .xloop144 jnz near .xloop
145 WELSEMMS145 WELSEMMS
146 pop ebx146 pop ebx
147 pop edi147 pop edi
148 pop esi148 pop esi
149 ret149 ret
150 150
151 151
152ALIGN 16152ALIGN 16
153;*******************************************************************************153;*******************************************************************************
154; void McChromaWidthEq8_sse2( uint8_t *pSrc, 154; void McChromaWidthEq8_sse2( uint8_t *pSrc,
155; int32_t iSrcStride, 155; int32_t iSrcStride,
156; uint8_t *pDst, 156; uint8_t *pDst,
157; int32_t iDstStride, 157; int32_t iDstStride,
158; uint8_t *pABCD, 158; uint8_t *pABCD,
159; int32_t iheigh );159; int32_t iheigh );
160;*******************************************************************************160;*******************************************************************************
161WELS_EXTERN McChromaWidthEq8_sse2161WELS_EXTERN McChromaWidthEq8_sse2
162McChromaWidthEq8_sse2:162McChromaWidthEq8_sse2:
163 push esi163 push esi
164 push edi164 push edi
165 push ebx165 push ebx
166 166
167 mov eax, [esp +12 + 20]167 mov eax, [esp +12 + 20]
168 movd xmm3, [eax]168 movd xmm3, [eax]
169 WELS_Zero xmm7169 WELS_Zero xmm7
170 punpcklbw xmm3, xmm3170 punpcklbw xmm3, xmm3
171 punpcklwd xmm3, xmm3171 punpcklwd xmm3, xmm3
172 172
173 movdqa xmm4, xmm3173 movdqa xmm4, xmm3
174 punpckldq xmm3, xmm3174 punpckldq xmm3, xmm3
175 punpckhdq xmm4, xmm4175 punpckhdq xmm4, xmm4
176 movdqa xmm5, xmm3176 movdqa xmm5, xmm3
177 movdqa xmm6, xmm4177 movdqa xmm6, xmm4
178 178
179 punpcklbw xmm3, xmm7179 punpcklbw xmm3, xmm7
180 punpckhbw xmm5, xmm7180 punpckhbw xmm5, xmm7
181 punpcklbw xmm4, xmm7181 punpcklbw xmm4, xmm7
182 punpckhbw xmm6, xmm7182 punpckhbw xmm6, xmm7
183 183
184 mov esi, [esp +12+ 4] 184 mov esi, [esp +12+ 4]
185 mov eax, [esp + 12 + 8] 185 mov eax, [esp + 12 + 8]
186 mov edi, [esp + 12 + 12] 186 mov edi, [esp + 12 + 12]
187 mov edx, [esp + 12 + 16] 187 mov edx, [esp + 12 + 16]
188 mov ecx, [esp + 12 + 24] 188 mov ecx, [esp + 12 + 24]
189 189
190 lea ebx, [esi + eax]190 lea ebx, [esi + eax]
191 movq xmm0, [esi]191 movq xmm0, [esi]
192 movq xmm1, [esi+1]192 movq xmm1, [esi+1]
193 punpcklbw xmm0, xmm7193 punpcklbw xmm0, xmm7
194 punpcklbw xmm1, xmm7194 punpcklbw xmm1, xmm7
195.xloop:195.xloop:
196 196
197 pmullw xmm0, xmm3197 pmullw xmm0, xmm3
198 pmullw xmm1, xmm5198 pmullw xmm1, xmm5
199 paddw xmm0, xmm1199 paddw xmm0, xmm1
200 200
201 movq xmm1, [ebx]201 movq xmm1, [ebx]
202 punpcklbw xmm1, xmm7202 punpcklbw xmm1, xmm7
203 movdqa xmm2, xmm1203 movdqa xmm2, xmm1
204 pmullw xmm1, xmm4204 pmullw xmm1, xmm4
205 paddw xmm0, xmm1205 paddw xmm0, xmm1
206 206
207 movq xmm1, [ebx+1]207 movq xmm1, [ebx+1]
208 punpcklbw xmm1, xmm7208 punpcklbw xmm1, xmm7
209 movdqa xmm7, xmm1209 movdqa xmm7, xmm1
210 pmullw xmm1, xmm6210 pmullw xmm1, xmm6
211 paddw xmm0, xmm1211 paddw xmm0, xmm1
212 movdqa xmm1,xmm7212 movdqa xmm1,xmm7
213 213
214 paddw xmm0, [h264_d0x20_sse2]214 paddw xmm0, [h264_d0x20_sse2]
215 psrlw xmm0, 6215 psrlw xmm0, 6
216 216
217 WELS_Zero xmm7217 WELS_Zero xmm7
218 packuswb xmm0, xmm7218 packuswb xmm0, xmm7
219 movq [edi], xmm0 219 movq [edi], xmm0
220 220
221 movdqa xmm0, xmm2221 movdqa xmm0, xmm2
222 222
223 lea edi, [edi +edx ]223 lea edi, [edi +edx ]
224 lea ebx, [ebx + eax]224 lea ebx, [ebx + eax]
225 225
226 dec ecx226 dec ecx
227 jnz near .xloop227 jnz near .xloop
228 228
229 pop ebx229 pop ebx
230 pop edi230 pop edi
231 pop esi231 pop esi
232 ret232 ret
233 233
234 234
235 235
236 236
237ALIGN 16237ALIGN 16
238;***********************************************************************238;***********************************************************************
239; void McChromaWidthEq8_ssse3( uint8_t *pSrc,239; void McChromaWidthEq8_ssse3( uint8_t *pSrc,
240; int32_t iSrcStride, 240; int32_t iSrcStride,
241; uint8_t *pDst, 241; uint8_t *pDst,
242; int32_t iDstStride,242; int32_t iDstStride,
243; uint8_t *pABCD,243; uint8_t *pABCD,
244; int32_t iHeigh);244; int32_t iHeigh);
245;***********************************************************************245;***********************************************************************
246WELS_EXTERN McChromaWidthEq8_ssse3246WELS_EXTERN McChromaWidthEq8_ssse3
247McChromaWidthEq8_ssse3:247McChromaWidthEq8_ssse3:
248 push ebx248 push ebx
249 push esi249 push esi
250 push edi250 push edi
251 251
252 mov eax, [esp + 12 + 20]252 mov eax, [esp + 12 + 20]
253 253
254 pxor xmm7, xmm7254 pxor xmm7, xmm7
255 movd xmm5, [eax] 255 movd xmm5, [eax]
256 punpcklwd xmm5, xmm5 256 punpcklwd xmm5, xmm5
257 punpckldq xmm5, xmm5 257 punpckldq xmm5, xmm5
258 movdqa xmm6, xmm5258 movdqa xmm6, xmm5
259 punpcklqdq xmm5, xmm5259 punpcklqdq xmm5, xmm5
260 punpckhqdq xmm6, xmm6 260 punpckhqdq xmm6, xmm6
261 261
262 mov eax, [esp + 12 + 4] 262 mov eax, [esp + 12 + 4]
263 mov edx, [esp + 12 + 8] 263 mov edx, [esp + 12 + 8]
264 mov esi, [esp + 12 + 12] 264 mov esi, [esp + 12 + 12]
265 mov edi, [esp + 12 + 16] 265 mov edi, [esp + 12 + 16]
266 mov ecx, [esp + 12 + 24] 266 mov ecx, [esp + 12 + 24]
267 267
268 sub esi, edi268 sub esi, edi
269 sub esi, edi269 sub esi, edi
270 movdqa xmm7, [h264_d0x20_sse2]270 movdqa xmm7, [h264_d0x20_sse2]
271 271
272 movdqu xmm0, [eax]272 movdqu xmm0, [eax]
273 movdqa xmm1, xmm0273 movdqa xmm1, xmm0
274 psrldq xmm1, 1274 psrldq xmm1, 1
275 punpcklbw xmm0, xmm1275 punpcklbw xmm0, xmm1
276 276
277.hloop_chroma: 277.hloop_chroma:
278 lea esi, [esi+2*edi]278 lea esi, [esi+2*edi]
279 279
280 movdqu xmm2, [eax+edx]280 movdqu xmm2, [eax+edx]
281 movdqa xmm3, xmm2281 movdqa xmm3, xmm2
282 psrldq xmm3, 1282 psrldq xmm3, 1
283 punpcklbw xmm2, xmm3283 punpcklbw xmm2, xmm3
284 movdqa xmm4, xmm2284 movdqa xmm4, xmm2
285 285
286 pmaddubsw xmm0, xmm5286 pmaddubsw xmm0, xmm5
287 pmaddubsw xmm2, xmm6287 pmaddubsw xmm2, xmm6
288 paddw xmm0, xmm2288 paddw xmm0, xmm2
289 paddw xmm0, xmm7289 paddw xmm0, xmm7
290 psrlw xmm0, 6290 psrlw xmm0, 6
291 packuswb xmm0, xmm0291 packuswb xmm0, xmm0
292 movq [esi],xmm0 292 movq [esi],xmm0
293 293
294 lea eax, [eax+2*edx]294 lea eax, [eax+2*edx]
295 movdqu xmm2, [eax]295 movdqu xmm2, [eax]
296 movdqa xmm3, xmm2296 movdqa xmm3, xmm2
297 psrldq xmm3, 1297 psrldq xmm3, 1
298 punpcklbw xmm2, xmm3298 punpcklbw xmm2, xmm3
299 movdqa xmm0, xmm2299 movdqa xmm0, xmm2
300 300
301 pmaddubsw xmm4, xmm5301 pmaddubsw xmm4, xmm5
302 pmaddubsw xmm2, xmm6302 pmaddubsw xmm2, xmm6
303 paddw xmm4, xmm2303 paddw xmm4, xmm2
304 paddw xmm4, xmm7304 paddw xmm4, xmm7
305 psrlw xmm4, 6305 psrlw xmm4, 6
306 packuswb xmm4, xmm4306 packuswb xmm4, xmm4
307 movq [esi+edi],xmm4 307 movq [esi+edi],xmm4
308 308
309 sub ecx, 2309 sub ecx, 2
310 jnz .hloop_chroma310 jnz .hloop_chroma
311 pop edi311 pop edi
312 pop esi312 pop esi
313 pop ebx313 pop ebx
314 314
315 ret315 ret
316 316
317 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