Imported Upstream version 3.0
[debian/gnuradio] / gnuradio-core / src / lib / filter / qa_ccomplex_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_CCOMPLEX_DOTPROD_X86_H_
23 #define _QA_CCOMPLEX_DOTPROD_X86_H_
24
25 #include <cppunit/extensions/HelperMacros.h>
26 #include <cppunit/TestCase.h>
27
28 class qa_ccomplex_dotprod_x86 : public CppUnit::TestCase {
29  public:
30   void setUp            ();
31   void tearDown         ();
32
33   CPPUNIT_TEST_SUITE (qa_ccomplex_dotprod_x86);
34   CPPUNIT_TEST (t1_3dnowext);
35   CPPUNIT_TEST (t2_3dnowext);
36   CPPUNIT_TEST (t3_3dnowext);
37   CPPUNIT_TEST (t1_3dnow);
38   CPPUNIT_TEST (t2_3dnow);
39   CPPUNIT_TEST (t3_3dnow);
40   CPPUNIT_TEST (t1_sse);
41   CPPUNIT_TEST (t2_sse);
42   CPPUNIT_TEST (t3_sse);
43   CPPUNIT_TEST_SUITE_END ();
44
45  private:
46
47   void t1_3dnowext ();
48   void t2_3dnowext ();
49   void t3_3dnowext ();
50   void t1_3dnow ();
51   void t2_3dnow ();
52   void t3_3dnow ();
53   void t1_sse ();
54   void t2_sse ();
55   void t3_sse ();
56
57
58   typedef void (*ccomplex_dotprod_t)(const float *input,
59                                    const float *taps,
60                                    unsigned n_2_ccomplex_blocks,
61                                    float *result);
62
63   void t1_base (ccomplex_dotprod_t);
64   void t2_base (ccomplex_dotprod_t);
65   void t3_base (ccomplex_dotprod_t);
66
67   void zb ();
68
69   float *taps;          // 16-byte aligned
70   float *input;         // 16-byte aligned
71 };
72
73
74 #endif /* _QA_CCOMPLEX_DOTPROD_X86_H_ */