SIMD packed 8-float type.
More...
#include <avir_float8_avx.h>
|
__m256 | value |
| Packed value of 8 floats.
|
|
SIMD packed 8-float type.
This class implements a packed 8-float type that can be used to perform parallel computation using SIMD instructions on AVX-enabled processors. This class can be used as the "fptype" argument of the avir::fpclass_def or avir::fpclass_def_dil class.
◆ addu() [1/2]
static void avir::float8::addu |
( |
float *const | p, |
|
|
const float8 & | v ) |
|
static |
Function performs in-place addition of a value located in memory and the specified value.
- Parameters
-
p | Pointer to value where addition happens. May be unaligned. |
v | Value to add. |
◆ addu() [2/2]
static void avir::float8::addu |
( |
float *const | p, |
|
|
const float8 & | v, |
|
|
const int | lim ) |
|
static |
Function performs in-place addition of a value located in memory and the specified value. Limited to the specfied number of elements.
- Parameters
-
p | Pointer to value where addition happens. May be unaligned. |
v | Value to add. |
lim | The element number limit, >0. |
◆ hadd()
float avir::float8::hadd |
( |
| ) |
const |
- Returns
- Horizontal sum of elements.
◆ load()
static float8 avir::float8::load |
( |
const float *const | p | ) |
|
|
static |
- Parameters
-
p | Pointer to memory from where the value should be loaded, should be 32-byte aligned. |
- Returns
- float8 value loaded from the specified memory location.
◆ loadu() [1/2]
static float8 avir::float8::loadu |
( |
const float *const | p | ) |
|
|
static |
- Parameters
-
p | Pointer to memory from where the value should be loaded, may have any alignment. |
- Returns
- float8 value loaded from the specified memory location.
◆ loadu() [2/2]
static float8 avir::float8::loadu |
( |
const float *const | p, |
|
|
const int | lim ) |
|
static |
- Parameters
-
p | Pointer to memory from where the value should be loaded, may have any alignment. |
lim | The maximum number of elements to load, >0. |
- Returns
- float8 value loaded from the specified memory location, with elements beyond "lim" set to 0.
◆ store()
void avir::float8::store |
( |
float *const | p | ) |
const |
Function stores *this value to the specified memory location.
- Parameters
-
[out] | p | Output memory location, should be 32-byte aligned. |
◆ storeu() [1/2]
void avir::float8::storeu |
( |
float *const | p | ) |
const |
Function stores *this value to the specified memory location.
- Parameters
-
[out] | p | Output memory location, may have any alignment. |
◆ storeu() [2/2]
void avir::float8::storeu |
( |
float * | p, |
|
|
int | lim ) const |
Function stores "lim" lower elements of *this value to the specified memory location.
- Parameters
-
[out] | p | Output memory location, may have any alignment. |
| lim | The number of lower elements to store, >0. |