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/TestCase.h>
00026 #include <cppunit/TestCaller.h>
00027 #include <cppunit/TestSuite.h>
00028 #include <cppunit/TextTestResult.h>
00029
00030 class qa_complex_dotprod_x86 : public CppUnit::TestCase {
00031
00032 public:
00033
00034 static void register_tests (CppUnit::TestSuite *suite)
00035 {
00036 suite->addTest (new CppUnit::TestCaller<qa_complex_dotprod_x86>
00037 ("complex_dotprod_x86: t1_3dnowext", &qa_complex_dotprod_x86::t1_3dnowext));
00038 suite->addTest (new CppUnit::TestCaller<qa_complex_dotprod_x86>
00039 ("complex_dotprod_x86: t2_3dnowext", &qa_complex_dotprod_x86::t2_3dnowext));
00040 suite->addTest (new CppUnit::TestCaller<qa_complex_dotprod_x86>
00041 ("complex_dotprod_x86: t3_3dnowext", &qa_complex_dotprod_x86::t3_3dnowext));
00042
00043 suite->addTest (new CppUnit::TestCaller<qa_complex_dotprod_x86>
00044 ("complex_dotprod_x86: t1_3dnow", &qa_complex_dotprod_x86::t1_3dnow));
00045 suite->addTest (new CppUnit::TestCaller<qa_complex_dotprod_x86>
00046 ("complex_dotprod_x86: t2_3dnow", &qa_complex_dotprod_x86::t2_3dnow));
00047 suite->addTest (new CppUnit::TestCaller<qa_complex_dotprod_x86>
00048 ("complex_dotprod_x86: t3_3dnow", &qa_complex_dotprod_x86::t3_3dnow));
00049
00050 suite->addTest (new CppUnit::TestCaller<qa_complex_dotprod_x86>
00051 ("complex_dotprod_x86: t1_sse", &qa_complex_dotprod_x86::t1_sse));
00052 suite->addTest (new CppUnit::TestCaller<qa_complex_dotprod_x86>
00053 ("complex_dotprod_x86: t2_sse", &qa_complex_dotprod_x86::t2_sse));
00054 suite->addTest (new CppUnit::TestCaller<qa_complex_dotprod_x86>
00055 ("complex_dotprod_x86: t3_sse", &qa_complex_dotprod_x86::t3_sse));
00056 }
00057
00058 void setUp ();
00059 void tearDown ();
00060
00061 private:
00062
00063 typedef void (*complex_dotprod_t)(const short *input,
00064 const float *taps,
00065 unsigned n_2_complex_blocks,
00066 float *result);
00067
00068 void t1_base (complex_dotprod_t);
00069 void t2_base (complex_dotprod_t);
00070 void t3_base (complex_dotprod_t);
00071
00072 void t1_3dnowext ();
00073 void t2_3dnowext ();
00074 void t3_3dnowext ();
00075 void t1_3dnow ();
00076 void t2_3dnow ();
00077 void t3_3dnow ();
00078 void t1_sse ();
00079 void t2_sse ();
00080 void t3_sse ();
00081
00082 void zb ();
00083
00084 float *taps;
00085 short *input;
00086
00087 };
00088
00089
00090 #endif