added cpuid for sse3,ssse3,sse4.1, and sse4.2
[debian/gnuradio] / gnuradio-core / src / lib / filter / gr_cpu.cc
index 6fe3591cda48c5d7d0117bd2068c8e8a78a2a03b..517c10e9ad5a05458c798f0593c696fb20cab90e 100644 (file)
@@ -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
  * 
@@ -84,6 +84,35 @@ gr_cpu::has_sse2 ()
   return (edx & (1 << 26)) != 0;
 }
 
+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 ()
 {