"If your processor supports the SSE3 instructions set, VLC can take " \
"advantage of them.")
+#define SSSE3_TEXT N_("Enable CPU SSSE3 support")
+#define SSSE3_LONGTEXT N_( \
+ "If your processor supports the SSSE3 instructions set, VLC can take " \
+ "advantage of them.")
+
+#define SSE4_1_TEXT N_("Enable CPU SSE4.1 support")
+#define SSE4_1_LONGTEXT N_( \
+ "If your processor supports the SSE4.1 instructions set, VLC can take " \
+ "advantage of them.")
+
+#define SSE4_2_TEXT N_("Enable CPU SSE4.2 support")
+#define SSE4_2_LONGTEXT N_( \
+ "If your processor supports the SSE4.2 instructions set, VLC can take " \
+ "advantage of them.")
#define ALTIVEC_TEXT N_("Enable CPU AltiVec support")
#define ALTIVEC_LONGTEXT N_( \
change_need_restart ()
add_bool( "sse3", 1, NULL, SSE3_TEXT, SSE3_LONGTEXT, true )
change_need_restart ()
+ add_bool( "ssse3", 1, NULL, SSSE3_TEXT, SSSE3_LONGTEXT, true )
+ change_need_restart ()
+ add_bool( "sse41", 1, NULL, SSE4_1_TEXT, SSE4_1_LONGTEXT, true )
+ change_need_restart ()
+ add_bool( "sse42", 1, NULL, SSE4_2_TEXT, SSE4_2_LONGTEXT, true )
+ change_need_restart ()
#endif
#if defined( __powerpc__ ) || defined( __ppc__ ) || defined( __ppc64__ )
add_bool( "altivec", 1, NULL, ALTIVEC_TEXT, ALTIVEC_LONGTEXT, true )
cpu_flags &= ~CPU_CAPABILITY_SSE2;
if( !config_GetInt( p_libvlc, "sse3" ) )
cpu_flags &= ~CPU_CAPABILITY_SSE3;
+ if( !config_GetInt( p_libvlc, "ssse3" ) )
+ cpu_flags &= ~CPU_CAPABILITY_SSSE3;
+ if( !config_GetInt( p_libvlc, "sse41" ) )
+ cpu_flags &= ~CPU_CAPABILITY_SSE4_1;
+ if( !config_GetInt( p_libvlc, "sse42" ) )
+ cpu_flags &= ~CPU_CAPABILITY_SSE4_2;
PRINT_CAPABILITY( CPU_CAPABILITY_MMX, "MMX" );
PRINT_CAPABILITY( CPU_CAPABILITY_3DNOW, "3DNow!" );
PRINT_CAPABILITY( CPU_CAPABILITY_SSE, "SSE" );
PRINT_CAPABILITY( CPU_CAPABILITY_SSE2, "SSE2" );
PRINT_CAPABILITY( CPU_CAPABILITY_SSE3, "SSE3" );
+ PRINT_CAPABILITY( CPU_CAPABILITY_SSE3, "SSSE3" );
+ PRINT_CAPABILITY( CPU_CAPABILITY_SSE4_1, "SSE4.1" );
+ PRINT_CAPABILITY( CPU_CAPABILITY_SSE4_2, "SSE4.2" );
+ PRINT_CAPABILITY( CPU_CAPABILITY_SSE4A, "SSE4A" );
#elif defined( __powerpc__ ) || defined( __ppc__ ) || defined( __ppc64__ )
if( !config_GetInt( p_libvlc, "altivec" ) )
"movsldup %%xmm1, %%xmm0\n" );
# endif
+# if defined (__SSSE3__)
+ i_capabilities |= CPU_CAPABILITY_SSSE3;
+# elif defined (CAN_COMPILE_SSSE3)
+ if( i_ecx & 0x00000200 )
+ check_capability( "SSSE3", CPU_CAPABILITY_SSSE3,
+ "pabsw %%xmm1, %%xmm0\n" );
+# endif
+
+# if defined (__SSE4_1__)
+ i_capabilities |= CPU_CAPABILITY_SSE4_1;
+# elif defined (CAN_COMPILE_SSE4_1)
+ if( i_ecx & 0x00080000 )
+ check_capability( "SSE4.1", CPU_CAPABILITY_SSE4_1,
+ "pmaxsb %%xmm1, %%xmm0\n" );
+# endif
+
+# if defined (__SSE4_2__)
+ i_capabilities |= CPU_CAPABILITY_SSE4_2;
+# elif defined (CAN_COMPILE_SSE4_2)
+ if( i_ecx & 0x00100000 )
+ check_capability( "SSE4.2", CPU_CAPABILITY_SSE4_2,
+ "pcmpgtq %%xmm1, %%xmm0\n" );
+# endif
+
/* test for additional capabilities */
cpuid( 0x80000000 );