vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Sat Aug 4 16:28:22 2012 +0300| [6f7ffd31655d7ba7f0ba1b3e8f400a831f56e804] | committer: Rémi Denis-Courmont
Check for SSE3 at build-time if possible > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6f7ffd31655d7ba7f0ba1b3e8f400a831f56e804 --- include/vlc_cpu.h | 8 +++++++- modules/codec/avcodec/avcodec.c | 2 +- modules/codec/avcodec/encoder.c | 2 +- modules/stream_out/switcher.c | 4 ++-- src/misc/cpu.c | 8 +++----- src/posix/linux_cpu.c | 7 +------ 6 files changed, 15 insertions(+), 16 deletions(-) diff --git a/include/vlc_cpu.h b/include/vlc_cpu.h index f233b66..1c2090d 100644 --- a/include/vlc_cpu.h +++ b/include/vlc_cpu.h @@ -35,7 +35,7 @@ VLC_API unsigned vlc_CPU(void); # define VLC_CPU_MMXEXT 32 # define VLC_CPU_SSE 64 # define VLC_CPU_SSE2 128 -# define CPU_CAPABILITY_SSE3 (1<<8) +# define VLC_CPU_SSE3 256 # define CPU_CAPABILITY_SSSE3 (1<<9) # define CPU_CAPABILITY_SSE4_1 (1<<10) # define CPU_CAPABILITY_SSE4_2 (1<<11) @@ -73,6 +73,12 @@ VLC_API unsigned vlc_CPU(void); # define vlc_CPU_SSE2() ((vlc_CPU() & VLC_CPU_SSE2) != 0) # endif +# ifdef __SSE3__ +# define vlc_CPU_SSE3() (1) +# else +# define vlc_CPU_SSE3() ((vlc_CPU() & VLC_CPU_SSE3) != 0) +# endif + # elif defined (__ppc__) || defined (__ppc64__) || defined (__powerpc__) # define HAVE_FPU 1 # define VLC_CPU_ALTIVEC 2 diff --git a/modules/codec/avcodec/avcodec.c b/modules/codec/avcodec/avcodec.c index 3f606b6..2c1961c 100644 --- a/modules/codec/avcodec/avcodec.c +++ b/modules/codec/avcodec/avcodec.c @@ -343,7 +343,7 @@ static int OpenDecoder( vlc_object_t *p_this ) if( !vlc_CPU_SSE2() ) p_context->dsp_mask |= AV_CPU_FLAG_SSE2; # ifdef AV_CPU_FLAG_SSE3 - if( !(i_cpu & CPU_CAPABILITY_SSE3) ) + if( !vlc_CPU_SSE3() ) p_context->dsp_mask |= AV_CPU_FLAG_SSE3; # endif # ifdef AV_CPU_FLAG_SSSE3 diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c index 537a445..70f98ad 100644 --- a/modules/codec/avcodec/encoder.c +++ b/modules/codec/avcodec/encoder.c @@ -337,7 +337,7 @@ int OpenEncoder( vlc_object_t *p_this ) if( !vlc_CPU_SSE2() ) p_context->dsp_mask |= AV_CPU_FLAG_SSE2; # ifdef AV_CPU_FLAG_SSE3 - if( !(i_cpu & CPU_CAPABILITY_SSE3) ) + if( !vlc_CPU_SSE3() ) p_context->dsp_mask |= AV_CPU_FLAG_SSE3; # endif # ifdef AV_CPU_FLAG_SSSE3 diff --git a/modules/stream_out/switcher.c b/modules/stream_out/switcher.c index 8c28541..a52dbc7 100644 --- a/modules/stream_out/switcher.c +++ b/modules/stream_out/switcher.c @@ -392,7 +392,7 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt ) if( !vlc_cpu_SSE2() ) id->ff_enc_c->dsp_mask |= AV_CPU_FLAG_SSE2; # ifdef AV_CPU_FLAG_SSE3 - if( !(i_cpu & CPU_CAPABILITY_SSE3) ) + if( !vlc_CPU_SSE3() ) id->ff_enc_c->dsp_mask |= AV_CPU_FLAG_SSE3; # endif # ifdef AV_CPU_FLAG_SSSE3 @@ -813,7 +813,7 @@ static mtime_t VideoCommand( sout_stream_t *p_stream, sout_stream_id_t *id ) if( !vlc_CPU_SSE2() ) id->ff_enc_c->dsp_mask |= AV_CPU_FLAG_SSE2; # ifdef AV_CPU_FLAG_SSE3 - if( !(i_cpu & CPU_CAPABILITY_SSE3) ) + if( !vlc_CPU_SSE3() ) id->ff_enc_c->dsp_mask |= AV_CPU_FLAG_SSE3; # endif # ifdef AV_CPU_FLAG_SSSE3 diff --git a/src/misc/cpu.c b/src/misc/cpu.c index fb193fc..c258e94 100644 --- a/src/misc/cpu.c +++ b/src/misc/cpu.c @@ -237,11 +237,9 @@ void vlc_CPU_init (void) i_capabilities |= VLC_CPU_SSE2; # endif -# if defined (__SSE3__) - i_capabilities |= CPU_CAPABILITY_SSE3; -# elif defined (CAN_COMPILE_SSE3) +# if defined (CAN_COMPILE_SSE3) if ((i_ecx & 0x00000001) && vlc_CPU_check ("SSE3", SSE3_test)) - i_capabilities |= CPU_CAPABILITY_SSE3; + i_capabilities |= VLC_CPU_SSE3; # endif # if defined (__SSSE3__) @@ -347,7 +345,7 @@ void vlc_CPU_dump (vlc_object_t *obj) if (vlc_CPU_MMXEXT()) p += sprintf (p, "MMXEXT "); if (vlc_CPU_SSE()) p += sprintf (p, "SSE ");; if (vlc_CPU_SSE2()) p += sprintf (p, "SSE2 ");; - PRINT_CAPABILITY(CPU_CAPABILITY_SSE3, "SSE3"); + if (vlc_CPU_SSE3()) p += sprintf (p, "SSE2 ");; PRINT_CAPABILITY(CPU_CAPABILITY_SSSE3, "SSSE3"); PRINT_CAPABILITY(CPU_CAPABILITY_SSE4_1, "SSE4.1"); PRINT_CAPABILITY(CPU_CAPABILITY_SSE4_2, "SSE4.2"); diff --git a/src/posix/linux_cpu.c b/src/posix/linux_cpu.c index 57b4326..5b6ffa3 100644 --- a/src/posix/linux_cpu.c +++ b/src/posix/linux_cpu.c @@ -75,10 +75,8 @@ static void vlc_CPU_init (void) core_caps |= VLC_CPU_MMXEXT; if (!strcmp (cap, "sse2")) core_caps |= VLC_CPU_SSE2; -# ifndef __SSE3__ if (!strcmp (cap, "pni")) - core_caps |= CPU_CAPABILITY_SSE3; -# endif + core_caps |= VLC_CPU_SSE3; # ifndef __SSSE3__ if (!strcmp (cap, "ssse3")) core_caps |= CPU_CAPABILITY_SSSE3; @@ -115,9 +113,6 @@ static void vlc_CPU_init (void) /* Always enable capabilities that were forced during compilation */ #if defined (__i386__) || defined (__x86_64__) -# ifdef __SSE3__ - all_caps |= CPU_CAPABILITY_SSE3; -# endif # ifdef __SSSE3__ all_caps |= CPU_CAPABILITY_SSSE3; # endif _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
