diff options
-rw-r--r-- | gnuradio-core/src/lib/filter/gr_cpu.cc | 31 | ||||
-rw-r--r-- | gnuradio-core/src/lib/filter/gr_cpu.h | 6 |
2 files changed, 35 insertions, 2 deletions
diff --git a/gnuradio-core/src/lib/filter/gr_cpu.cc b/gnuradio-core/src/lib/filter/gr_cpu.cc index 6fe3591cd..517c10e9a 100644 --- a/gnuradio-core/src/lib/filter/gr_cpu.cc +++ b/gnuradio-core/src/lib/filter/gr_cpu.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2002 Free Software Foundation, Inc. + * Copyright 2002,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -85,6 +85,35 @@ gr_cpu::has_sse2 () } bool +gr_cpu::has_sse3 () +{ + unsigned int ecx = cpuid_ecx (1); // standard features + return (ecx & (1 << 0)) != 0; +} + +bool +gr_cpu::has_ssse3 () +{ + unsigned int ecx = cpuid_ecx (1); // standard features + return (ecx & (1 << 9)) != 0; +} + +bool +gr_cpu::has_sse4_1 () +{ + unsigned int ecx = cpuid_ecx (1); // standard features + return (ecx & (1 << 19)) != 0; +} + +bool +gr_cpu::has_sse4_2 () +{ + unsigned int ecx = cpuid_ecx (1); // standard features + return (ecx & (1 << 20)) != 0; +} + + +bool gr_cpu::has_3dnow () { unsigned int extended_fct_count = cpuid_eax (0x80000000); diff --git a/gnuradio-core/src/lib/filter/gr_cpu.h b/gnuradio-core/src/lib/filter/gr_cpu.h index 2d42eb610..5967d9868 100644 --- a/gnuradio-core/src/lib/filter/gr_cpu.h +++ b/gnuradio-core/src/lib/filter/gr_cpu.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2002 Free Software Foundation, Inc. + * Copyright 2002,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -27,6 +27,10 @@ struct gr_cpu { static bool has_mmx (); static bool has_sse (); static bool has_sse2 (); + static bool has_sse3 (); + static bool has_ssse3 (); + static bool has_sse4_1 (); + static bool has_sse4_2 (); static bool has_3dnow (); static bool has_3dnowext (); }; |