--- src/Makefile.am | 6 ++++++ src/pulsecore/cpu-x86.c | 9 ++++++++- src/pulsecore/cpu-x86.h | 1 + src/tests/cpu-test.c | 31 +++++++++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 1 deletions(-) create mode 100644 src/tests/cpu-test.c diff --git a/src/Makefile.am b/src/Makefile.am index 0f4155d..98a3420 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -244,6 +244,7 @@ TESTS_default = \ volume-test \ mix-test \ proplist-test \ + cpu-test \ lock-autospawn-test TESTS_norun = \ @@ -483,6 +484,11 @@ proplist_test_LDADD = $(AM_LDADD) libpulsecore- at PA_MAJORMINOR@.la libpulse.la li proplist_test_CFLAGS = $(AM_CFLAGS) proplist_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) +cpu_test_SOURCES = tests/cpu-test.c +cpu_test_LDADD = $(AM_LDADD) libpulsecore- at PA_MAJORMINOR@.la libpulse.la libpulsecommon- at PA_MAJORMINOR@.la +cpu_test_CFLAGS = $(AM_CFLAGS) +cpu_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) + rtstutter_SOURCES = tests/rtstutter.c rtstutter_LDADD = $(AM_LDADD) libpulsecore- at PA_MAJORMINOR@.la libpulse.la libpulsecommon- at PA_MAJORMINOR@.la rtstutter_CFLAGS = $(AM_CFLAGS) diff --git a/src/pulsecore/cpu-x86.c b/src/pulsecore/cpu-x86.c index 05a4b2f..b778de2 100644 --- a/src/pulsecore/cpu-x86.c +++ b/src/pulsecore/cpu-x86.c @@ -44,7 +44,7 @@ static void get_cpuid(uint32_t op, uint32_t *a, uint32_t *b, uint32_t *c, uint32 } #endif -pa_bool_t pa_cpu_init_x86(pa_cpu_x86_flag_t *flags) { +void pa_cpu_get_x86_flags(pa_cpu_x86_flag_t *flags) { #if defined (__i386__) || defined (__amd64__) uint32_t eax, ebx, ecx, edx; uint32_t level; @@ -98,6 +98,13 @@ pa_bool_t pa_cpu_init_x86(pa_cpu_x86_flag_t *flags) { if (edx & (1<<31)) *flags |= PA_CPU_X86_3DNOW; } +#endif +} + +pa_bool_t pa_cpu_init_x86(pa_cpu_x86_flag_t *flags) { + pa_cpu_get_x86_flags(flags); + +#if defined (__i386__) || defined (__amd64__) pa_log_info("CPU flags: %s%s%s%s%s%s%s%s%s%s%s", (*flags & PA_CPU_X86_CMOV) ? "CMOV " : "", diff --git a/src/pulsecore/cpu-x86.h b/src/pulsecore/cpu-x86.h index a797b65..715ed0d 100644 --- a/src/pulsecore/cpu-x86.h +++ b/src/pulsecore/cpu-x86.h @@ -41,6 +41,7 @@ typedef enum pa_cpu_x86_flag { PA_CPU_X86_CMOV = (1 << 10) } pa_cpu_x86_flag_t; +void pa_cpu_get_x86_flags(pa_cpu_x86_flag_t *flags); pa_bool_t pa_cpu_init_x86 (pa_cpu_x86_flag_t *flags); #if defined (__i386__) diff --git a/src/tests/cpu-test.c b/src/tests/cpu-test.c new file mode 100644 index 0000000..ce7693d --- /dev/null +++ b/src/tests/cpu-test.c @@ -0,0 +1,31 @@ +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <pulsecore/cpu-x86.h> +#include <pulsecore/test.h> + +int main(int argc, char *argv[]) { + pa_cpu_x86_flag_t flags = 0; + + pa_cpu_get_x86_flags(&flags); + + if (flags & PA_CPU_X86_MMX) { + pa_test_suite mmx_suites[] = { + { svolume_mmx_unit_test }, + }; + + pa_test_run_suites("mmx", mmx_suites); + } + + if (flags & (PA_CPU_X86_SSE | PA_CPU_X86_SSE2)) { + pa_test_suite sse_suites[] = { + { sconv_sse_unit_test }, + { svolume_sse_unit_test }, + }; + + pa_test_run_suites("sse", sse_suites); + } + + return 0; +} -- 1.7.7.6