simd: be more precise which SIMD optimizations we activate
authorLennart Poettering <lennart@poettering.net>
Wed, 9 Sep 2009 02:28:22 +0000 (04:28 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 9 Sep 2009 02:28:22 +0000 (04:28 +0200)
src/pulsecore/remap_mmx.c
src/pulsecore/remap_sse.c
src/pulsecore/sconv_sse.c
src/pulsecore/svolume_mmx.c
src/pulsecore/svolume_sse.c

index 79e4f1f..d358a58 100644 (file)
@@ -150,8 +150,12 @@ static void init_remap_mmx (pa_remap_t *m) {
 
 void pa_remap_func_init_mmx (pa_cpu_x86_flag_t flags) {
 #if defined (__i386__) || defined (__amd64__)
-    pa_log_info("Initialising MMX optimized remappers.");
 
-    pa_set_init_remap_func ((pa_init_remap_func_t) init_remap_mmx);
+    if (flags & PA_CPU_X86_MMX) {
+        pa_log_info("Initialising MMX optimized remappers.");
+
+        pa_set_init_remap_func ((pa_init_remap_func_t) init_remap_mmx);
+    }
+
 #endif /* defined (__i386__) || defined (__amd64__) */
 }
index dac072e..0ccf316 100644 (file)
@@ -149,9 +149,11 @@ static void init_remap_sse2 (pa_remap_t *m) {
 
 void pa_remap_func_init_sse (pa_cpu_x86_flag_t flags) {
 #if defined (__i386__) || defined (__amd64__)
-    pa_log_info("Initialising SSE optimized remappers.");
 
-    if (flags & PA_CPU_X86_SSE2)
-      pa_set_init_remap_func ((pa_init_remap_func_t) init_remap_sse2);
+    if (flags & PA_CPU_X86_SSE2) {
+        pa_log_info("Initialising SSE2 optimized remappers.");
+        pa_set_init_remap_func ((pa_init_remap_func_t) init_remap_sse2);
+    }
+
 #endif /* defined (__i386__) || defined (__amd64__) */
 }
index 7c3aa19..3737af2 100644 (file)
@@ -218,16 +218,18 @@ static void run_test (void) {
 
 void pa_convert_func_init_sse (pa_cpu_x86_flag_t flags) {
 #if defined (__i386__) || defined (__amd64__)
-    pa_log_info("Initialising SSE optimized conversions.");
 
 #ifdef RUN_TEST
     run_test ();
 #endif
 
-    if (flags & PA_CPU_X86_SSE2)
-      pa_set_convert_from_float32ne_function (PA_SAMPLE_S16LE, (pa_convert_func_t) pa_sconv_s16le_from_f32ne_sse2);
-    else
-      pa_set_convert_from_float32ne_function (PA_SAMPLE_S16LE, (pa_convert_func_t) pa_sconv_s16le_from_f32ne_sse);
+    if (flags & PA_CPU_X86_SSE2) {
+        pa_log_info("Initialising SSE2 optimized conversions.");
+        pa_set_convert_from_float32ne_function (PA_SAMPLE_S16LE, (pa_convert_func_t) pa_sconv_s16le_from_f32ne_sse2);
+    } else {
+        pa_log_info("Initialising SSE optimized conversions.");
+        pa_set_convert_from_float32ne_function (PA_SAMPLE_S16LE, (pa_convert_func_t) pa_sconv_s16le_from_f32ne_sse);
+    }
 
 #endif /* defined (__i386__) || defined (__amd64__) */
 }
index 8510b0c..74918e7 100644 (file)
@@ -301,13 +301,16 @@ static void run_test (void) {
 
 void pa_volume_func_init_mmx (pa_cpu_x86_flag_t flags) {
 #if defined (__i386__) || defined (__amd64__)
-    pa_log_info("Initialising MMX optimized functions.");
 
 #ifdef RUN_TEST
     run_test ();
 #endif
 
-    pa_set_volume_func (PA_SAMPLE_S16NE,     (pa_do_volume_func_t) pa_volume_s16ne_mmx);
-    pa_set_volume_func (PA_SAMPLE_S16RE,     (pa_do_volume_func_t) pa_volume_s16re_mmx);
+    if (flags & PA_CPU_X86_MMX) {
+        pa_log_info("Initialising MMX optimized functions.");
+
+        pa_set_volume_func (PA_SAMPLE_S16NE, (pa_do_volume_func_t) pa_volume_s16ne_mmx);
+        pa_set_volume_func (PA_SAMPLE_S16RE, (pa_do_volume_func_t) pa_volume_s16re_mmx);
+    }
 #endif /* defined (__i386__) || defined (__amd64__) */
 }
index d9dcf47..bbd73a9 100644 (file)
@@ -302,15 +302,16 @@ static void run_test (void) {
 
 void pa_volume_func_init_sse (pa_cpu_x86_flag_t flags) {
 #if defined (__i386__) || defined (__amd64__)
-    pa_log_info("Initialising SSE optimized functions.");
 
 #ifdef RUN_TEST
     run_test ();
 #endif
 
     if (flags & PA_CPU_X86_SSE2) {
-      pa_set_volume_func (PA_SAMPLE_S16NE,     (pa_do_volume_func_t) pa_volume_s16ne_sse2);
-      pa_set_volume_func (PA_SAMPLE_S16RE,     (pa_do_volume_func_t) pa_volume_s16re_sse2);
+        pa_log_info("Initialising SSE2 optimized functions.");
+
+        pa_set_volume_func (PA_SAMPLE_S16NE, (pa_do_volume_func_t) pa_volume_s16ne_sse2);
+        pa_set_volume_func (PA_SAMPLE_S16RE, (pa_do_volume_func_t) pa_volume_s16re_sse2);
     }
 #endif /* defined (__i386__) || defined (__amd64__) */
 }