> +cglobal conv_s16_to_fltp_2ch, 3,4,5, dst0, src, len, dst1 > + lea lenq, [4*lend] > + mov dst1q, [dst0q+gprsize] > + mov dst0q, [dst0q ] > + add srcq, lenq > + add dst0q, lenq > + add dst1q, lenq > + neg lenq > + mova m4, [pf_s16_inv_scale] > + ALIGN 16 > +.loop: > +%if cpuflag(sse4) > + pmovsxwd m0, [srcq+lenq ] > + pmovsxwd m1, [srcq+lenq+mmsize/2] > +%else > + mova m1, [srcq+lenq] > + punpcklwd m0, m1 > + punpckhwd m1, m1
This definitely looks wrong; m0 hasn't been set to anything. Did you test this? Like in another email, I'd suggest using a macro to abstract this. > + psrad m0, 16 > + psrad m1, 16 > +%endif > + cvtdq2ps m0, m0 > + cvtdq2ps m1, m1 > + mulps m0, m0, m4 > + mulps m1, m1, m4 > + shufps m2, m0, m1, q2020 > + shufps m3, m0, m1, q3131 Avoid 3-arg on the last one, to avoid a mova in non-AVX mode. > + mova [dst0q+lenq], m2 > + mova [dst1q+lenq], m3 > + add lenq, mmsize > + jl .loop > + REP_RET Otherwise looks okay. Jason _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
