From 60aeb3dd23e4875250d97c873821425455a37b18 Mon Sep 17 00:00:00 2001 From: Peter Meerwald Date: Wed, 30 Jan 2013 11:03:59 +0100 Subject: [PATCH] tests: Test both, SSE and SSE2, sconv in cpu-test SSE sconv was not tested before, only SSE2 was (on CPUs supporting both instruction sets) now both code path are tested on CPUs supporting both Signed-off-by: Peter Meerwald --- src/tests/cpu-test.c | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/src/tests/cpu-test.c b/src/tests/cpu-test.c index f312edb1c..c33414ced 100644 --- a/src/tests/cpu-test.c +++ b/src/tests/cpu-test.c @@ -347,9 +347,9 @@ static void run_conv_test_s16_to_float(pa_convert_func_t func, pa_convert_func_t #endif /* defined (__arm__) && defined (__linux__) */ #if defined (__i386__) || defined (__amd64__) -START_TEST (sconv_sse_test) { +START_TEST (sconv_sse2_test) { pa_cpu_x86_flag_t flags = 0; - pa_convert_func_t orig_func, sse_func; + pa_convert_func_t orig_func, sse2_func; pa_cpu_get_x86_flags(&flags); @@ -359,7 +359,34 @@ START_TEST (sconv_sse_test) { } orig_func = pa_get_convert_from_float32ne_function(PA_SAMPLE_S16LE); - pa_convert_func_init_sse(flags); + pa_convert_func_init_sse(PA_CPU_X86_SSE2); + sse2_func = pa_get_convert_from_float32ne_function(PA_SAMPLE_S16LE); + + pa_log_debug("Checking SSE2 sconv (float -> s16)"); + run_conv_test_float_to_s16(sse2_func, orig_func, 0, TRUE, FALSE); + run_conv_test_float_to_s16(sse2_func, orig_func, 1, TRUE, FALSE); + run_conv_test_float_to_s16(sse2_func, orig_func, 2, TRUE, FALSE); + run_conv_test_float_to_s16(sse2_func, orig_func, 3, TRUE, FALSE); + run_conv_test_float_to_s16(sse2_func, orig_func, 4, TRUE, FALSE); + run_conv_test_float_to_s16(sse2_func, orig_func, 5, TRUE, FALSE); + run_conv_test_float_to_s16(sse2_func, orig_func, 6, TRUE, FALSE); + run_conv_test_float_to_s16(sse2_func, orig_func, 7, TRUE, TRUE); +} +END_TEST + +START_TEST (sconv_sse_test) { + pa_cpu_x86_flag_t flags = 0; + pa_convert_func_t orig_func, sse_func; + + pa_cpu_get_x86_flags(&flags); + + if (!(flags & PA_CPU_X86_SSE)) { + pa_log_info("SSE not supported. Skipping"); + return; + } + + orig_func = pa_get_convert_from_float32ne_function(PA_SAMPLE_S16LE); + pa_convert_func_init_sse(PA_CPU_X86_SSE); sse_func = pa_get_convert_from_float32ne_function(PA_SAMPLE_S16LE); pa_log_debug("Checking SSE sconv (float -> s16)"); @@ -450,6 +477,7 @@ int main(int argc, char *argv[]) { /* Conversion tests */ tc = tcase_create("sconv"); #if defined (__i386__) || defined (__amd64__) + tcase_add_test(tc, sconv_sse2_test); tcase_add_test(tc, sconv_sse_test); #endif #if defined (__arm__) && defined (__linux__)