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

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

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

revision 1540, Sun Aug 29 10:02:38 2004 UTC revision 1793, Tue Nov 11 20:46:24 2008 UTC
# Line 29  Line 29 
29                  %ifdef MARK_FUNCS                  %ifdef MARK_FUNCS
30                          global _%1:function %1.endfunc-%1                          global _%1:function %1.endfunc-%1
31                          %define %1 _%1:function %1.endfunc-%1                          %define %1 _%1:function %1.endfunc-%1
32                            %define ENDFUNC .endfunc
33                  %else                  %else
34                          global _%1                          global _%1
35                          %define %1 _%1                          %define %1 _%1
36                            %define ENDFUNC
37                  %endif                  %endif
38          %else          %else
39                  %ifdef MARK_FUNCS                  %ifdef MARK_FUNCS
40                          global %1:function %1.endfunc-%1                          global %1:function %1.endfunc-%1
41                            %define ENDFUNC .endfunc
42                  %else                  %else
43                          global %1                          global %1
44                            %define ENDFUNC
45                  %endif                  %endif
46          %endif          %endif
47  %endmacro  %endmacro
# Line 105  Line 109 
109  cglobal interpolate8x8_halfpel_v_mmx  cglobal interpolate8x8_halfpel_v_mmx
110  cglobal interpolate8x8_halfpel_hv_mmx  cglobal interpolate8x8_halfpel_hv_mmx
111    
112    cglobal interpolate8x4_halfpel_h_mmx
113    cglobal interpolate8x4_halfpel_v_mmx
114    cglobal interpolate8x4_halfpel_hv_mmx
115    
116  cglobal interpolate8x8_avg4_mmx  cglobal interpolate8x8_avg4_mmx
117  cglobal interpolate8x8_avg2_mmx  cglobal interpolate8x8_avg2_mmx
118    
# Line 185  Line 193 
193    pop esi    pop esi
194    
195    ret    ret
196  .endfunc  ENDFUNC
197    
198    
199  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 245  Line 253 
253    pop esi    pop esi
254    
255    ret    ret
256  .endfunc  ENDFUNC
257    
258    
259  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 337  Line 345 
345    pop esi    pop esi
346    
347    ret    ret
348  .endfunc  ENDFUNC
349    
350    ;-----------------------------------------------------------------------------
351    ;
352    ; void interpolate8x4_halfpel_h_mmx(uint8_t * const dst,
353    ;                       const uint8_t * const src,
354    ;                       const uint32_t stride,
355    ;                       const uint32_t rounding);
356    ;
357    ;-----------------------------------------------------------------------------
358    
359    ALIGN 16
360    interpolate8x4_halfpel_h_mmx:
361    
362      push esi
363      push edi
364      mov eax, [esp + 8 + 16]       ; rounding
365    
366      movq mm7, [rounding1_mmx + eax * 8]
367    
368      mov edi, [esp + 8 + 4]        ; dst
369      mov esi, [esp + 8 + 8]        ; src
370      mov edx, [esp + 8 + 12]       ; stride
371    
372      pxor mm6, mm6                 ; zero
373    
374      COPY_H_MMX
375      COPY_H_MMX
376      COPY_H_MMX
377      COPY_H_MMX
378    
379      pop edi
380      pop esi
381    
382      ret
383    ENDFUNC
384    
385    
386    ;-----------------------------------------------------------------------------
387    ;
388    ; void interpolate8x4_halfpel_v_mmx(uint8_t * const dst,
389    ;                       const uint8_t * const src,
390    ;                       const uint32_t stride,
391    ;                       const uint32_t rounding);
392    ;
393    ;-----------------------------------------------------------------------------
394    
395    ALIGN 16
396    interpolate8x4_halfpel_v_mmx:
397    
398      push esi
399      push edi
400    
401      mov eax, [esp + 8 + 16]       ; rounding
402    
403      movq mm7, [rounding1_mmx + eax * 8]
404    
405      mov edi, [esp + 8 + 4]        ; dst
406      mov esi, [esp + 8 + 8]        ; src
407      mov edx, [esp + 8 + 12]       ; stride
408    
409      pxor mm6, mm6                 ; zero
410    
411    
412      COPY_V_MMX
413      COPY_V_MMX
414      COPY_V_MMX
415      COPY_V_MMX
416    
417      pop edi
418      pop esi
419    
420      ret
421    ENDFUNC
422    
423    
424    ;-----------------------------------------------------------------------------
425    ;
426    ; void interpolate8x4_halfpel_hv_mmx(uint8_t * const dst,
427    ;                       const uint8_t * const src,
428    ;                       const uint32_t stride,
429    ;                       const uint32_t rounding);
430    ;
431    ;
432    ;-----------------------------------------------------------------------------
433    
434    ALIGN 16
435    interpolate8x4_halfpel_hv_mmx:
436    
437      push esi
438      push edi
439    
440      mov eax, [esp + 8 + 16]   ; rounding
441    
442      movq mm7, [rounding2_mmx + eax * 8]
443    
444      mov edi, [esp + 8 + 4]    ; dst
445      mov esi, [esp + 8 + 8]    ; src
446    
447      mov eax, 8
448    
449      pxor mm6, mm6             ; zero
450    
451      mov edx, [esp + 8 + 12]   ; stride
452    
453      COPY_HV_MMX
454      COPY_HV_MMX
455      COPY_HV_MMX
456      COPY_HV_MMX
457    
458      pop edi
459      pop esi
460    
461      ret
462    ENDFUNC
463    
464  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
465  ;  ;
# Line 470  Line 592 
592    AVG2_MMX_RND0    AVG2_MMX_RND0
593    lea ecx, [ecx+2*edx]    lea ecx, [ecx+2*edx]
594    
595  .start0  .start0:
596    
597    AVG2_MMX_RND0    AVG2_MMX_RND0
598    lea ecx, [ecx+2*edx]    lea ecx, [ecx+2*edx]
# Line 483  Line 605 
605    pop ebx    pop ebx
606    ret    ret
607    
608  .rounding1  .rounding1:
609    mov eax, [esp + 4 + 24]       ; height -> eax    mov eax, [esp + 4 + 24]       ; height -> eax
610    sub eax, 8    sub eax, 8
611    test eax, eax    test eax, eax
# Line 500  Line 622 
622    AVG2_MMX_RND1    AVG2_MMX_RND1
623    lea ecx, [ecx+2*edx]    lea ecx, [ecx+2*edx]
624    
625  .start1  .start1:
626    
627    AVG2_MMX_RND1    AVG2_MMX_RND1
628    lea ecx, [ecx+2*edx]    lea ecx, [ecx+2*edx]
# Line 512  Line 634 
634    
635    pop ebx    pop ebx
636    ret    ret
637  .endfunc  ENDFUNC
638    
639    
640  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 680  Line 802 
802    pop ebx    pop ebx
803    ret    ret
804    
805  .rounding1  .rounding1:
806    AVG4_MMX_RND1    AVG4_MMX_RND1
807    lea ecx, [ecx+edx]    lea ecx, [ecx+edx]
808    AVG4_MMX_RND1    AVG4_MMX_RND1
# Line 701  Line 823 
823    pop edi    pop edi
824    pop ebx    pop ebx
825    ret    ret
826  .endfunc  ENDFUNC
827    
828    
829  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 812  Line 934 
934    LOWPASS_6TAP_H_MMX    LOWPASS_6TAP_H_MMX
935    
936    ret    ret
937  .endfunc  ENDFUNC
938    
939  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
940  ;  ;
# Line 930  Line 1052 
1052    
1053    pop ebx    pop ebx
1054    ret    ret
1055  .endfunc  ENDFUNC
1056    
1057  ;===========================================================================  ;===========================================================================
1058  ;  ;
# Line 1043  Line 1165 
1165    ADD_FF_MMX 1    ADD_FF_MMX 1
1166    ADD_FF_MMX 0    ADD_FF_MMX 0
1167    ret    ret
1168  .endfunc  ENDFUNC
1169    
1170  ;===========================================================================  ;===========================================================================
1171  ;  ;
# Line 1089  Line 1211 
1211    lea ecx,[ecx+edx]    lea ecx,[ecx+edx]
1212    ADD_FH_MMX    ADD_FH_MMX
1213    ret    ret
1214  .endfunc  ENDFUNC
1215    
1216  ;===========================================================================  ;===========================================================================
1217  ;  ;
# Line 1136  Line 1258 
1258    lea ecx,[ecx+edx]    lea ecx,[ecx+edx]
1259    ADD_HF_MMX    ADD_HF_MMX
1260    ret    ret
1261  .endfunc  ENDFUNC
1262    
1263  ; 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
1264  ; 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 1247  Line 1369 
1369    ADD_HH_MMX    ADD_HH_MMX
1370    
1371    ret    ret
1372  .endfunc  ENDFUNC
1373    
1374    
1375    %ifidn __OUTPUT_FORMAT__,elf
1376    section ".note.GNU-stack" noalloc noexec nowrite progbits
1377    %endif
1378    

Legend:
Removed from v.1540  
changed lines
  Added in v.1793

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