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: quantize_h263_3dne.asm,v 1.9.2.1 2009-05-28 08:42:37 Isibaar Exp $ |
; * $Id: quantize_h263_3dne.asm,v 1.9.2.2 2009-05-28 15:04:35 Isibaar Exp $ |
23 |
; * |
; * |
24 |
; *************************************************************************/ |
; *************************************************************************/ |
25 |
; |
; |
344 |
%endif |
%endif |
345 |
|
|
346 |
push _EBX |
push _EBX |
347 |
mov _EBX, mmzero |
lea _EBX, [mmzero] |
348 |
push _EDI |
push _EDI |
349 |
jz near .q1loop |
jz near .q1loop |
350 |
|
|
753 |
lea _EDI, [mmx_mul + _EAX*8 - 8] ; 2*quant |
lea _EDI, [mmx_mul + _EAX*8 - 8] ; 2*quant |
754 |
%endif |
%endif |
755 |
push _EBP |
push _EBP |
756 |
mov _EBX, mmx_2047 |
lea _EBX, [mmx_2047] |
757 |
movsx _EBP, word [_ECX] |
movsx _EBP, word [_ECX] |
758 |
%ifdef ARCH_IS_X86_64 |
%ifdef ARCH_IS_X86_64 |
759 |
lea r9, [mmx_add] |
lea r9, [mmx_add] |
762 |
lea _EAX, [mmx_add + _EAX*8 - 8] ; quant or quant-1 |
lea _EAX, [mmx_add + _EAX*8 - 8] ; quant or quant-1 |
763 |
%endif |
%endif |
764 |
push _ESI |
push _ESI |
765 |
mov _ESI, mmzero |
lea _ESI, [mmzero] |
766 |
pxor mm7, mm7 |
pxor mm7, mm7 |
767 |
movq mm3, [_ECX+120] ;B2 ; c = coeff[i] |
movq mm3, [_ECX+120] ;B2 ; c = coeff[i] |
768 |
pcmpeqw mm7, [_ECX+120] ;B6 (c ==0) ? -1 : 0 (1st) |
pcmpeqw mm7, [_ECX+120] ;B6 (c ==0) ? -1 : 0 (1st) |
876 |
%else |
%else |
877 |
lea _EDI, [mmx_mul + _EAX*8 - 8] ; 2*quant |
lea _EDI, [mmx_mul + _EAX*8 - 8] ; 2*quant |
878 |
%endif |
%endif |
879 |
mov _EBX, mmx_2047 |
lea _EBX, [mmx_2047] |
880 |
pxor mm7, mm7 |
pxor mm7, mm7 |
881 |
movq mm3, [_ECX+120] ;B2 ; c = coeff[i] |
movq mm3, [_ECX+120] ;B2 ; c = coeff[i] |
882 |
pcmpeqw mm7, [_ECX+120] ;B6 (c ==0) ? -1 : 0 (1st) |
pcmpeqw mm7, [_ECX+120] ;B6 (c ==0) ? -1 : 0 (1st) |
887 |
lea _EAX, [mmx_add + _EAX*8 - 8] ; quant or quant-1 |
lea _EAX, [mmx_add + _EAX*8 - 8] ; quant or quant-1 |
888 |
%endif |
%endif |
889 |
psubw mm2, mm3 ;-c ;B3 (1st dep) |
psubw mm2, mm3 ;-c ;B3 (1st dep) |
890 |
mov _ESI, mmzero |
lea _ESI, [mmzero] |
891 |
pmaxsw mm2, mm3 ;|c| ;B4 (2nd) |
pmaxsw mm2, mm3 ;|c| ;B4 (2nd) |
892 |
pmullw mm2, [_EDI] ;*= 2Q ;B8 (3rd+) |
pmullw mm2, [_EDI] ;*= 2Q ;B8 (3rd+) |
893 |
psraw mm3, 15 ; sign(c) ;B7 (2nd) |
psraw mm3, 15 ; sign(c) ;B7 (2nd) |