On 09/22/2012 07:01 PM, Justin Ruggles wrote:
> ---
> libavutil/x86/float_dsp.asm | 29 +++++++++++++++++++++++++++++
> libavutil/x86/float_dsp_init.c | 4 ++++
> 2 files changed, 33 insertions(+), 0 deletions(-)
>
> diff --git a/libavutil/x86/float_dsp.asm b/libavutil/x86/float_dsp.asm
> index 5b9b444..7201ded 100644
> --- a/libavutil/x86/float_dsp.asm
> +++ b/libavutil/x86/float_dsp.asm
> @@ -90,3 +90,32 @@ VECTOR_FMAC_SCALAR
> INIT_YMM avx
> VECTOR_FMAC_SCALAR
> %endif
> +
> +;------------------------------------------------------------------------------
> +; void ff_vector_fmul_scalar(float *dst, const float *src, float mul, int
> len)
> +;------------------------------------------------------------------------------
> +
> +%macro VECTOR_FMUL_SCALAR 0
> +%if UNIX64
> +cglobal vector_fmul_scalar, 3,3,2, dst, src, len
> +%else
> +cglobal vector_fmul_scalar, 4,4,3, dst, src, mul, len
> +%endif
> +%if ARCH_X86_32
> + movss m0, mulm
> +%elif WIN64
> + SWAP 0, 2
> +%endif
> + shufps m0, m0, 0
> + lea lenq, [lend*4-mmsize]
> +.loop:
> + mova m1, [srcq+lenq]
> + mulps m1, m0
> + mova [dstq+lenq], m1
> + sub lenq, mmsize
> + jge .loop
> + REP_RET
> +%endmacro
> +
> +INIT_XMM sse
> +VECTOR_FMUL_SCALAR
> diff --git a/libavutil/x86/float_dsp_init.c b/libavutil/x86/float_dsp_init.c
> index d1b0b8c..d14ec6a 100644
> --- a/libavutil/x86/float_dsp_init.c
> +++ b/libavutil/x86/float_dsp_init.c
> @@ -32,6 +32,9 @@ extern void ff_vector_fmac_scalar_sse(float *dst, const
> float *src, float mul,
> extern void ff_vector_fmac_scalar_avx(float *dst, const float *src, float
> mul,
> int len);
>
> +extern void ff_vector_fmul_scalar_sse(float *dst, const float *src, float
> mul,
> + int len);
> +
> void ff_float_dsp_init_x86(AVFloatDSPContext *fdsp)
> {
> int mm_flags = av_get_cpu_flags();
> @@ -39,6 +42,7 @@ void ff_float_dsp_init_x86(AVFloatDSPContext *fdsp)
> if (EXTERNAL_SSE(mm_flags)) {
> fdsp->vector_fmul = ff_vector_fmul_sse;
> fdsp->vector_fmac_scalar = ff_vector_fmac_scalar_sse;
> + fdsp->vector_fmul_scalar = ff_vector_fmul_scalar_sse;
> }
> if (EXTERNAL_AVX(mm_flags)) {
> fdsp->vector_fmul = ff_vector_fmul_avx;
ping.
-Justin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel