--- src/pulsecore/cpu-x86.h | 1 + src/pulsecore/sconv_sse.c | 44 +++++++++----------------------------------- 2 files changed, 10 insertions(+), 35 deletions(-) diff --git a/src/pulsecore/cpu-x86.h b/src/pulsecore/cpu-x86.h index cb76c56..bebe10d 100644 --- a/src/pulsecore/cpu-x86.h +++ b/src/pulsecore/cpu-x86.h @@ -70,6 +70,7 @@ void pa_remap_func_init_sse(pa_cpu_x86_flag_t flags); void pa_convert_func_init_sse (pa_cpu_x86_flag_t flags); +void sconv_sse_unit_test(pa_test_reporter *reporter); void svolume_sse_unit_test(pa_test_reporter *reporter); #endif /* foocpux86hfoo */ diff --git a/src/pulsecore/sconv_sse.c b/src/pulsecore/sconv_sse.c index 3c9a809..d6a57e1 100644 --- a/src/pulsecore/sconv_sse.c +++ b/src/pulsecore/sconv_sse.c @@ -162,21 +162,15 @@ static void pa_sconv_s16le_from_f32ne_sse2(unsigned n, const float *a, int16_t * ); } -#undef RUN_TEST - -#ifdef RUN_TEST #define SAMPLES 1019 #define TIMES 1000 -static void run_test(void) { +static void sconv_sse_unit_test_aux(pa_test_reporter *reporter, void (*sconv_func) (unsigned n, const float *a, int16_t *b)) { int16_t samples[SAMPLES]; int16_t samples_ref[SAMPLES]; float floats[SAMPLES]; - int i; - pa_usec_t start, stop; pa_convert_func_t func; - - printf("checking SSE %zd\n", sizeof(samples)); + int i; memset(samples_ref, 0, sizeof(samples_ref)); memset(samples, 0, sizeof(samples)); @@ -187,40 +181,21 @@ static void run_test(void) { func = pa_get_convert_from_float32ne_function(PA_SAMPLE_S16LE); func(SAMPLES, floats, samples_ref); - pa_sconv_s16le_from_f32ne_sse2(SAMPLES, floats, samples); + sconv_func(SAMPLES, floats, samples); - for (i = 0; i < SAMPLES; i++) { - if (samples[i] != samples_ref[i]) { - printf ("%d: %04x != %04x (%f)\n", i, samples[i], samples_ref[i], - floats[i]); - } - } - - start = pa_rtclock_now(); - for (i = 0; i < TIMES; i++) { - pa_sconv_s16le_from_f32ne_sse2(SAMPLES, floats, samples); - } - stop = pa_rtclock_now(); - pa_log_info("SSE: %llu usec.", (long long unsigned int)(stop - start)); + for (i = 0; i < SAMPLES; i++) + pa_test_assert(reporter, samples[i] == samples_ref[i]); +} - start = pa_rtclock_now(); - for (i = 0; i < TIMES; i++) { - func(SAMPLES, floats, samples_ref); - } - stop = pa_rtclock_now(); - pa_log_info("ref: %llu usec.", (long long unsigned int)(stop - start)); +void sconv_sse_unit_test(pa_test_reporter *reporter) { + sconv_sse_unit_test_aux(reporter, pa_sconv_s16le_from_f32ne_sse2); + sconv_sse_unit_test_aux(reporter, pa_sconv_s16le_from_f32ne_sse); } -#endif #endif /* defined (__i386__) || defined (__amd64__) */ void pa_convert_func_init_sse(pa_cpu_x86_flag_t flags) { #if !defined(__APPLE__) && defined (__i386__) || defined (__amd64__) - -#ifdef RUN_TEST - run_test(); -#endif - 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); @@ -228,6 +203,5 @@ void pa_convert_func_init_sse(pa_cpu_x86_flag_t flags) { 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__) */ } -- 1.7.7.6