00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 #ifndef _QA_FLOAT_DOTPROD_X86_H_
00023 #define _QA_FLOAT_DOTPROD_X86_H_
00024 
00025 #include <cppunit/extensions/HelperMacros.h>
00026 #include <cppunit/TestCase.h>
00027 
00028 class qa_float_dotprod_x86 : public CppUnit::TestCase {
00029  public:
00030   void setUp            ();
00031   void tearDown         ();
00032 
00033   CPPUNIT_TEST_SUITE (qa_float_dotprod_x86);
00034   CPPUNIT_TEST (t1_3dnow);
00035   CPPUNIT_TEST (t2_3dnow);
00036   CPPUNIT_TEST (t3_3dnow);
00037   CPPUNIT_TEST (t1_sse);
00038   CPPUNIT_TEST (t2_sse);
00039   CPPUNIT_TEST (t3_sse);
00040   CPPUNIT_TEST_SUITE_END ();
00041 
00042  private:
00043 
00044   void t1_3dnow ();
00045   void t2_3dnow ();
00046   void t3_3dnow ();
00047   void t1_sse ();
00048   void t2_sse ();
00049   void t3_sse ();
00050 
00051 
00052   typedef float (*float_dotprod_t)(const float *input,
00053                                    const float *taps,
00054                                    unsigned n_4_float_blocks);
00055 
00056   void t1_base (float_dotprod_t);
00057   void t2_base (float_dotprod_t);
00058   void t3_base (float_dotprod_t);
00059 
00060   
00061   void zb ();
00062 
00063   float *taps;          
00064   float *input;         
00065 
00066 };
00067 
00068 
00069 #endif