Commit fcc456b8 authored by Vitor Sessak's avatar Vitor Sessak Committed by Diego Biurrun

x86: use more standard construct for setting ASM functions in FFT code

Signed-off-by: 's avatarDiego Biurrun <diego@biurrun.de>
parent 09a35f25
...@@ -25,30 +25,31 @@ av_cold void ff_fft_init_mmx(FFTContext *s) ...@@ -25,30 +25,31 @@ av_cold void ff_fft_init_mmx(FFTContext *s)
{ {
#if HAVE_YASM #if HAVE_YASM
int has_vectors = av_get_cpu_flags(); int has_vectors = av_get_cpu_flags();
if (has_vectors & AV_CPU_FLAG_AVX && HAVE_AVX && s->nbits >= 5) { if (has_vectors & AV_CPU_FLAG_3DNOW && HAVE_AMD3DNOW) {
/* AVX for SB */ /* 3DNow! for K6-2/3 */
s->imdct_calc = ff_imdct_calc_sse; s->imdct_calc = ff_imdct_calc_3dn;
s->imdct_half = ff_imdct_half_avx; s->imdct_half = ff_imdct_half_3dn;
s->fft_permute = ff_fft_permute_sse; s->fft_calc = ff_fft_calc_3dn;
s->fft_calc = ff_fft_calc_avx; }
s->fft_permutation = FF_FFT_PERM_AVX; if (has_vectors & AV_CPU_FLAG_3DNOWEXT && HAVE_AMD3DNOWEXT) {
} else if (has_vectors & AV_CPU_FLAG_SSE && HAVE_SSE) { /* 3DNowEx for K7 */
s->imdct_calc = ff_imdct_calc_3dn2;
s->imdct_half = ff_imdct_half_3dn2;
s->fft_calc = ff_fft_calc_3dn2;
}
if (has_vectors & AV_CPU_FLAG_SSE && HAVE_SSE) {
/* SSE for P3/P4/K8 */ /* SSE for P3/P4/K8 */
s->imdct_calc = ff_imdct_calc_sse; s->imdct_calc = ff_imdct_calc_sse;
s->imdct_half = ff_imdct_half_sse; s->imdct_half = ff_imdct_half_sse;
s->fft_permute = ff_fft_permute_sse; s->fft_permute = ff_fft_permute_sse;
s->fft_calc = ff_fft_calc_sse; s->fft_calc = ff_fft_calc_sse;
s->fft_permutation = FF_FFT_PERM_SWAP_LSBS; s->fft_permutation = FF_FFT_PERM_SWAP_LSBS;
} else if (has_vectors & AV_CPU_FLAG_3DNOWEXT && HAVE_AMD3DNOWEXT) { }
/* 3DNowEx for K7 */ if (has_vectors & AV_CPU_FLAG_AVX && HAVE_AVX && s->nbits >= 5) {
s->imdct_calc = ff_imdct_calc_3dn2; /* AVX for SB */
s->imdct_half = ff_imdct_half_3dn2; s->imdct_half = ff_imdct_half_avx;
s->fft_calc = ff_fft_calc_3dn2; s->fft_calc = ff_fft_calc_avx;
} else if (has_vectors & AV_CPU_FLAG_3DNOW && HAVE_AMD3DNOW) { s->fft_permutation = FF_FFT_PERM_AVX;
/* 3DNow! for K6-2/3 */
s->imdct_calc = ff_imdct_calc_3dn;
s->imdct_half = ff_imdct_half_3dn;
s->fft_calc = ff_fft_calc_3dn;
} }
#endif #endif
} }
...@@ -58,12 +59,12 @@ av_cold void ff_dct_init_mmx(DCTContext *s) ...@@ -58,12 +59,12 @@ av_cold void ff_dct_init_mmx(DCTContext *s)
{ {
#if HAVE_YASM #if HAVE_YASM
int has_vectors = av_get_cpu_flags(); int has_vectors = av_get_cpu_flags();
if (has_vectors & AV_CPU_FLAG_SSE && HAVE_SSE)
s->dct32 = ff_dct32_float_sse;
if (has_vectors & AV_CPU_FLAG_SSE2 && HAVE_SSE)
s->dct32 = ff_dct32_float_sse2;
if (has_vectors & AV_CPU_FLAG_AVX && HAVE_AVX) if (has_vectors & AV_CPU_FLAG_AVX && HAVE_AVX)
s->dct32 = ff_dct32_float_avx; s->dct32 = ff_dct32_float_avx;
else if (has_vectors & AV_CPU_FLAG_SSE2 && HAVE_SSE)
s->dct32 = ff_dct32_float_sse2;
else if (has_vectors & AV_CPU_FLAG_SSE && HAVE_SSE)
s->dct32 = ff_dct32_float_sse;
#endif #endif
} }
#endif #endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment