OpenLB 1.7
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Attributes | List of all members
olb::cpu::simd::Pack< double > Class Reference

#include <256.h>

+ Inheritance diagram for olb::cpu::simd::Pack< double >:
+ Collaboration diagram for olb::cpu::simd::Pack< double >:

Public Types

using mask_t = Mask<double>
 
using index_t = std::uint32_t
 
using mask_t = Mask<double>
 
using index_t = std::uint32_t
 

Public Member Functions

 Pack ()=default
 
 Pack (__m256d reg)
 
 Pack (double val)
 
 Pack (int val)
 
 Pack (std::size_t val)
 
 Pack (double a, double b, double c, double d)
 
 Pack (const double *ptr)
 
 Pack (const double *ptr, const index_t *idx)
 
 operator __m256d ()
 
Packoperator= (Pack rhs)
 
double operator[] (unsigned i) const
 
double & operator[] (unsigned i)
 
Pack operator+ (Pack rhs) const
 
Packoperator+= (Pack rhs)
 
Pack operator- (Pack rhs) const
 
Pack operator-= (Pack rhs)
 
Pack operator* (Pack rhs) const
 
Packoperator*= (Pack rhs)
 
Pack operator/ (Pack rhs) const
 
Packoperator/= (Pack rhs)
 
Pack operator- () const
 
Pack sqrt () const
 
 Pack ()=default
 
 Pack (__m512d reg)
 
 Pack (double val)
 
 Pack (int val)
 
 Pack (std::size_t val)
 
 Pack (double a, double b, double c, double d, double e, double f, double g, double h)
 
 Pack (const double *ptr)
 
 Pack (const double *ptr, const index_t *idx)
 
 operator __m512d ()
 
Packoperator= (Pack rhs)
 
double operator[] (unsigned i) const
 
Pack operator+ (Pack rhs) const
 
Packoperator+= (Pack rhs)
 
Pack operator- (Pack rhs) const
 
Pack operator-= (Pack rhs)
 
Pack operator* (Pack rhs) const
 
Packoperator*= (Pack rhs)
 
Pack operator/ (Pack rhs) const
 
Pack operator/= (Pack rhs)
 
Pack operator- () const
 
Pack sqrt () const
 

Static Public Attributes

static constexpr std::size_t size = 4
 

Detailed Description

Definition at line 171 of file 256.h.

Member Typedef Documentation

◆ index_t [1/2]

using olb::cpu::simd::Pack< double >::index_t = std::uint32_t

Definition at line 177 of file 256.h.

◆ index_t [2/2]

using olb::cpu::simd::Pack< double >::index_t = std::uint32_t

Definition at line 140 of file 512.h.

◆ mask_t [1/2]

using olb::cpu::simd::Pack< double >::mask_t = Mask<double>

Definition at line 176 of file 256.h.

◆ mask_t [2/2]

using olb::cpu::simd::Pack< double >::mask_t = Mask<double>

Definition at line 139 of file 512.h.

Constructor & Destructor Documentation

◆ Pack() [1/16]

olb::cpu::simd::Pack< double >::Pack ( )
default

◆ Pack() [2/16]

olb::cpu::simd::Pack< double >::Pack ( __m256d reg)
inline

Definition at line 183 of file 256.h.

183 :
184 _reg(reg) { }

◆ Pack() [3/16]

olb::cpu::simd::Pack< double >::Pack ( double val)
inline

Definition at line 186 of file 256.h.

186 :
187 Pack(_mm256_set1_pd(val)) { }

◆ Pack() [4/16]

olb::cpu::simd::Pack< double >::Pack ( int val)
inline

Definition at line 189 of file 256.h.

189 :
190 Pack(static_cast<double>(val)) { }

◆ Pack() [5/16]

olb::cpu::simd::Pack< double >::Pack ( std::size_t val)
inline

Definition at line 192 of file 256.h.

192 :
193 Pack(static_cast<double>(val)) { }

◆ Pack() [6/16]

olb::cpu::simd::Pack< double >::Pack ( double a,
double b,
double c,
double d )
inline

Definition at line 195 of file 256.h.

195 :
196 Pack(_mm256_set_pd(d,c,b,a)) { }

◆ Pack() [7/16]

olb::cpu::simd::Pack< double >::Pack ( const double * ptr)
inline

Definition at line 198 of file 256.h.

198 :
199 Pack(_mm256_loadu_pd(ptr)) { }

◆ Pack() [8/16]

olb::cpu::simd::Pack< double >::Pack ( const double * ptr,
const index_t * idx )
inline

Definition at line 201 of file 256.h.

201 :
202 Pack(_mm256_i32gather_pd(ptr, _mm_loadu_si128(reinterpret_cast<const __m128i*>(idx)), sizeof(double))) { }

◆ Pack() [9/16]

olb::cpu::simd::Pack< double >::Pack ( )
default

◆ Pack() [10/16]

olb::cpu::simd::Pack< double >::Pack ( __m512d reg)
inline

Definition at line 146 of file 512.h.

146 :
147 _reg(reg) { }

◆ Pack() [11/16]

olb::cpu::simd::Pack< double >::Pack ( double val)
inline

Definition at line 149 of file 512.h.

149 :
150 Pack(_mm512_set1_pd(val)) { }

◆ Pack() [12/16]

olb::cpu::simd::Pack< double >::Pack ( int val)
inline

Definition at line 152 of file 512.h.

152 :
153 Pack(static_cast<double>(val)) { }

◆ Pack() [13/16]

olb::cpu::simd::Pack< double >::Pack ( std::size_t val)
inline

Definition at line 155 of file 512.h.

155 :
156 Pack(static_cast<double>(val)) { }

◆ Pack() [14/16]

olb::cpu::simd::Pack< double >::Pack ( double a,
double b,
double c,
double d,
double e,
double f,
double g,
double h )
inline

Definition at line 158 of file 512.h.

158 :
159 Pack(_mm512_set_pd(h,g,f,e,d,c,b,a)) { }

◆ Pack() [15/16]

olb::cpu::simd::Pack< double >::Pack ( const double * ptr)
inline

Definition at line 161 of file 512.h.

161 :
162 Pack(_mm512_loadu_pd(ptr)) { }

◆ Pack() [16/16]

olb::cpu::simd::Pack< double >::Pack ( const double * ptr,
const index_t * idx )
inline

Definition at line 164 of file 512.h.

164 :
165 Pack(_mm512_i32gather_pd(_mm256_loadu_si256(reinterpret_cast<const __m256i*>(idx)), ptr, sizeof(double))) { }

Member Function Documentation

◆ operator __m256d()

olb::cpu::simd::Pack< double >::operator __m256d ( )
inline

Definition at line 204 of file 256.h.

205 {
206 return _reg;
207 }

◆ operator __m512d()

olb::cpu::simd::Pack< double >::operator __m512d ( )
inline

Definition at line 167 of file 512.h.

168 {
169 return _reg;
170 }

◆ operator*() [1/2]

Pack olb::cpu::simd::Pack< double >::operator* ( Pack< double > rhs) const
inline

Definition at line 247 of file 256.h.

248 {
249 return Pack(_mm256_mul_pd(_reg, rhs));
250 }

◆ operator*() [2/2]

Pack olb::cpu::simd::Pack< double >::operator* ( Pack< double > rhs) const
inline

Definition at line 205 of file 512.h.

206 {
207 return Pack(_mm512_mul_pd(_reg, rhs));
208 }

◆ operator*=() [1/2]

Pack & olb::cpu::simd::Pack< double >::operator*= ( Pack< double > rhs)
inline

Definition at line 252 of file 256.h.

253 {
254 _reg = _mm256_mul_pd(_reg, rhs);
255 return *this;
256 }

◆ operator*=() [2/2]

Pack & olb::cpu::simd::Pack< double >::operator*= ( Pack< double > rhs)
inline

Definition at line 210 of file 512.h.

211 {
212 _reg = _mm512_mul_pd(_reg, rhs);
213 return *this;
214 }

◆ operator+() [1/2]

Pack olb::cpu::simd::Pack< double >::operator+ ( Pack< double > rhs) const
inline

Definition at line 225 of file 256.h.

226 {
227 return Pack(_mm256_add_pd(_reg, rhs));
228 }

◆ operator+() [2/2]

Pack olb::cpu::simd::Pack< double >::operator+ ( Pack< double > rhs) const
inline

Definition at line 183 of file 512.h.

184 {
185 return Pack(_mm512_add_pd(_reg, rhs));
186 }

◆ operator+=() [1/2]

Pack & olb::cpu::simd::Pack< double >::operator+= ( Pack< double > rhs)
inline

Definition at line 230 of file 256.h.

231 {
232 _reg = _mm256_add_pd(_reg, rhs);
233 return *this;
234 }

◆ operator+=() [2/2]

Pack & olb::cpu::simd::Pack< double >::operator+= ( Pack< double > rhs)
inline

Definition at line 188 of file 512.h.

189 {
190 _reg = _mm512_add_pd(_reg, rhs);
191 return *this;
192 }

◆ operator-() [1/4]

Pack olb::cpu::simd::Pack< double >::operator- ( ) const
inline

Definition at line 269 of file 256.h.

270 {
271 return *this * Pack(-1);
272 }

◆ operator-() [2/4]

Pack olb::cpu::simd::Pack< double >::operator- ( ) const
inline

Definition at line 227 of file 512.h.

228 {
229 return *this * Pack(-1);
230 }

◆ operator-() [3/4]

Pack olb::cpu::simd::Pack< double >::operator- ( Pack< double > rhs) const
inline

Definition at line 236 of file 256.h.

237 {
238 return Pack(_mm256_sub_pd(_reg, rhs));
239 }

◆ operator-() [4/4]

Pack olb::cpu::simd::Pack< double >::operator- ( Pack< double > rhs) const
inline

Definition at line 194 of file 512.h.

195 {
196 return Pack(_mm512_sub_pd(_reg, rhs));
197 }

◆ operator-=() [1/2]

Pack olb::cpu::simd::Pack< double >::operator-= ( Pack< double > rhs)
inline

Definition at line 241 of file 256.h.

242 {
243 _reg = _mm256_sub_pd(_reg, rhs);
244 return *this;
245 }

◆ operator-=() [2/2]

Pack olb::cpu::simd::Pack< double >::operator-= ( Pack< double > rhs)
inline

Definition at line 199 of file 512.h.

200 {
201 _reg = _mm512_sub_pd(_reg, rhs);
202 return *this;
203 }

◆ operator/() [1/2]

Pack olb::cpu::simd::Pack< double >::operator/ ( Pack< double > rhs) const
inline

Definition at line 258 of file 256.h.

259 {
260 return Pack(_mm256_div_pd(_reg, rhs));
261 }

◆ operator/() [2/2]

Pack olb::cpu::simd::Pack< double >::operator/ ( Pack< double > rhs) const
inline

Definition at line 216 of file 512.h.

217 {
218 return Pack(_mm512_div_pd(_reg, rhs));
219 }

◆ operator/=() [1/2]

Pack & olb::cpu::simd::Pack< double >::operator/= ( Pack< double > rhs)
inline

Definition at line 263 of file 256.h.

264 {
265 _reg = _mm256_div_pd(_reg, rhs);
266 return *this;
267 }

◆ operator/=() [2/2]

Pack olb::cpu::simd::Pack< double >::operator/= ( Pack< double > rhs)
inline

Definition at line 221 of file 512.h.

222 {
223 _reg = _mm512_div_pd(_reg, rhs);
224 return *this;
225 }

◆ operator=() [1/2]

Pack & olb::cpu::simd::Pack< double >::operator= ( Pack< double > rhs)
inline

Definition at line 209 of file 256.h.

210 {
211 _reg = rhs._reg;
212 return *this;
213 }

◆ operator=() [2/2]

Pack & olb::cpu::simd::Pack< double >::operator= ( Pack< double > rhs)
inline

Definition at line 172 of file 512.h.

173 {
174 _reg = rhs._reg;
175 return *this;
176 }

◆ operator[]() [1/3]

double & olb::cpu::simd::Pack< double >::operator[] ( unsigned i)
inline

Definition at line 220 of file 256.h.

221 {
222 return reinterpret_cast<double*>(&_reg)[i];
223 }

◆ operator[]() [2/3]

double olb::cpu::simd::Pack< double >::operator[] ( unsigned i) const
inline

Definition at line 215 of file 256.h.

216 {
217 return reinterpret_cast<const double*>(&_reg)[i];
218 }

◆ operator[]() [3/3]

double olb::cpu::simd::Pack< double >::operator[] ( unsigned i) const
inline

Definition at line 178 of file 512.h.

179 {
180 return reinterpret_cast<const double*>(&_reg)[i];
181 }

◆ sqrt() [1/2]

Pack olb::cpu::simd::Pack< double >::sqrt ( ) const
inline

Definition at line 274 of file 256.h.

275 {
276 return _mm256_sqrt_pd(_reg);
277 }

◆ sqrt() [2/2]

Pack olb::cpu::simd::Pack< double >::sqrt ( ) const
inline

Definition at line 232 of file 512.h.

233 {
234 return _mm512_sqrt_pd(_reg);
235 }

Member Data Documentation

◆ size

static constexpr std::size_t olb::cpu::simd::Pack< double >::size = 4
staticconstexpr

Definition at line 179 of file 256.h.


The documentation for this class was generated from the following files: