[cvs] / xvidcore / src / image / x86_asm / interpolate8x8_mmx.asm Repository:
ViewVC logotype

Diff of /xvidcore/src/image/x86_asm/interpolate8x8_mmx.asm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.15, Tue Aug 10 21:58:55 2004 UTC revision 1.18, Tue Sep 13 12:12:15 2005 UTC
# Line 26  Line 26 
26    
27  %macro cglobal 1  %macro cglobal 1
28          %ifdef PREFIX          %ifdef PREFIX
29                    %ifdef MARK_FUNCS
30                            global _%1:function %1.endfunc-%1
31                            %define %1 _%1:function %1.endfunc-%1
32                    %else
33                  global _%1                  global _%1
34                  %define %1 _%1                  %define %1 _%1
35                    %endif
36            %else
37                    %ifdef MARK_FUNCS
38                            global %1:function %1.endfunc-%1
39          %else          %else
40                  global %1                  global %1
41          %endif          %endif
42            %endif
43  %endmacro  %endmacro
44    
45  ;=============================================================================  ;=============================================================================
# Line 96  Line 105 
105  cglobal interpolate8x8_halfpel_v_mmx  cglobal interpolate8x8_halfpel_v_mmx
106  cglobal interpolate8x8_halfpel_hv_mmx  cglobal interpolate8x8_halfpel_hv_mmx
107    
108    cglobal interpolate8x4_halfpel_h_mmx
109    cglobal interpolate8x4_halfpel_v_mmx
110    cglobal interpolate8x4_halfpel_hv_mmx
111    
112  cglobal interpolate8x8_avg4_mmx  cglobal interpolate8x8_avg4_mmx
113  cglobal interpolate8x8_avg2_mmx  cglobal interpolate8x8_avg2_mmx
114    
# Line 176  Line 189 
189    pop esi    pop esi
190    
191    ret    ret
192    .endfunc
193    
194    
195  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 235  Line 249 
249    pop esi    pop esi
250    
251    ret    ret
252    .endfunc
253    
254    
255  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 326  Line 341 
341    pop esi    pop esi
342    
343    ret    ret
344    .endfunc
345    
346    ;-----------------------------------------------------------------------------
347    ;
348    ; void interpolate8x4_halfpel_h_mmx(uint8_t * const dst,
349    ;                       const uint8_t * const src,
350    ;                       const uint32_t stride,
351    ;                       const uint32_t rounding);
352    ;
353    ;-----------------------------------------------------------------------------
354    
355    ALIGN 16
356    interpolate8x4_halfpel_h_mmx:
357    
358      push esi
359      push edi
360      mov eax, [esp + 8 + 16]       ; rounding
361    
362      movq mm7, [rounding1_mmx + eax * 8]
363    
364      mov edi, [esp + 8 + 4]        ; dst
365      mov esi, [esp + 8 + 8]        ; src
366      mov edx, [esp + 8 + 12]       ; stride
367    
368      pxor mm6, mm6                 ; zero
369    
370      COPY_H_MMX
371      COPY_H_MMX
372      COPY_H_MMX
373      COPY_H_MMX
374    
375      pop edi
376      pop esi
377    
378      ret
379    .endfunc
380    
381    
382    ;-----------------------------------------------------------------------------
383    ;
384    ; void interpolate8x4_halfpel_v_mmx(uint8_t * const dst,
385    ;                       const uint8_t * const src,
386    ;                       const uint32_t stride,
387    ;                       const uint32_t rounding);
388    ;
389    ;-----------------------------------------------------------------------------
390    
391    ALIGN 16
392    interpolate8x4_halfpel_v_mmx:
393    
394      push esi
395      push edi
396    
397      mov eax, [esp + 8 + 16]       ; rounding
398    
399      movq mm7, [rounding1_mmx + eax * 8]
400    
401      mov edi, [esp + 8 + 4]        ; dst
402      mov esi, [esp + 8 + 8]        ; src
403      mov edx, [esp + 8 + 12]       ; stride
404    
405      pxor mm6, mm6                 ; zero
406    
407    
408      COPY_V_MMX
409      COPY_V_MMX
410      COPY_V_MMX
411      COPY_V_MMX
412    
413      pop edi
414      pop esi
415    
416      ret
417    .endfunc
418    
419    
420    ;-----------------------------------------------------------------------------
421    ;
422    ; void interpolate8x4_halfpel_hv_mmx(uint8_t * const dst,
423    ;                       const uint8_t * const src,
424    ;                       const uint32_t stride,
425    ;                       const uint32_t rounding);
426    ;
427    ;
428    ;-----------------------------------------------------------------------------
429    
430    ALIGN 16
431    interpolate8x4_halfpel_hv_mmx:
432    
433      push esi
434      push edi
435    
436      mov eax, [esp + 8 + 16]   ; rounding
437    
438      movq mm7, [rounding2_mmx + eax * 8]
439    
440      mov edi, [esp + 8 + 4]    ; dst
441      mov esi, [esp + 8 + 8]    ; src
442    
443      mov eax, 8
444    
445      pxor mm6, mm6             ; zero
446    
447      mov edx, [esp + 8 + 12]   ; stride
448    
449      COPY_HV_MMX
450      COPY_HV_MMX
451      COPY_HV_MMX
452      COPY_HV_MMX
453    
454      pop edi
455      pop esi
456    
457      ret
458    .endfunc
459    
460  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
461  ;  ;
# Line 500  Line 630 
630    
631    pop ebx    pop ebx
632    ret    ret
633    .endfunc
634    
635    
636  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 688  Line 819 
819    pop edi    pop edi
820    pop ebx    pop ebx
821    ret    ret
822    .endfunc
823    
824    
825  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 798  Line 930 
930    LOWPASS_6TAP_H_MMX    LOWPASS_6TAP_H_MMX
931    
932    ret    ret
933    .endfunc
934    
935  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
936  ;  ;
# Line 915  Line 1048 
1048    
1049    pop ebx    pop ebx
1050    ret    ret
1051    .endfunc
1052    
1053  ;===========================================================================  ;===========================================================================
1054  ;  ;
# Line 1027  Line 1161 
1161    ADD_FF_MMX 1    ADD_FF_MMX 1
1162    ADD_FF_MMX 0    ADD_FF_MMX 0
1163    ret    ret
1164    .endfunc
1165    
1166  ;===========================================================================  ;===========================================================================
1167  ;  ;
# Line 1072  Line 1207 
1207    lea ecx,[ecx+edx]    lea ecx,[ecx+edx]
1208    ADD_FH_MMX    ADD_FH_MMX
1209    ret    ret
1210    .endfunc
1211    
1212  ;===========================================================================  ;===========================================================================
1213  ;  ;
# Line 1118  Line 1254 
1254    lea ecx,[ecx+edx]    lea ecx,[ecx+edx]
1255    ADD_HF_MMX    ADD_HF_MMX
1256    ret    ret
1257    .endfunc
1258    
1259  ; The trick is to correct the result of 'pavgb' with some combination of the  ; The trick is to correct the result of 'pavgb' with some combination of the
1260  ; lsb's of the 4 input values i,j,k,l, and their intermediate 'pavgb' (s and t).  ; lsb's of the 4 input values i,j,k,l, and their intermediate 'pavgb' (s and t).
# Line 1228  Line 1365 
1365    ADD_HH_MMX    ADD_HH_MMX
1366    
1367    ret    ret
1368    .endfunc
1369    

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.18

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4