All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Division.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_MATH_INTRINSICS_DIVISION_H_
23 #define _BLAZE_MATH_INTRINSICS_DIVISION_H_
24 
25 
26 //*************************************************************************************************
27 // Includes
28 //*************************************************************************************************
29 
31 #include <blaze/system/SSE.h>
32 
33 
34 namespace blaze {
35 
36 //=================================================================================================
37 //
38 // INTRINSIC DIVISION OPERATORS
39 //
40 //=================================================================================================
41 
42 //*************************************************************************************************
51 #if BLAZE_MIC_MODE
52 inline sse_int32_t operator/( const sse_int32_t& a, const sse_int32_t& b )
53 {
54  return _mm512_div_epi32( a.value, b.value );
55 }
56 #endif
57 //*************************************************************************************************
58 
59 
60 //*************************************************************************************************
69 #if BLAZE_MIC_MODE
70 inline sse_int64_t operator/( const sse_int64_t& a, const sse_int64_t& b )
71 {
72  return _mm512_div_epi64( a.value, b.value );
73 }
74 #endif
75 //*************************************************************************************************
76 
77 
78 //*************************************************************************************************
87 #if BLAZE_MIC_MODE
88 inline sse_float_t operator/( const sse_float_t& a, const sse_float_t& b )
89 {
90  return _mm512_div_ps( a.value, b.value );
91 }
92 #elif BLAZE_AVX_MODE
93 inline sse_float_t operator/( const sse_float_t& a, const sse_float_t& b )
94 {
95  return _mm256_div_ps( a.value, b.value );
96 }
97 #elif BLAZE_SSE_MODE
98 inline sse_float_t operator/( const sse_float_t& a, const sse_float_t& b )
99 {
100  return _mm_div_ps( a.value, b.value );
101 }
102 #endif
103 //*************************************************************************************************
104 
105 
106 //*************************************************************************************************
115 #if BLAZE_MIC_MODE
116 inline sse_double_t operator/( const sse_double_t& a, const sse_double_t& b )
117 {
118  return _mm512_div_pd( a.value, b.value );
119 }
120 #elif BLAZE_AVX_MODE
121 inline sse_double_t operator/( const sse_double_t& a, const sse_double_t& b )
122 {
123  return _mm256_div_pd( a.value, b.value );
124 }
125 #elif BLAZE_SSE2_MODE
126 inline sse_double_t operator/( const sse_double_t& a, const sse_double_t& b )
127 {
128  return _mm_div_pd( a.value, b.value );
129 }
130 #endif
131 //*************************************************************************************************
132 
133 } // namespace blaze
134 
135 #endif