| Index: source/libvpx/vp9/encoder/x86/vp9_quantize_ssse3.asm
|
| ===================================================================
|
| --- source/libvpx/vp9/encoder/x86/vp9_quantize_ssse3.asm (revision 223100)
|
| +++ source/libvpx/vp9/encoder/x86/vp9_quantize_ssse3.asm (working copy)
|
| @@ -36,6 +36,14 @@
|
| pshufd m4, m4, 0
|
| mova m2, [quantq] ; m2 = quant
|
| paddw m0, m4 ; m0 = zbin + zbin_oq
|
| +%ifidn %1, b_32x32
|
| + pcmpeqw m5, m5
|
| + psrlw m5, 15
|
| + paddw m0, m5
|
| + paddw m1, m5
|
| + psrlw m0, 1 ; m0 = (m0 + 1) / 2
|
| + psrlw m1, 1 ; m1 = (m1 + 1) / 2
|
| +%endif
|
| mova m3, [r2q] ; m3 = dequant
|
| psubw m0, [pw_1]
|
| mov r2, shiftmp
|
| @@ -43,6 +51,9 @@
|
| mova m4, [r2] ; m4 = shift
|
| mov r4, dqcoeffmp
|
| mov r5, iscanmp
|
| +%ifidn %1, b_32x32
|
| + psllw m4, 1
|
| +%endif
|
| pxor m5, m5 ; m5 = dedicated zero
|
| DEFINE_ARGS coeff, ncoeff, d1, qcoeff, dqcoeff, iscan, d2, d3, d4, d5, d6, eob
|
| lea coeffq, [ coeffq+ncoeffq*2]
|
| @@ -56,16 +67,12 @@
|
| mova m10, [ coeffq+ncoeffq*2+16] ; m10 = c[i]
|
| pabsw m6, m9 ; m6 = abs(m9)
|
| pabsw m11, m10 ; m11 = abs(m10)
|
| -%ifidn %1, b_32x32
|
| - paddw m6, m6
|
| - paddw m11, m11
|
| -%endif
|
| pcmpgtw m7, m6, m0 ; m7 = c[i] >= zbin
|
| punpckhqdq m0, m0
|
| pcmpgtw m12, m11, m0 ; m12 = c[i] >= zbin
|
| - paddw m6, m1 ; m6 += round
|
| + paddsw m6, m1 ; m6 += round
|
| punpckhqdq m1, m1
|
| - paddw m11, m1 ; m11 += round
|
| + paddsw m11, m1 ; m11 += round
|
| pmulhw m8, m6, m2 ; m8 = m6*q>>16
|
| punpckhqdq m2, m2
|
| pmulhw m13, m11, m2 ; m13 = m11*q>>16
|
| @@ -112,10 +119,6 @@
|
| mova m10, [ coeffq+ncoeffq*2+16] ; m10 = c[i]
|
| pabsw m6, m9 ; m6 = abs(m9)
|
| pabsw m11, m10 ; m11 = abs(m10)
|
| -%ifidn %1, b_32x32
|
| - paddw m6, m6
|
| - paddw m11, m11
|
| -%endif
|
| pcmpgtw m7, m6, m0 ; m7 = c[i] >= zbin
|
| pcmpgtw m12, m11, m0 ; m12 = c[i] >= zbin
|
| %ifidn %1, b_32x32
|
| @@ -124,8 +127,8 @@
|
| or r6, r2
|
| jz .skip_iter
|
| %endif
|
| - paddw m6, m1 ; m6 += round
|
| - paddw m11, m1 ; m11 += round
|
| + paddsw m6, m1 ; m6 += round
|
| + paddsw m11, m1 ; m11 += round
|
| pmulhw m14, m6, m2 ; m14 = m6*q>>16
|
| pmulhw m13, m11, m2 ; m13 = m11*q>>16
|
| paddw m14, m6 ; m14 += m6
|
| @@ -164,6 +167,7 @@
|
| pmaxsw m8, m13
|
| add ncoeffq, mmsize
|
| jl .ac_only_loop
|
| +
|
| %ifidn %1, b_32x32
|
| jmp .accumulate_eob
|
| .skip_iter:
|
|
|