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

#include <256.h>

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

Public Types

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

Public Member Functions

 Pack ()=default
 
 Pack (__m256 reg)
 
 Pack (float val)
 
 Pack (double val)
 
 Pack (int val)
 
 Pack (std::size_t val)
 
 Pack (float a, float b, float c, float d, float e, float f, float g, float h)
 
 Pack (const float *ptr)
 
 Pack (const float *ptr, const index_t *idx)
 
 operator __m256 ()
 
Packoperator= (Pack rhs)
 
float operator[] (unsigned i) const
 
float & operator[] (unsigned i)
 
Pack operator+ (Pack rhs) const
 
Packoperator+= (Pack rhs)
 
Pack operator- (Pack rhs) const
 
Packoperator-= (Pack rhs)
 
Pack operator* (Pack rhs) const
 
Packoperator*= (Pack rhs)
 
Pack operator/ (Pack rhs) const
 
Packoperator/= (Pack rhs)
 
Pack operator- () const
 
__m256 sqrt ()
 
 Pack ()=default
 
 Pack (__m512 reg)
 
 Pack (float val)
 
 Pack (double val)
 
 Pack (int val)
 
 Pack (std::size_t val)
 
 Pack (float a, float b, float c, float d, float e, float f, float g, float h, float i, float j, float k, float l, float m, float n, float o, float p)
 
 Pack (const float *ptr)
 
 Pack (const float *ptr, const index_t *idx)
 
 operator __m512 ()
 
Packoperator= (Pack rhs)
 
float operator[] (unsigned i) const
 
Pack operator+ (Pack rhs) const
 
Packoperator+= (Pack rhs)
 
Pack operator- (Pack rhs) const
 
Packoperator-= (Pack rhs)
 
Pack operator* (Pack rhs) const
 
Packoperator*= (Pack rhs)
 
Pack operator/ (Pack rhs) const
 
Packoperator/= (Pack rhs)
 
Pack operator- () const
 
__m512 sqrt () const
 

Static Public Attributes

static constexpr std::size_t size = 8
 

Detailed Description

Definition at line 281 of file 256.h.

Member Typedef Documentation

◆ index_t [1/2]

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

Definition at line 287 of file 256.h.

◆ index_t [2/2]

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

Definition at line 245 of file 512.h.

◆ mask_t [1/2]

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

Definition at line 286 of file 256.h.

◆ mask_t [2/2]

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

Definition at line 244 of file 512.h.

Constructor & Destructor Documentation

◆ Pack() [1/18]

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

◆ Pack() [2/18]

olb::cpu::simd::Pack< float >::Pack ( __m256 reg)
inline

Definition at line 293 of file 256.h.

293 :
294 _reg(reg) { }

◆ Pack() [3/18]

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

Definition at line 296 of file 256.h.

296 :
297 Pack(_mm256_set1_ps(val)) { }

◆ Pack() [4/18]

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

Definition at line 299 of file 256.h.

299 :
300 Pack(static_cast<float>(val)) { }

◆ Pack() [5/18]

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

Definition at line 302 of file 256.h.

302 :
303 Pack(static_cast<float>(val)) { }

◆ Pack() [6/18]

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

Definition at line 305 of file 256.h.

305 :
306 Pack(static_cast<float>(val)) { }

◆ Pack() [7/18]

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

Definition at line 308 of file 256.h.

308 :
309 Pack(_mm256_set_ps(h,g,f,e,d,c,b,a)) { }

◆ Pack() [8/18]

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

Definition at line 311 of file 256.h.

311 :
312 Pack(_mm256_loadu_ps(ptr)) { }

◆ Pack() [9/18]

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

Definition at line 314 of file 256.h.

314 :
315 Pack(_mm256_i32gather_ps(ptr, _mm256_loadu_si256(reinterpret_cast<const __m256i*>(idx)), sizeof(float))) { }

◆ Pack() [10/18]

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

◆ Pack() [11/18]

olb::cpu::simd::Pack< float >::Pack ( __m512 reg)
inline

Definition at line 251 of file 512.h.

251 :
252 _reg(reg) { }

◆ Pack() [12/18]

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

Definition at line 254 of file 512.h.

254 :
255 Pack(_mm512_set1_ps(val)) { }

◆ Pack() [13/18]

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

Definition at line 257 of file 512.h.

257 :
258 Pack(static_cast<float>(val)) { }

◆ Pack() [14/18]

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

Definition at line 260 of file 512.h.

260 :
261 Pack(static_cast<float>(val)) { }

◆ Pack() [15/18]

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

Definition at line 263 of file 512.h.

263 :
264 Pack(static_cast<float>(val)) { }

◆ Pack() [16/18]

olb::cpu::simd::Pack< float >::Pack ( float a,
float b,
float c,
float d,
float e,
float f,
float g,
float h,
float i,
float j,
float k,
float l,
float m,
float n,
float o,
float p )
inline

Definition at line 266 of file 512.h.

266 :
267 Pack(_mm512_set_ps(p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a)) { }

◆ Pack() [17/18]

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

Definition at line 269 of file 512.h.

269 :
270 Pack(_mm512_loadu_ps(ptr)) { }

◆ Pack() [18/18]

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

Definition at line 272 of file 512.h.

272 :
273 Pack(_mm512_i32gather_ps(_mm512_loadu_si512(reinterpret_cast<const __m512i*>(idx)), ptr, sizeof(float))) { }

Member Function Documentation

◆ operator __m256()

olb::cpu::simd::Pack< float >::operator __m256 ( )
inline

Definition at line 317 of file 256.h.

318 {
319 return _reg;
320 }

◆ operator __m512()

olb::cpu::simd::Pack< float >::operator __m512 ( )
inline

Definition at line 275 of file 512.h.

276 {
277 return _reg;
278 }

◆ operator*() [1/2]

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

Definition at line 360 of file 256.h.

361 {
362 return Pack(_mm256_mul_ps(_reg, rhs));
363 }

◆ operator*() [2/2]

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

Definition at line 313 of file 512.h.

314 {
315 return Pack(_mm512_mul_ps(_reg, rhs));
316 }

◆ operator*=() [1/2]

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

Definition at line 365 of file 256.h.

366 {
367 _reg = _mm256_mul_ps(_reg, rhs);
368 return *this;
369 }

◆ operator*=() [2/2]

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

Definition at line 318 of file 512.h.

319 {
320 _reg = _mm512_mul_ps(_reg, rhs);
321 return *this;
322 }

◆ operator+() [1/2]

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

Definition at line 338 of file 256.h.

339 {
340 return Pack(_mm256_add_ps(_reg, rhs));
341 }

◆ operator+() [2/2]

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

Definition at line 291 of file 512.h.

292 {
293 return Pack(_mm512_add_ps(_reg, rhs));
294 }

◆ operator+=() [1/2]

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

Definition at line 343 of file 256.h.

344 {
345 _reg = _mm256_add_ps(_reg, rhs);
346 return *this;
347 }

◆ operator+=() [2/2]

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

Definition at line 296 of file 512.h.

297 {
298 _reg = _mm512_add_ps(_reg, rhs);
299 return *this;
300 }

◆ operator-() [1/4]

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

Definition at line 382 of file 256.h.

383 {
384 return *this * Pack(-1);
385 }

◆ operator-() [2/4]

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

Definition at line 335 of file 512.h.

336 {
337 return *this * Pack(-1);
338 }

◆ operator-() [3/4]

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

Definition at line 349 of file 256.h.

350 {
351 return Pack(_mm256_sub_ps(_reg, rhs));
352 }

◆ operator-() [4/4]

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

Definition at line 302 of file 512.h.

303 {
304 return Pack(_mm512_sub_ps(_reg, rhs));
305 }

◆ operator-=() [1/2]

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

Definition at line 354 of file 256.h.

355 {
356 _reg = _mm256_sub_ps(_reg, rhs);
357 return *this;
358 }

◆ operator-=() [2/2]

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

Definition at line 307 of file 512.h.

308 {
309 _reg = _mm512_sub_ps(_reg, rhs);
310 return *this;
311 }

◆ operator/() [1/2]

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

Definition at line 371 of file 256.h.

372 {
373 return Pack(_mm256_div_ps(_reg, rhs));
374 }

◆ operator/() [2/2]

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

Definition at line 324 of file 512.h.

325 {
326 return Pack(_mm512_div_ps(_reg, rhs));
327 }

◆ operator/=() [1/2]

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

Definition at line 376 of file 256.h.

377 {
378 _reg = _mm256_div_ps(_reg, rhs);
379 return *this;
380 }

◆ operator/=() [2/2]

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

Definition at line 329 of file 512.h.

330 {
331 _reg = _mm512_div_ps(_reg, rhs);
332 return *this;
333 }

◆ operator=() [1/2]

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

Definition at line 322 of file 256.h.

323 {
324 _reg = rhs._reg;
325 return *this;
326 }

◆ operator=() [2/2]

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

Definition at line 280 of file 512.h.

281 {
282 _reg = rhs._reg;
283 return *this;
284 }

◆ operator[]() [1/3]

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

Definition at line 333 of file 256.h.

334 {
335 return reinterpret_cast<float*>(&_reg)[i];
336 }

◆ operator[]() [2/3]

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

Definition at line 328 of file 256.h.

329 {
330 return reinterpret_cast<const float*>(&_reg)[i];
331 }

◆ operator[]() [3/3]

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

Definition at line 286 of file 512.h.

287 {
288 return reinterpret_cast<const float*>(&_reg)[i];
289 }

◆ sqrt() [1/2]

__m256 olb::cpu::simd::Pack< float >::sqrt ( )
inline

Definition at line 387 of file 256.h.

388 {
389 return _mm256_sqrt_ps(_reg);
390 }

◆ sqrt() [2/2]

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

Definition at line 340 of file 512.h.

341 {
342 return _mm512_sqrt_ps(_reg);
343 }

Member Data Documentation

◆ size

static constexpr std::size_t olb::cpu::simd::Pack< float >::size = 8
staticconstexpr

Definition at line 289 of file 256.h.


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