> +cglobal conv_s16_to_s16p_2ch, 3,4,4, dst0, src, len, dst1 > + lea lenq, [2*lend] > + mov dst1q, [dst0q+gprsize] > + mov dst0q, [dst0q ] > + lea srcq, [srcq+2*lenq] > + add dst0q, lenq > + add dst1q, lenq > + neg lenq > + ALIGN 16 > +.loop: > + mova m0, [srcq+2*lenq ] > + mova m1, [srcq+2*lenq+mmsize] > + pshuflw m0, m0, q3120 > + pshufhw m0, m0, q3120 > + pshufd m0, m0, q3120 > + pshuflw m1, m1, q3120 > + pshufhw m1, m1, q3120 > + pshufd m1, m1, q3120 > + punpcklqdq m2, m0, m1 > + punpckhqdq m3, m0, m1
Avoid the redundant mova in non-AVX mode by not using 3-operand in the last instruction. Additionally, the 2xpshufd + 2xpunpck stage can be replaced by 2x shufps. > + mova [dst0q+lenq], m2 > + mova [dst1q+lenq], m3 > + add lenq, mmsize > + jl .loop > + REP_RET Jason _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
