66 |
cglobal transfer_8to16copy_3dne |
cglobal transfer_8to16copy_3dne |
67 |
cglobal transfer_16to8copy_3dne |
cglobal transfer_16to8copy_3dne |
68 |
cglobal transfer_8to16sub_3dne |
cglobal transfer_8to16sub_3dne |
69 |
|
cglobal transfer_8to16subro_3dne |
70 |
cglobal transfer_8to16sub2_3dne |
cglobal transfer_8to16sub2_3dne |
71 |
cglobal transfer_16to8add_3dne |
cglobal transfer_16to8add_3dne |
72 |
cglobal transfer8x8_copy_3dne |
cglobal transfer8x8_copy_3dne |
205 |
; * |
; * |
206 |
; *************************************************************************/ |
; *************************************************************************/ |
207 |
|
|
208 |
%macro COPY_8_TO_16_SUB 1 |
; when second argument == 1, reference (ebx) block is to current (eax) |
209 |
|
%macro COPY_8_TO_16_SUB 2 |
210 |
movq mm1, [eax] ; cur |
movq mm1, [eax] ; cur |
211 |
movq mm0, mm1 |
movq mm0, mm1 |
212 |
movq mm4, [ecx] ; ref |
movq mm4, [ecx] ; ref |
213 |
movq mm6, mm4 |
movq mm6, mm4 |
214 |
|
%if %2 == 1 |
215 |
movq [eax], mm4 |
movq [eax], mm4 |
216 |
|
%endif |
217 |
punpckhbw mm1, mm7 |
punpckhbw mm1, mm7 |
218 |
punpckhbw mm6, mm7 |
punpckhbw mm6, mm7 |
219 |
punpcklbw mm4, mm7 |
punpcklbw mm4, mm7 |
224 |
punpcklbw mm2, mm7 |
punpcklbw mm2, mm7 |
225 |
movq mm5, [byte ecx+edx] ; ref |
movq mm5, [byte ecx+edx] ; ref |
226 |
punpckhbw mm3, mm7 |
punpckhbw mm3, mm7 |
227 |
|
%if %2 == 1 |
228 |
movq [byte eax+edx], mm5 |
movq [byte eax+edx], mm5 |
229 |
|
%endif |
230 |
psubsw mm1, mm6 |
psubsw mm1, mm6 |
231 |
|
|
232 |
movq mm6, mm5 |
movq mm6, mm5 |
258 |
pxor mm7, mm7 |
pxor mm7, mm7 |
259 |
nop |
nop |
260 |
align 4 |
align 4 |
261 |
COPY_8_TO_16_SUB 0 |
COPY_8_TO_16_SUB 0, 1 |
262 |
COPY_8_TO_16_SUB 1 |
COPY_8_TO_16_SUB 1, 1 |
263 |
COPY_8_TO_16_SUB 2 |
COPY_8_TO_16_SUB 2, 1 |
264 |
COPY_8_TO_16_SUB 3 |
COPY_8_TO_16_SUB 3, 1 |
265 |
|
mov edi,ecx |
266 |
|
ret |
267 |
|
|
268 |
|
align 16 |
269 |
|
transfer_8to16subro_3dne: |
270 |
|
mov eax, [esp + 8] ; Cur |
271 |
|
mov ecx, [esp +12] ; Ref |
272 |
|
push edi |
273 |
|
mov edx, [dword esp+4+16] ; Stride |
274 |
|
mov edi, [esp+4+ 4] ; Dst |
275 |
|
pxor mm7, mm7 |
276 |
|
nop |
277 |
|
align 4 |
278 |
|
COPY_8_TO_16_SUB 0, 0 |
279 |
|
COPY_8_TO_16_SUB 1, 0 |
280 |
|
COPY_8_TO_16_SUB 2, 0 |
281 |
|
COPY_8_TO_16_SUB 3, 0 |
282 |
mov edi,ecx |
mov edi,ecx |
283 |
ret |
ret |
284 |
|
|