Merge "Use saturated addition in SSSE3 of 32x32 quant"
This commit is contained in:
commit
1c263d6918
@ -701,7 +701,7 @@ prototype void vp9_quantize_b "int16_t *coeff_ptr, intptr_t n_coeffs, int skip_b
|
||||
specialize vp9_quantize_b $ssse3_x86_64
|
||||
|
||||
prototype void vp9_quantize_b_32x32 "int16_t *coeff_ptr, intptr_t n_coeffs, int skip_block, int16_t *zbin_ptr, int16_t *round_ptr, int16_t *quant_ptr, int16_t *quant_shift_ptr, int16_t *qcoeff_ptr, int16_t *dqcoeff_ptr, int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan"
|
||||
specialize vp9_quantize_b_32x32 # $ssse3_x86_64 FIXME(jingning): need a unit test on thisbefore enabled
|
||||
specialize vp9_quantize_b_32x32 $ssse3_x86_64
|
||||
|
||||
#
|
||||
# Structured Similarity (SSIM)
|
||||
|
@ -135,6 +135,7 @@ void vp9_quantize_b_32x32_c(int16_t *coeff_ptr, intptr_t n_coeffs,
|
||||
|
||||
if (x >= zbin) {
|
||||
x += ROUND_POWER_OF_TWO(round_ptr[rc != 0], 1);
|
||||
x = clamp(x, INT16_MIN, INT16_MAX);
|
||||
y = (((int)(((int)(x * quant_ptr[rc != 0]) >> 16) + x)) *
|
||||
quant_shift_ptr[rc != 0]) >> 15; // quantize (x)
|
||||
|
||||
|
@ -70,9 +70,15 @@ cglobal quantize_%1, 0, %2, 15, coeff, ncoeff, skip, zbin, round, quant, \
|
||||
pcmpgtw m7, m6, m0 ; m7 = c[i] >= zbin
|
||||
punpckhqdq m0, m0
|
||||
pcmpgtw m12, m11, m0 ; m12 = c[i] >= zbin
|
||||
%ifidn %1, b_32x32
|
||||
paddsw m6, m1
|
||||
punpckhqdq m1, m1
|
||||
paddsw m11, m1
|
||||
%else
|
||||
paddw m6, m1 ; m6 += round
|
||||
punpckhqdq m1, m1
|
||||
paddw m11, m1 ; m11 += round
|
||||
%endif
|
||||
pmulhw m8, m6, m2 ; m8 = m6*q>>16
|
||||
punpckhqdq m2, m2
|
||||
pmulhw m13, m11, m2 ; m13 = m11*q>>16
|
||||
@ -126,9 +132,12 @@ cglobal quantize_%1, 0, %2, 15, coeff, ncoeff, skip, zbin, round, quant, \
|
||||
pmovmskb r2, m12
|
||||
or r6, r2
|
||||
jz .skip_iter
|
||||
%endif
|
||||
paddsw m6, m1
|
||||
paddsw m11, m1
|
||||
%else
|
||||
paddw m6, m1 ; m6 += round
|
||||
paddw m11, m1 ; m11 += round
|
||||
%endif
|
||||
pmulhw m14, m6, m2 ; m14 = m6*q>>16
|
||||
pmulhw m13, m11, m2 ; m13 = m11*q>>16
|
||||
paddw m14, m6 ; m14 += m6
|
||||
|
Loading…
Reference in New Issue
Block a user