OpenLB 1.8.1
Loading...
Searching...
No Matches
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
 

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
 
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
 
__m512 sqrt () const
 

Static Public Attributes

static constexpr std::size_t size = 8
 

Detailed Description

Definition at line 244 of file 512.h.

Member Typedef Documentation

◆ index_t

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

Definition at line 287 of file 256.h.

◆ mask_t

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

Definition at line 286 of file 256.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 256 of file 512.h.

256 :
257 _reg(reg) { }

◆ Pack() [12/18]

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

Definition at line 259 of file 512.h.

259 :
260 Pack(_mm512_set1_ps(val)) { }

◆ Pack() [13/18]

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

Definition at line 262 of file 512.h.

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

◆ Pack() [14/18]

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

Definition at line 265 of file 512.h.

265 :
266 Pack(static_cast<float>(val)) { }

◆ Pack() [15/18]

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

Definition at line 268 of file 512.h.

268 :
269 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 271 of file 512.h.

271 :
272 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 274 of file 512.h.

274 :
275 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 277 of file 512.h.

277 :
278 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 280 of file 512.h.

281 {
282 return _reg;
283 }

◆ 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 323 of file 512.h.

324 {
325 return Pack(_mm512_mul_ps(_reg, rhs));
326 }

◆ 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 328 of file 512.h.

329 {
330 _reg = _mm512_mul_ps(_reg, rhs);
331 return *this;
332 }

◆ 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 301 of file 512.h.

302 {
303 return Pack(_mm512_add_ps(_reg, rhs));
304 }

◆ 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 306 of file 512.h.

307 {
308 _reg = _mm512_add_ps(_reg, rhs);
309 return *this;
310 }

◆ 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 345 of file 512.h.

346 {
347 return *this * Pack(-1);
348 }

◆ 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 312 of file 512.h.

313 {
314 return Pack(_mm512_sub_ps(_reg, rhs));
315 }

◆ 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 317 of file 512.h.

318 {
319 _reg = _mm512_sub_ps(_reg, rhs);
320 return *this;
321 }

◆ 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 334 of file 512.h.

335 {
336 return Pack(_mm512_div_ps(_reg, rhs));
337 }

◆ 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 339 of file 512.h.

340 {
341 _reg = _mm512_div_ps(_reg, rhs);
342 return *this;
343 }

◆ 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 285 of file 512.h.

286 {
287 _reg = rhs._reg;
288 return *this;
289 }

◆ operator[]() [1/4]

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/4]

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

Definition at line 296 of file 512.h.

297 {
298 return reinterpret_cast<float*>(&_reg)[i];
299 }

◆ operator[]() [3/4]

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[]() [4/4]

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

Definition at line 291 of file 512.h.

292 {
293 return reinterpret_cast<const float*>(&_reg)[i];
294 }

◆ 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 350 of file 512.h.

351 {
352 return _mm512_sqrt_ps(_reg);
353 }

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: