19 |
; * along with this program ; if not, write to the Free Software |
; * along with this program ; if not, write to the Free Software |
20 |
; * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
; * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
21 |
; * |
; * |
22 |
; * $Id: mem_transfer_3dne.asm,v 1.4 2004-07-24 11:46:08 edgomez Exp $ |
; * $Id: mem_transfer_3dne.asm,v 1.8 2007-09-11 12:41:13 suxen_drol Exp $ |
23 |
; * |
; * |
24 |
; ***************************************************************************/ |
; ***************************************************************************/ |
25 |
|
|
30 |
|
|
31 |
%macro cglobal 1 |
%macro cglobal 1 |
32 |
%ifdef PREFIX |
%ifdef PREFIX |
33 |
|
%ifdef MARK_FUNCS |
34 |
|
global _%1:function %1.endfunc-%1 |
35 |
|
%define %1 _%1:function %1.endfunc-%1 |
36 |
|
%else |
37 |
global _%1 |
global _%1 |
38 |
%define %1 _%1 |
%define %1 _%1 |
39 |
|
%endif |
40 |
|
%else |
41 |
|
%ifdef MARK_FUNCS |
42 |
|
global %1:function %1.endfunc-%1 |
43 |
%else |
%else |
44 |
global %1 |
global %1 |
45 |
%endif |
%endif |
46 |
|
%endif |
47 |
%endmacro |
%endmacro |
48 |
|
|
49 |
;============================================================================= |
;============================================================================= |
80 |
cglobal transfer_8to16sub2_3dne |
cglobal transfer_8to16sub2_3dne |
81 |
cglobal transfer_16to8add_3dne |
cglobal transfer_16to8add_3dne |
82 |
cglobal transfer8x8_copy_3dne |
cglobal transfer8x8_copy_3dne |
83 |
|
cglobal transfer8x4_copy_3dne |
84 |
|
|
85 |
;----------------------------------------------------------------------------- |
;----------------------------------------------------------------------------- |
86 |
; |
; |
149 |
movq [byte ecx+1*64+48], mm6 |
movq [byte ecx+1*64+48], mm6 |
150 |
movq [ecx+1*64+40], mm7 |
movq [ecx+1*64+40], mm7 |
151 |
ret |
ret |
152 |
|
.endfunc |
153 |
|
|
154 |
|
|
155 |
;----------------------------------------------------------------------------- |
;----------------------------------------------------------------------------- |
195 |
movq [eax+4*edx], mm7 |
movq [eax+4*edx], mm7 |
196 |
movq [ecx+2*edx], mm6 |
movq [ecx+2*edx], mm6 |
197 |
ret |
ret |
198 |
|
.endfunc |
199 |
|
|
200 |
;----------------------------------------------------------------------------- |
;----------------------------------------------------------------------------- |
201 |
; |
; |
254 |
mov eax, [esp + 8] ; Cur |
mov eax, [esp + 8] ; Cur |
255 |
mov ecx, [esp +12] ; Ref |
mov ecx, [esp +12] ; Ref |
256 |
push edi |
push edi |
257 |
mov edx, [dword esp+4+16] ; Stride |
mov edx, [esp+4+16] ; Stride |
258 |
mov edi, [esp+4+ 4] ; Dst |
mov edi, [esp+4+ 4] ; Dst |
259 |
pxor mm7, mm7 |
pxor mm7, mm7 |
260 |
nop |
nop |
265 |
COPY_8_TO_16_SUB 3, 1 |
COPY_8_TO_16_SUB 3, 1 |
266 |
mov edi, ecx |
mov edi, ecx |
267 |
ret |
ret |
268 |
|
.endfunc |
269 |
|
|
270 |
ALIGN 16 |
ALIGN 16 |
271 |
transfer_8to16subro_3dne: |
transfer_8to16subro_3dne: |
272 |
mov eax, [esp + 8] ; Cur |
mov eax, [esp + 8] ; Cur |
273 |
mov ecx, [esp +12] ; Ref |
mov ecx, [esp +12] ; Ref |
274 |
push edi |
push edi |
275 |
mov edx, [dword esp+4+16] ; Stride |
mov edx, [esp+4+16] ; Stride |
276 |
mov edi, [esp+4+ 4] ; Dst |
mov edi, [esp+4+ 4] ; Dst |
277 |
pxor mm7, mm7 |
pxor mm7, mm7 |
278 |
nop |
nop |
283 |
COPY_8_TO_16_SUB 3, 0 |
COPY_8_TO_16_SUB 3, 0 |
284 |
mov edi, ecx |
mov edi, ecx |
285 |
ret |
ret |
286 |
|
.endfunc |
287 |
|
|
288 |
|
|
289 |
;----------------------------------------------------------------------------- |
;----------------------------------------------------------------------------- |
355 |
COPY_8_TO_16_SUB2_SSE 3 |
COPY_8_TO_16_SUB2_SSE 3 |
356 |
|
|
357 |
ret |
ret |
358 |
|
.endfunc |
359 |
|
|
360 |
|
|
361 |
;----------------------------------------------------------------------------- |
;----------------------------------------------------------------------------- |
403 |
lea ecx,[byte ecx+2*edx] |
lea ecx,[byte ecx+2*edx] |
404 |
COPY_16_TO_8_ADD 3 |
COPY_16_TO_8_ADD 3 |
405 |
ret |
ret |
406 |
|
.endfunc |
407 |
|
|
408 |
;----------------------------------------------------------------------------- |
;----------------------------------------------------------------------------- |
409 |
; |
; |
436 |
lea ecx,[byte ecx+2*edx] |
lea ecx,[byte ecx+2*edx] |
437 |
COPY_8_TO_8 |
COPY_8_TO_8 |
438 |
ret |
ret |
439 |
|
.endfunc |
440 |
|
|
441 |
|
;----------------------------------------------------------------------------- |
442 |
|
; |
443 |
|
; void transfer8x4_copy_3dne(uint8_t * const dst, |
444 |
|
; const uint8_t * const src, |
445 |
|
; const uint32_t stride); |
446 |
|
; |
447 |
|
; |
448 |
|
;----------------------------------------------------------------------------- |
449 |
|
|
450 |
|
ALIGN 16 |
451 |
|
transfer8x4_copy_3dne: |
452 |
|
mov eax, [esp+ 8] ; Src |
453 |
|
mov edx, [esp+12] ; Stride |
454 |
|
mov ecx, [esp+ 4] ; Dst |
455 |
|
|
456 |
|
COPY_8_TO_8 |
457 |
|
lea ecx,[byte ecx+2*edx] |
458 |
|
COPY_8_TO_8 |
459 |
|
ret |
460 |
|
.endfunc |
461 |
|
|