On Wed, Jan 16, 2013 at 1:58 AM, Ronald S. Bultje <rsbul...@gmail.com> wrote:
Hi! > +INIT_XMM sse > +cglobal vorbis_inverse_coupling, 3, 3, 6, mag, ang, block_size > + movsxdifnidn block_sizeq, block_sized > + mova m5, [pdw_80000000] > + lea magq, [magq+block_sizeq*4] > + lea angq, [angq+block_sizeq*4] > + neg block_sizeq > +.loop: > + mova m0, [magq+block_sizeq*4] > + mova m1, [angq+block_sizeq*4] > + xorps m2, m2 > + xorps m3, m3 > + cmpleps m2, m0 ; m <= 0.0 > + cmpleps m3, m1 ; a <= 0.0 > + andps m2, m5 ; keep only the sign bit Am I missing something or we can just do: andps m2, m0, m5 Instead of the xorps + cmpleps + andps? > + xorps m1, m2 > + mova m4, m3 > + andps m3, m1 > + andnps m4, m1 > + addps m3, m0 ; a = m + ((a < 0) & (a ^ sign(m))) > + subps m0, m4 ; m = m + ((a > 0) & (a ^ sign(m))) > + mova [angq+block_sizeq*4], m3 > + mova [magq+block_sizeq*4], m0 > + add block_sizeq, 4 > + jl .loop > + RET -Vitor _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel