AI Engine Intrinsics User Guide
(AIE) v(2024.1)
|
Cyclic addressing intrinsics allow indexing into circular buffers.
Cyclic Increment or Decrement within a buffer (NOT FOR UNALIGNED LOADS/STORES) | |
void * | cyclic_add (void *a, int offs, void *restrict start, int len) |
Cyclic increment or decrement of a pointer within a buffer. | |
Cyclic increment/decrement for Unaligned Loads/Stores | |
v32int8 | cyclic_add_unaligned_load (v32int8 *a, int offs, v32int8 *start, int len) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer. | |
v32uint8 | cyclic_add_unaligned_load (v32uint8 *a, int offs, v32uint8 *start, int len) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer. | |
v16int16 | cyclic_add_unaligned_load (v16int16 *a, int offs, v16int16 *start, int len) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer. | |
v8cint16 | cyclic_add_unaligned_load (v8cint16 *a, int offs, v8cint16 *start, int len) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer. | |
v8int32 | cyclic_add_unaligned_load (v8int32 *a, int offs, v8int32 *start, int len) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer. | |
v4cint32 | cyclic_add_unaligned_load (v4cint32 *a, int offs, v4cint32 *start, int len) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer. | |
v8float | cyclic_add_unaligned_load (v8float *a, int offs, v8float *start, int len) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer. | |
v4cfloat | cyclic_add_unaligned_load (v4cfloat *a, int offs, v4cfloat *start, int len) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer. | |
void | cyclic_add_unaligned_store (v32int8 *a, int offs, v32int8 *start, int len, v32int8 d) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer. | |
void | cyclic_add_unaligned_store (v32uint8 *a, int offs, v32uint8 *start, int len, v32uint8 d) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer. | |
void | cyclic_add_unaligned_store (v16int16 *a, int offs, v16int16 *start, int len, v16int16 d) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer. | |
void | cyclic_add_unaligned_store (v8cint16 *a, int offs, v8cint16 *start, int len, v8cint16 d) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer. | |
void | cyclic_add_unaligned_store (v8int32 *a, int offs, v8int32 *start, int len, v8int32 d) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer. | |
void | cyclic_add_unaligned_store (v4cint32 *a, int offs, v4cint32 *start, int len, v4cint32 d) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer. | |
void | cyclic_add_unaligned_store (v8float *a, int offs, v8float *start, int len, v8float d) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer. | |
void | cyclic_add_unaligned_store (v4cfloat *a, int offs, v4cfloat *start, int len, v4cfloat d) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer. | |
void* cyclic_add | ( | void * | a, |
int | offs, | ||
void *restrict | start, | ||
int | len | ||
) |
Cyclic increment or decrement of a pointer within a buffer.
a] | Current circular buffer pointer position |
offs] | Number of elements to increment the pointer by (each step is the size of the input type) |
start] | Pointer to the start of the circular buffer (must be aligned to the vector size) |
len] | Size of the circular buffer (number of elements of the datatype of the pointer) |
v32int8 cyclic_add_unaligned_load | ( | v32int8 * | a, |
int | offs, | ||
v32int8 * | start, | ||
int | len | ||
) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer.
Please use this intrinsic if your pointer is unaligned with respect to the vector size.
a] | Current circular buffer pointer position |
offs] | Number of (half) elements to increment the pointer by (each step is half the size of the input type) |
start] | Pointer to the start of the circular buffer (must be aligned to the vector size) |
len] | Size of the circular buffer (double the number of elements of the datatype of the pointer) |
d] | input vector to be stored for unaligned stores only. |
v32uint8 cyclic_add_unaligned_load | ( | v32uint8 * | a, |
int | offs, | ||
v32uint8 * | start, | ||
int | len | ||
) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer.
Please use this intrinsic if your pointer is unaligned with respect to the vector size.
a] | Current circular buffer pointer position |
offs] | Number of (half) elements to increment the pointer by (each step is half the size of the input type) |
start] | Pointer to the start of the circular buffer (must be aligned to the vector size) |
len] | Size of the circular buffer (double the number of elements of the datatype of the pointer) |
d] | input vector to be stored for unaligned stores only. |
v16int16 cyclic_add_unaligned_load | ( | v16int16 * | a, |
int | offs, | ||
v16int16 * | start, | ||
int | len | ||
) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer.
Please use this intrinsic if your pointer is unaligned with respect to the vector size.
a] | Current circular buffer pointer position |
offs] | Number of (half) elements to increment the pointer by (each step is half the size of the input type) |
start] | Pointer to the start of the circular buffer (must be aligned to the vector size) |
len] | Size of the circular buffer (double the number of elements of the datatype of the pointer) |
d] | input vector to be stored for unaligned stores only. |
v8cint16 cyclic_add_unaligned_load | ( | v8cint16 * | a, |
int | offs, | ||
v8cint16 * | start, | ||
int | len | ||
) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer.
Please use this intrinsic if your pointer is unaligned with respect to the vector size.
a] | Current circular buffer pointer position |
offs] | Number of (half) elements to increment the pointer by (each step is half the size of the input type) |
start] | Pointer to the start of the circular buffer (must be aligned to the vector size) |
len] | Size of the circular buffer (double the number of elements of the datatype of the pointer) |
d] | input vector to be stored for unaligned stores only. |
v8int32 cyclic_add_unaligned_load | ( | v8int32 * | a, |
int | offs, | ||
v8int32 * | start, | ||
int | len | ||
) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer.
Please use this intrinsic if your pointer is unaligned with respect to the vector size.
a] | Current circular buffer pointer position |
offs] | Number of (half) elements to increment the pointer by (each step is half the size of the input type) |
start] | Pointer to the start of the circular buffer (must be aligned to the vector size) |
len] | Size of the circular buffer (double the number of elements of the datatype of the pointer) |
d] | input vector to be stored for unaligned stores only. |
v4cint32 cyclic_add_unaligned_load | ( | v4cint32 * | a, |
int | offs, | ||
v4cint32 * | start, | ||
int | len | ||
) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer.
Please use this intrinsic if your pointer is unaligned with respect to the vector size.
a] | Current circular buffer pointer position |
offs] | Number of (half) elements to increment the pointer by (each step is half the size of the input type) |
start] | Pointer to the start of the circular buffer (must be aligned to the vector size) |
len] | Size of the circular buffer (double the number of elements of the datatype of the pointer) |
d] | input vector to be stored for unaligned stores only. |
v8float cyclic_add_unaligned_load | ( | v8float * | a, |
int | offs, | ||
v8float * | start, | ||
int | len | ||
) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer.
Please use this intrinsic if your pointer is unaligned with respect to the vector size.
a] | Current circular buffer pointer position |
offs] | Number of (half) elements to increment the pointer by (each step is half the size of the input type) |
start] | Pointer to the start of the circular buffer (must be aligned to the vector size) |
len] | Size of the circular buffer (double the number of elements of the datatype of the pointer) |
d] | input vector to be stored for unaligned stores only. |
v4cfloat cyclic_add_unaligned_load | ( | v4cfloat * | a, |
int | offs, | ||
v4cfloat * | start, | ||
int | len | ||
) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer.
Please use this intrinsic if your pointer is unaligned with respect to the vector size.
a] | Current circular buffer pointer position |
offs] | Number of (half) elements to increment the pointer by (each step is half the size of the input type) |
start] | Pointer to the start of the circular buffer (must be aligned to the vector size) |
len] | Size of the circular buffer (double the number of elements of the datatype of the pointer) |
d] | input vector to be stored for unaligned stores only. |
void cyclic_add_unaligned_store | ( | v32int8 * | a, |
int | offs, | ||
v32int8 * | start, | ||
int | len, | ||
v32int8 | d | ||
) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer.
Please use this intrinsic if your pointer is unaligned with respect to the vector size.
a] | Current circular buffer pointer position |
offs] | Number of (half) elements to increment the pointer by (each step is half the size of the input type) |
start] | Pointer to the start of the circular buffer (must be aligned to the vector size) |
len] | Size of the circular buffer (double the number of elements of the datatype of the pointer) |
d] | input vector to be stored for unaligned stores only. |
void cyclic_add_unaligned_store | ( | v32uint8 * | a, |
int | offs, | ||
v32uint8 * | start, | ||
int | len, | ||
v32uint8 | d | ||
) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer.
Please use this intrinsic if your pointer is unaligned with respect to the vector size.
a] | Current circular buffer pointer position |
offs] | Number of (half) elements to increment the pointer by (each step is half the size of the input type) |
start] | Pointer to the start of the circular buffer (must be aligned to the vector size) |
len] | Size of the circular buffer (double the number of elements of the datatype of the pointer) |
d] | input vector to be stored for unaligned stores only. |
void cyclic_add_unaligned_store | ( | v16int16 * | a, |
int | offs, | ||
v16int16 * | start, | ||
int | len, | ||
v16int16 | d | ||
) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer.
Please use this intrinsic if your pointer is unaligned with respect to the vector size.
a] | Current circular buffer pointer position |
offs] | Number of (half) elements to increment the pointer by (each step is half the size of the input type) |
start] | Pointer to the start of the circular buffer (must be aligned to the vector size) |
len] | Size of the circular buffer (double the number of elements of the datatype of the pointer) |
d] | input vector to be stored for unaligned stores only. |
void cyclic_add_unaligned_store | ( | v8cint16 * | a, |
int | offs, | ||
v8cint16 * | start, | ||
int | len, | ||
v8cint16 | d | ||
) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer.
Please use this intrinsic if your pointer is unaligned with respect to the vector size.
a] | Current circular buffer pointer position |
offs] | Number of (half) elements to increment the pointer by (each step is half the size of the input type) |
start] | Pointer to the start of the circular buffer (must be aligned to the vector size) |
len] | Size of the circular buffer (double the number of elements of the datatype of the pointer) |
d] | input vector to be stored for unaligned stores only. |
void cyclic_add_unaligned_store | ( | v8int32 * | a, |
int | offs, | ||
v8int32 * | start, | ||
int | len, | ||
v8int32 | d | ||
) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer.
Please use this intrinsic if your pointer is unaligned with respect to the vector size.
a] | Current circular buffer pointer position |
offs] | Number of (half) elements to increment the pointer by (each step is half the size of the input type) |
start] | Pointer to the start of the circular buffer (must be aligned to the vector size) |
len] | Size of the circular buffer (double the number of elements of the datatype of the pointer) |
d] | input vector to be stored for unaligned stores only. |
void cyclic_add_unaligned_store | ( | v4cint32 * | a, |
int | offs, | ||
v4cint32 * | start, | ||
int | len, | ||
v4cint32 | d | ||
) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer.
Please use this intrinsic if your pointer is unaligned with respect to the vector size.
a] | Current circular buffer pointer position |
offs] | Number of (half) elements to increment the pointer by (each step is half the size of the input type) |
start] | Pointer to the start of the circular buffer (must be aligned to the vector size) |
len] | Size of the circular buffer (double the number of elements of the datatype of the pointer) |
d] | input vector to be stored for unaligned stores only. |
void cyclic_add_unaligned_store | ( | v8float * | a, |
int | offs, | ||
v8float * | start, | ||
int | len, | ||
v8float | d | ||
) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer.
Please use this intrinsic if your pointer is unaligned with respect to the vector size.
a] | Current circular buffer pointer position |
offs] | Number of (half) elements to increment the pointer by (each step is half the size of the input type) |
start] | Pointer to the start of the circular buffer (must be aligned to the vector size) |
len] | Size of the circular buffer (double the number of elements of the datatype of the pointer) |
d] | input vector to be stored for unaligned stores only. |
void cyclic_add_unaligned_store | ( | v4cfloat * | a, |
int | offs, | ||
v4cfloat * | start, | ||
int | len, | ||
v4cfloat | d | ||
) |
Load a vector from a pointer and perform a cyclic increment or decrement within a buffer.
Please use this intrinsic if your pointer is unaligned with respect to the vector size.
a] | Current circular buffer pointer position |
offs] | Number of (half) elements to increment the pointer by (each step is half the size of the input type) |
start] | Pointer to the start of the circular buffer (must be aligned to the vector size) |
len] | Size of the circular buffer (double the number of elements of the datatype of the pointer) |
d] | input vector to be stored for unaligned stores only. |