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