diff options
author | Diego Biurrun <diego@biurrun.de> | 2013-09-30 15:04:44 +0200 |
---|---|---|
committer | Diego Biurrun <diego@biurrun.de> | 2013-12-04 18:52:48 +0100 |
commit | 3d7c84747d4b68f3929c98a6e09efea8e53634dc (patch) | |
tree | da12efb07f4082a702c0f74bc035d6035f67a52d | |
parent | bd8b6185f6d1fb0433f048c4096b858e6f88ded6 (diff) | |
download | ffmpeg-3d7c84747d4b68f3929c98a6e09efea8e53634dc.tar.gz |
x86: Initialize mmxext after amd3dnow optimizations
The mmxext optimizations should be at least equally fast if available and
amd3dnow optimizations are being deprecated. Thus the former should
override the latter, not the other way around.
-rw-r--r-- | libavcodec/x86/cavsdsp.c | 8 | ||||
-rw-r--r-- | libavcodec/x86/dsputilenc_mmx.c | 14 | ||||
-rw-r--r-- | libavcodec/x86/hpeldsp_init.c | 6 |
3 files changed, 14 insertions, 14 deletions
diff --git a/libavcodec/x86/cavsdsp.c b/libavcodec/x86/cavsdsp.c index 9d2b95067f..bc9cbf7411 100644 --- a/libavcodec/x86/cavsdsp.c +++ b/libavcodec/x86/cavsdsp.c @@ -547,12 +547,12 @@ av_cold void ff_cavsdsp_init_x86(CAVSDSPContext *c, AVCodecContext *avctx) if (INLINE_MMX(cpu_flags)) cavsdsp_init_mmx(c, avctx); #endif /* HAVE_MMX_INLINE */ -#if HAVE_MMXEXT_INLINE - if (INLINE_MMXEXT(cpu_flags)) - cavsdsp_init_mmxext(c, avctx); -#endif /* HAVE_MMXEXT_INLINE */ #if HAVE_AMD3DNOW_INLINE if (INLINE_AMD3DNOW(cpu_flags)) cavsdsp_init_3dnow(c, avctx); #endif /* HAVE_AMD3DNOW_INLINE */ +#if HAVE_MMXEXT_INLINE + if (INLINE_MMXEXT(cpu_flags)) + cavsdsp_init_mmxext(c, avctx); +#endif /* HAVE_MMXEXT_INLINE */ } diff --git a/libavcodec/x86/dsputilenc_mmx.c b/libavcodec/x86/dsputilenc_mmx.c index 33c8d51e14..a1f80afe53 100644 --- a/libavcodec/x86/dsputilenc_mmx.c +++ b/libavcodec/x86/dsputilenc_mmx.c @@ -991,6 +991,13 @@ av_cold void ff_dsputilenc_init_mmx(DSPContext *c, AVCodecContext *avctx) c->ssd_int8_vs_int16 = ssd_int8_vs_int16_mmx; } + if (INLINE_AMD3DNOW(cpu_flags)) { + if (!(avctx->flags & CODEC_FLAG_BITEXACT)) { + c->try_8x8basis = try_8x8basis_3dnow; + } + c->add_8x8basis = add_8x8basis_3dnow; + } + if (INLINE_MMXEXT(cpu_flags)) { if (avctx->bits_per_raw_sample <= 8 && (dct_algo == FF_DCT_AUTO || dct_algo == FF_DCT_MMX)) @@ -1023,13 +1030,6 @@ av_cold void ff_dsputilenc_init_mmx(DSPContext *c, AVCodecContext *avctx) c->sum_abs_dctelem = sum_abs_dctelem_ssse3; } #endif - - if (INLINE_AMD3DNOW(cpu_flags)) { - if (!(avctx->flags & CODEC_FLAG_BITEXACT)) { - c->try_8x8basis = try_8x8basis_3dnow; - } - c->add_8x8basis = add_8x8basis_3dnow; - } #endif /* HAVE_INLINE_ASM */ if (EXTERNAL_MMX(cpu_flags)) { diff --git a/libavcodec/x86/hpeldsp_init.c b/libavcodec/x86/hpeldsp_init.c index 209781c724..3bc5601e61 100644 --- a/libavcodec/x86/hpeldsp_init.c +++ b/libavcodec/x86/hpeldsp_init.c @@ -258,12 +258,12 @@ void ff_hpeldsp_init_x86(HpelDSPContext *c, int flags) if (INLINE_MMX(cpu_flags)) hpeldsp_init_mmx(c, flags, cpu_flags); - if (EXTERNAL_MMXEXT(cpu_flags)) - hpeldsp_init_mmxext(c, flags, cpu_flags); - if (EXTERNAL_AMD3DNOW(cpu_flags)) hpeldsp_init_3dnow(c, flags, cpu_flags); + if (EXTERNAL_MMXEXT(cpu_flags)) + hpeldsp_init_mmxext(c, flags, cpu_flags); + if (EXTERNAL_SSE2(cpu_flags)) hpeldsp_init_sse2(c, flags, cpu_flags); } |