![]() |
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. |