[svn] / trunk / xvidcore / src / quant / x86_asm / quantize_mpeg_mmx.asm Repository:
ViewVC logotype

Diff of /trunk/xvidcore/src/quant/x86_asm/quantize_mpeg_mmx.asm

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

revision 1795, Wed Nov 26 01:04:34 2008 UTC revision 1877, Wed Sep 16 17:11:39 2009 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_mpeg_mmx.asm,v 1.11 2008-11-26 01:04:34 Isibaar Exp $  ; * $Id: quantize_mpeg_mmx.asm,v 1.16 2009-09-16 17:07:58 Isibaar Exp $
25  ; *  ; *
26  ; *************************************************************************/  ; *************************************************************************/
27    
# Line 111  Line 111 
111  ; Code  ; Code
112  ;=============================================================================  ;=============================================================================
113    
114  SECTION .rotext align=SECTION_ALIGN  TEXT
115    
116  cglobal quant_mpeg_intra_mmx  cglobal quant_mpeg_intra_mmx
117  cglobal quant_mpeg_inter_mmx  cglobal quant_mpeg_inter_mmx
# Line 177  Line 177 
177    
178    movq mm7, [mmx_rounding]    movq mm7, [mmx_rounding]
179    
180  ;  QUANT_MMX(0)    QUANT_MMX(0)
181  ;  QUANT_MMX(1)    QUANT_MMX(1)
182  ;  QUANT_MMX(2)    QUANT_MMX(2)
183  ;  QUANT_MMX(3)    QUANT_MMX(3)
184  ;  QUANT_MMX(4)    QUANT_MMX(4)
185  ;  QUANT_MMX(5)    QUANT_MMX(5)
186  ;  QUANT_MMX(6)    QUANT_MMX(6)
187  ;  QUANT_MMX(7)    QUANT_MMX(7)
188    
189    ; calculate DC    ; calculate DC
190  ;  movsx _EAX, word [_EAX]   ; data[0]    movsx _EAX, word [_EAX]  ; data[0]
191  ;  mov TMP0, prm4            ; dcscalar    mov TMP0, prm4           ; dcscalar
192  ;  mov _EDX, _EAX    mov _EDX, _EAX
193  ;  shr TMP0, 1               ; TMP0 = dcscalar/2    shr TMP0, 1              ; TMP0 = dcscalar/2
194  ;  sar _EDX, 31              ; TMP1 = sign extend of _EAX (ready for division too)    sar _EDX, 31             ; TMP1 = sign extend of _EAX (ready for division too)
195  ;  xor TMP0, _EDX            ; adjust TMP0 according to the sign of data[0]  
196  ;  sub TMP0, _EDX    xor TMP0, _EDX           ; adjust TMP0 according to the sign of data[0]
197  ;  add _EAX, TMP0    sub TMP0, _EDX
198      add _EAX, TMP0
199    
200  ;  mov TMP0, prm4           ; dcscalar    mov TMP0, prm4            ; dcscalar
201  ;  idiv TMP0                 ; _EAX = _EDX:_EAX / dcscalar    idiv TMP0                 ; _EAX = _EDX:_EAX / dcscalar
202    
203  ;  mov _EDX, prm1            ; coeff again    mov _EDX, prm1            ; coeff again
204  ;  mov word [_EDX], ax       ; coeff[0] = ax    mov word [_EDX], ax       ; coeff[0] = ax
205    
206    xor _EAX, _EAX            ; return(0);    xor _EAX, _EAX            ; return(0);
207    ret    ret
# Line 445  Line 446 
446    mov _EBX, _EAX    mov _EBX, _EAX
447  %ifdef ARCH_IS_X86_64  %ifdef ARCH_IS_X86_64
448    mov _EAX, prm3    mov _EAX, prm3
449    lea r9, [mmx_mul_quant]    lea prm1, [mmx_mul_quant]
450    movq mm7, [r9 + _EAX*8 - 8]    movq mm7, [prm1 + _EAX*8 - 8]
451  %else  %else
452    mov _EAX, [_ESP + 4 + 12] ; quant    mov _EAX, [_ESP + 4 + 12] ; quant
453    movq mm7, [mmx_mul_quant  + _EAX*8 - 8]    movq mm7, [mmx_mul_quant  + _EAX*8 - 8]
# Line 657  Line 658 
658    ret    ret
659  ENDFUNC  ENDFUNC
660    
661    NON_EXEC_STACK
 %ifidn __OUTPUT_FORMAT__,elf  
 section ".note.GNU-stack" noalloc noexec nowrite progbits  
 %endif  
   

Legend:
Removed from v.1795  
changed lines
  Added in v.1877

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