Imported Upstream version 3.0
[debian/gnuradio] / gnuradio-core / src / lib / filter / qa_float_dotprod_x86.h
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2002 Free Software Foundation, Inc.
4  * 
5  * This file is part of GNU Radio
6  * 
7  * GNU Radio is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2, or (at your option)
10  * any later version.
11  * 
12  * GNU Radio is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with GNU Radio; see the file COPYING.  If not, write to
19  * the Free Software Foundation, Inc., 51 Franklin Street,
20  * Boston, MA 02110-1301, USA.
21  */
22 #ifndef _QA_FLOAT_DOTPROD_X86_H_
23 #define _QA_FLOAT_DOTPROD_X86_H_
24
25 #include <cppunit/extensions/HelperMacros.h>
26 #include <cppunit/TestCase.h>
27
28 class qa_float_dotprod_x86 : public CppUnit::TestCase {
29  public:
30   void setUp            ();
31   void tearDown         ();
32
33   CPPUNIT_TEST_SUITE (qa_float_dotprod_x86);
34   CPPUNIT_TEST (t1_3dnow);
35   CPPUNIT_TEST (t2_3dnow);
36   CPPUNIT_TEST (t3_3dnow);
37   CPPUNIT_TEST (t1_sse);
38   CPPUNIT_TEST (t2_sse);
39   CPPUNIT_TEST (t3_sse);
40   CPPUNIT_TEST_SUITE_END ();
41
42  private:
43
44   void t1_3dnow ();
45   void t2_3dnow ();
46   void t3_3dnow ();
47   void t1_sse ();
48   void t2_sse ();
49   void t3_sse ();
50
51
52   typedef float (*float_dotprod_t)(const float *input,
53                                    const float *taps,
54                                    unsigned n_4_float_blocks);
55
56   void t1_base (float_dotprod_t);
57   void t2_base (float_dotprod_t);
58   void t3_base (float_dotprod_t);
59
60   
61   void zb ();
62
63   float *taps;          // 16-byte aligned
64   float *input;         // 16-byte aligned
65
66 };
67
68
69 #endif /* _QA_FLOAT_DOTPROD_X86_H_ */