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/TestCase.h>
00026 #include <cppunit/TestCaller.h>
00027 #include <cppunit/TestSuite.h>
00028 #include <cppunit/TextTestResult.h>
00029
00030 class qa_float_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_float_dotprod_x86>
00037 ("float_dotprod_x86: t1_3dnow", &qa_float_dotprod_x86::t1_3dnow));
00038 suite->addTest (new CppUnit::TestCaller<qa_float_dotprod_x86>
00039 ("float_dotprod_x86: t2_3dnow", &qa_float_dotprod_x86::t2_3dnow));
00040 suite->addTest (new CppUnit::TestCaller<qa_float_dotprod_x86>
00041 ("float_dotprod_x86: t3_3dnow", &qa_float_dotprod_x86::t3_3dnow));
00042
00043 suite->addTest (new CppUnit::TestCaller<qa_float_dotprod_x86>
00044 ("float_dotprod_x86: t1_sse", &qa_float_dotprod_x86::t1_sse));
00045 suite->addTest (new CppUnit::TestCaller<qa_float_dotprod_x86>
00046 ("float_dotprod_x86: t2_sse", &qa_float_dotprod_x86::t2_sse));
00047 suite->addTest (new CppUnit::TestCaller<qa_float_dotprod_x86>
00048 ("float_dotprod_x86: t3_sse", &qa_float_dotprod_x86::t3_sse));
00049 }
00050
00051 void setUp ();
00052 void tearDown ();
00053
00054 private:
00055
00056 typedef float (*float_dotprod_t)(const float *input,
00057 const float *taps,
00058 unsigned n_4_float_blocks);
00059
00060 void t1_base (float_dotprod_t);
00061 void t2_base (float_dotprod_t);
00062 void t3_base (float_dotprod_t);
00063
00064 void t1_3dnow ();
00065 void t2_3dnow ();
00066 void t3_3dnow ();
00067 void t1_sse ();
00068 void t2_sse ();
00069 void t3_sse ();
00070
00071 void zb ();
00072
00073 float *taps;
00074 float *input;
00075
00076 };
00077
00078
00079 #endif