[svn] / branches / release-1_2-branch / xvidcore / src / quant / x86_asm / quantize_h263_mmx.asm Repository:
ViewVC logotype

Diff of /branches/release-1_2-branch/xvidcore/src/quant/x86_asm/quantize_h263_mmx.asm

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

revision 1790, Tue Aug 19 09:06:48 2008 UTC revision 1793, Tue Nov 11 20:46:24 2008 UTC
# Line 21  Line 21 
21  ; *  along with this program ; if not, write to the Free Software  ; *  along with this program ; if not, write to the Free Software
22  ; *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA  ; *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
23  ; *  ; *
24  ; * $Id: quantize_h263_mmx.asm,v 1.8 2008-08-19 09:06:48 Isibaar Exp $  ; * $Id: quantize_h263_mmx.asm,v 1.9 2008-11-11 20:46:24 Isibaar Exp $
25  ; *  ; *
26  ; ****************************************************************************/  ; ****************************************************************************/
27    
# Line 35  Line 35 
35                  %ifdef MARK_FUNCS                  %ifdef MARK_FUNCS
36                          global _%1:function %1.endfunc-%1                          global _%1:function %1.endfunc-%1
37                          %define %1 _%1:function %1.endfunc-%1                          %define %1 _%1:function %1.endfunc-%1
38                            %define ENDFUNC .endfunc
39                  %else                  %else
40                          global _%1                          global _%1
41                          %define %1 _%1                          %define %1 _%1
42                            %define ENDFUNC
43                  %endif                  %endif
44          %else          %else
45                  %ifdef MARK_FUNCS                  %ifdef MARK_FUNCS
46                          global %1:function %1.endfunc-%1                          global %1:function %1.endfunc-%1
47                            %define ENDFUNC .endfunc
48                  %else                  %else
49                          global %1                          global %1
50                            %define ENDFUNC
51                  %endif                  %endif
52          %endif          %endif
53  %endmacro  %endmacro
# Line 161  Line 165 
165    movq mm7, [mmx_div+ecx * 8 - 8]    movq mm7, [mmx_div+ecx * 8 - 8]
166    mov ecx,4    mov ecx,4
167    
168  .loop  .loop:
169    movq mm0, [esi]           ; data    movq mm0, [esi]           ; data
170    pxor mm4,mm4    pxor mm4,mm4
171    movq mm1, [esi + 8]    movq mm1, [esi + 8]
# Line 193  Line 197 
197    jne .loop    jne .loop
198    jmp .end    jmp .end
199    
200  .low  .low:
201    movd mm7,ecx    movd mm7,ecx
202    mov ecx,4    mov ecx,4
203  .loop_low  .loop_low:
204    movq mm0, [esi]    movq mm0, [esi]
205    pxor mm4,mm4    pxor mm4,mm4
206    movq mm1, [esi + 8]    movq mm1, [esi + 8]
# Line 227  Line 231 
231    lea edx, [edx+32]    lea edx, [edx+32]
232    jne .loop_low    jne .loop_low
233    
234  .end  .end:
235    mov edx, [esp + 4 + 4]     ; coeff    mov edx, [esp + 4 + 4]     ; coeff
236    mov [edx],ax    mov [edx],ax
237    xor eax,eax                ; return 0    xor eax,eax                ; return 0
238    
239    pop esi    pop esi
240    ret    ret
241  .endfunc  ENDFUNC
242    
243    
244  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 273  Line 277 
277    mov ecx,2    mov ecx,2
278    movlhps xmm7,xmm7    movlhps xmm7,xmm7
279    
280  .loop  .loop:
281    movdqa xmm0, [esi]    movdqa xmm0, [esi]
282    pxor xmm4,xmm4    pxor xmm4,xmm4
283    movdqa xmm1, [esi + 16]    movdqa xmm1, [esi + 16]
# Line 305  Line 309 
309    jne .loop    jne .loop
310    jmp .end    jmp .end
311    
312  .low  .low:
313    movd xmm7,ecx    movd xmm7,ecx
314    mov ecx,2    mov ecx,2
315  .loop_low  .loop_low:
316    movdqa xmm0, [esi]    movdqa xmm0, [esi]
317    pxor xmm4,xmm4    pxor xmm4,xmm4
318    movdqa xmm1, [esi + 16]    movdqa xmm1, [esi + 16]
# Line 339  Line 343 
343    lea edx, [edx+64]    lea edx, [edx+64]
344    jne .loop_low    jne .loop_low
345    
346  .end  .end:
347    mov edx, [esp + 4 + 4]     ; coeff    mov edx, [esp + 4 + 4]     ; coeff
348    mov [edx],ax    mov [edx],ax
349    xor eax,eax                ; return 0    xor eax,eax                ; return 0
350    
351    pop esi    pop esi
352    ret    ret
353  .endfunc  ENDFUNC
354    
355  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
356  ;  ;
# Line 379  Line 383 
383    movq mm7, [mmx_div + eax * 8 - 8] ; divider    movq mm7, [mmx_div + eax * 8 - 8] ; divider
384    
385  ALIGN 8  ALIGN 8
386  .loop  .loop:
387    movq mm0, [esi + 8*ecx]           ; mm0 = [1st]    movq mm0, [esi + 8*ecx]           ; mm0 = [1st]
388    movq mm3, [esi + 8*ecx + 8]    movq mm3, [esi + 8*ecx + 8]
389    pxor mm1, mm1                     ; mm1 = 0    pxor mm1, mm1                     ; mm1 = 0
# Line 407  Line 411 
411    cmp ecx, 16    cmp ecx, 16
412    jnz .loop    jnz .loop
413    
414  .done  .done:
415    pmaddwd mm5, [plus_one]    pmaddwd mm5, [plus_one]
416    movq mm0, mm5    movq mm0, mm5
417    psrlq mm5, 32    psrlq mm5, 32
# Line 421  Line 425 
425    ret    ret
426    
427  ALIGN 8  ALIGN 8
428  .q1loop  .q1loop:
429    movq mm0, [esi + 8*ecx]           ; mm0 = [1st]    movq mm0, [esi + 8*ecx]           ; mm0 = [1st]
430    movq mm3, [esi + 8*ecx+ 8]        ;    movq mm3, [esi + 8*ecx+ 8]        ;
431    pxor mm1, mm1                     ; mm1 = 0    pxor mm1, mm1                     ; mm1 = 0
# Line 450  Line 454 
454    jnz .q1loop    jnz .q1loop
455    
456    jmp .done    jmp .done
457  .endfunc  ENDFUNC
458    
459    
460    
# Line 484  Line 488 
488    cmp al, 1    cmp al, 1
489    jz near .qes2_q1loop    jz near .qes2_q1loop
490    
491  .qes2_not1  .qes2_not1:
492    movq mm0, [mmx_div + eax*8 - 8]           ; divider    movq mm0, [mmx_div + eax*8 - 8]           ; divider
493    movq2dq xmm7, mm0    movq2dq xmm7, mm0
494    movlhps xmm7, xmm7    movlhps xmm7, xmm7
495    
496  ALIGN 16  ALIGN 16
497  .qes2_loop  .qes2_loop:
498    movdqa xmm0, [esi + ecx*8]                ; xmm0 = [1st]    movdqa xmm0, [esi + ecx*8]                ; xmm0 = [1st]
499    movdqa xmm3, [esi + ecx*8 + 16]           ; xmm3 = [2nd]    movdqa xmm3, [esi + ecx*8 + 16]           ; xmm3 = [2nd]
500    pxor xmm1, xmm1    pxor xmm1, xmm1
# Line 518  Line 522 
522    cmp ecx, 16    cmp ecx, 16
523    jnz .qes2_loop    jnz .qes2_loop
524    
525  .qes2_done  .qes2_done:
526    movdqu xmm6, [plus_one]    movdqu xmm6, [plus_one]
527    pmaddwd xmm5, xmm6    pmaddwd xmm5, xmm6
528    movhlps xmm6, xmm5    movhlps xmm6, xmm5
# Line 537  Line 541 
541    ret    ret
542    
543  ALIGN 16  ALIGN 16
544  .qes2_q1loop  .qes2_q1loop:
545    movdqa xmm0, [esi + ecx*8]        ; xmm0 = [1st]    movdqa xmm0, [esi + ecx*8]        ; xmm0 = [1st]
546    movdqa xmm3, [esi + ecx*8 + 16]   ; xmm3 = [2nd]    movdqa xmm3, [esi + ecx*8 + 16]   ; xmm3 = [2nd]
547    pxor xmm1, xmm1    pxor xmm1, xmm1
# Line 565  Line 569 
569    cmp ecx, 16    cmp ecx, 16
570    jnz .qes2_q1loop    jnz .qes2_q1loop
571    jmp .qes2_done    jmp .qes2_done
572  .endfunc  ENDFUNC
573    
574    
575  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 651  Line 655 
655    
656    xor eax, eax                    ; return 0    xor eax, eax                    ; return 0
657    ret    ret
658  .endfunc  ENDFUNC
659    
660  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
661  ;  ;
# Line 736  Line 740 
740    
741    xor eax, eax                      ; return 0    xor eax, eax                      ; return 0
742    ret    ret
743  .endfunc  ENDFUNC
744    
745    
746  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 825  Line 829 
829    
830    xor eax, eax                  ; return 0    xor eax, eax                  ; return 0
831    ret    ret
832  .endfunc  ENDFUNC
833    
834  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
835  ;  ;
# Line 896  Line 900 
900    
901    xor eax, eax              ; return 0    xor eax, eax              ; return 0
902    ret    ret
903  .endfunc  ENDFUNC
904    
905    
906  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 965  Line 969 
969    
970    xor eax, eax              ; return 0    xor eax, eax              ; return 0
971    ret    ret
972  .endfunc  ENDFUNC
973    
974    
975  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 1037  Line 1041 
1041    
1042    xor eax, eax              ; return 0    xor eax, eax              ; return 0
1043    ret    ret
1044  .endfunc  ENDFUNC
1045    
1046    
1047  %ifidn __OUTPUT_FORMAT__,elf  %ifidn __OUTPUT_FORMAT__,elf

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

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