All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Functions.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_MATH_INTRINSICS_FUNCTIONS_H_
23 #define _BLAZE_MATH_INTRINSICS_FUNCTIONS_H_
24 
25 
26 //*************************************************************************************************
27 // Includes
28 //*************************************************************************************************
29 
40 
41 
42 namespace blaze {
43 
44 //=================================================================================================
45 //
46 // INTRINSIC DOT PRODUCT
47 //
48 //=================================================================================================
49 
50 //*************************************************************************************************
51 /*\brief Dot product of two vectors of single precision floating point values.
52 // \ingroup intrinsics
53 //
54 // \param a The left-hand side operand.
55 // \param b The right-hand side operand.
56 // \return The result of the dot product.
57 */
58 // #if BLAZE_SSE4_MODE
59 // inline float dot( sse_float_t a, sse_float_t b )
60 // {
61 // return _mm_cvtss_f32( _mm_dp_ps( a.value, b.value, 0xF1 ) );
62 // }
63 // #elif BLAZE_SSE2_MODE
64 // inline float dot( sse_float_t a, sse_float_t b )
65 // {
66 // float array[4];
67 // store( array, a * b );
68 // return array[0] + array[1] + array[2] + array[3];
69 // }
70 // #endif
71 //*************************************************************************************************
72 
73 
74 //*************************************************************************************************
75 /*\brief Dot product of two vectors of double precision floating point values.
76 // \ingroup intrinsics
77 //
78 // \param a The left-hand side operand.
79 // \param b The right-hand side operand.
80 // \return The result of the dot product.
81 */
82 // #if BLAZE_SSE4_MODE
83 // inline double dot( sse_double_t a, sse_double_t b )
84 // {
85 // return _mm_cvtsd_f64( _mm_dp_pd( a.value, b.value, 0xF1 ) );
86 // }
87 // #elif BLAZE_SSE2_MODE
88 // inline double dot( sse_double_t a, sse_double_t b )
89 // {
90 // double array[2];
91 // store( array, a * b );
92 // return array[0] + array[1];
93 // }
94 // #endif
95 //*************************************************************************************************
96 
97 } // namespace blaze
98 
99 #endif