CNORXZ
Container with Native Operation Routines and Expressions
Loading...
Searching...
No Matches
avx.cc.h
Go to the documentation of this file.
1// -*- C++ -*-
12#ifndef __cxz_avx_cc_h__
13#define __cxz_avx_cc_h__
14
15#include "avx.h"
16
17namespace CNORXZ
18{
19 /*=====================+
20 | PlusCC / PlusCX |
21 +=====================*/
22
23 inline decltype(auto)
34
35 inline decltype(auto)
45
46 template <typename X>
47 inline decltype(auto)
58
59 template <typename X>
60 inline decltype(auto)
69
70 template <typename X>
71 inline decltype(auto)
82
83 /*=======================+
84 | MinusCC / MinusCX |
85 +=======================*/
86
87 inline decltype(auto)
98
99 inline decltype(auto)
109
110 template <typename X>
111 inline decltype(auto)
113 const X& b)
114 {
117 __m256d bv = _mm256_set1_pd( static_cast<Double>(b) );
120 return o;
121 }
122
123 template <typename X>
124 inline decltype(auto)
126 {
128 __m256d bv = _mm256_set1_pd( static_cast<Double>(b) );
131 return a;
132 }
133
134 template <typename X>
135 inline decltype(auto)
138 {
140 __m256d av = _mm256_set1_pd( static_cast<Double>(a) );
144 return o;
145 }
146
147 /*=================================+
148 | MultipliesCC / MultipliesCX |
149 +=================================*/
150
151 inline decltype(auto)
162
163 inline decltype(auto)
173
174 template <typename X>
175 inline decltype(auto)
186
187 template <typename X>
188 inline decltype(auto)
190 const X& b)
191 {
193 __m256d bv = _mm256_set1_pd( static_cast<Double>(b) );
196 return a;
197 }
198
199 template <typename X>
200 inline decltype(auto)
203 {
205 __m256d av = _mm256_set1_pd( static_cast<Double>(a) );
209 return o;
210 }
211
212
213 /*===========================+
214 | DividesCC / DividesCX |
215 +===========================*/
216
217 inline decltype(auto)
228
229 inline decltype(auto)
239
240 template <typename X>
241 inline decltype(auto)
243 const X& b)
244 {
247 __m256d bv = _mm256_set1_pd( static_cast<Double>(b) );
250 return o;
251 }
252
253 template <typename X>
254 inline decltype(auto)
256 {
258 __m256d bv = _mm256_set1_pd( static_cast<Double>(b) );
261 return a;
262 }
263
264 template <typename X>
265 inline decltype(auto)
268 {
270 __m256d av = _mm256_set1_pd( static_cast<Double>(a) );
274 return o;
275 }
276
277}
278
279#endif
Register type specialization for AVX.
double Double
Definition types.h:39
Sptr< Range > rangeCast(const RangePtr r)