| AI Engine-ML v2 Intrinsics User Guide (v2026.1)

Loading...
Searching...
No Matches
API Reference
Here is a list of all topics with brief descriptions:
[detail level 1234]

▼Accumulator Data Types |
FP Complex Accumulator Types |
Floating-Point Accumulator Types |
►Integer Accumulator Types |
1024-bit accumulator types |
2048-bit accumulator types |
256-bit accumulator types |
512-bit accumulator types |
Integer Complex Accumulator Types |
Basic Types: Summary | Summary of the vector and accumulator registers
▼Compiler optimizations | Description of the optimizations automatically performed by the compiler
►Code annotations | Description of the optimizations performed by the compiler based on the annotations provided by the user
Loop annotations | These annotations are used after the heading of the for or while loop. These are meant to customize the behavior of software pipelining
Loop transformations | These annotations are used after heading of the for or while loop
Optimization annotations | These annotations are used to guide the compiler on how to optimize the use of variables
Resource allocation annotations | These annotations are used to interact with the register allocator
Scheduling annotations | These annotations are used to interact with the scheduler
►Code optimizations | Description of the optimizations performed by the compiler to simplify the code
Broadcast-extract |
Chain simplification |
Chain simplification (different accumulators) |
Extract and concat |
Extract and concat all elements |
Insert and extract generating new vector |
Merge of Multiply Accumulate operations |
Remove extract and set for same accumulator component |
Set-extract |
Set-update-extract |
Shuffles |
Simplification between complex and real accumulators |
Skip intermediate extractions |
Skip intermediate extractions for 2k accumulators |
Undefined simplifications |
Conversion Functions | Set of functions for converting types
▼Load/Store Operations |
Addressing intrinsics |
Load 4x Operations |
►Streams |
Cascade read |
Cascade write |
Stream read |
Stream write |
Load/store to FIFO registers |
▼Nonlinear functions |
Scalar nonlinear functions |
Vector nonlinear functions |
Scalar Data Types | All the standard C scalar data-types are supported
▼Scalar Operations |
►Configuration |
►Mode Settings |
Control registers | Intrinsics to set, get and clear the control registers
Status registers | Intrinsics to set,get and clear the status registers
Core ID |
Cycle Counter |
Events |
Initialization |
Integer Operations | Scalar division step intrinsic
Locks |
Scalar updates and extracts |
Stream access | These functions setup stream accesses in native mode
▼Vector Conversions | Various forms of conversions between vector data-types
Brain Floating-Point (BF16) to integer conversions | Conversion from bfloat16 vector to integer vector
►Broadcast | Broadcasts input value to all vector lanes
Broadcast from scalar | Broadcasts input value to all vector lanes (alternative syntax to broadcast to vector)
Broadcast to vector | Broadcasts input value to all vector lanes (alternative syntax to broadcast from scalar)
Updating all elements with element extracted from vector | Extracts element "idx" from vector "v" and broadcasts its value to all lanes of the destination vector
Updating all elements with one | Broadcasts value one (1) to all vector lanes
Updating all elements with zero | Broadcasts value zero (0) to all vector lanes
Casting | Casting intrinsics allow casting (bit-reinterpretation) between vector types of the same size
►Concatenate vectors | Vector concat intrinsic functions allow concatenation of vector values to create a larger one
Concatenate four vectors |
Concatenate two vectors |
►Extract vector | Extraction intrinsics enable lanes to be selected from vector and accumulator types
Extract MX vector components |
Extract sparse vector components |
Extract/insert element | These intrinsics allow inserting or extracting of an individual element into/from a vector
►Insert vector | Vector insert intrinsic functions allow substitution of the lanes within a vector value
Insert MX vector components |
Insert a vector into a vector |
Insert sparse vector components |
Pack/Unpack |
►Set vector | Vector set intrinsic functions allow setting the lanes within a vector value
Set MX vector components |
Set sparse vector components |
►Shift-Round-Saturate | Intrinsics for moving values from accumulator data-types to vector data-types
AIE interface |
Floating-point interface |
Size interface |
►Upshift | Intrinsics for moving values from vector data-types to accumulator data-types
AIE interface |
Floating-point |
Size interface |
▼Vector Data Types |
►Brain Floating-Point Vector Types |
16-bit Brain Floating-Point Vector Types |
8-bit Brain Floating-Point Vector Types |
Complex 16-bit Brain Floating-Point Vector Types |
Complex Floating-Point Vector Types |
Complex Vector Types |
►Floating-Point Vector Types |
16-bit Floating-Point Vector Types |
32-bit Floating-Point Vector Types |
8-bit Floating-Point Vector Types |
►Integer Vector Types |
1024-bit vector types |
128-bit vector types |
16-bit vector types |
256-bit vector types |
32-bit vector types |
512-bit vector types |
64-bit vector types |
8-bit vector types |
MX Vector Types | Microscaling Formats (MX) vector data-types are stored in the vector registers within the AIE-ML v2
►Sparse Vector Types |
Sparse bfloat16/float16 vector types |
Sparse float8 vector types |
Sparse integer vector types |
▼Vector Operations |
Add/Subtract | Intrinsics and operators that allows you to perform addition and substraction operations on all types of vectors
Bitwise logical | Intrinsics and operators that allows you to perform bitwise logical operations on all types of vectors
Compare/Select |
Initialization |
►Multiply Accumulate | Intrinsics allowing you to perform MUL/MAC operations and a few of their variants
Emulated Multiply-accumulate of 16-bit Complex Brain Floating-Point | Elementwise matrix multiplications emulated on top of bfloat16
Emulated Multiply-accumulate of 16b x 32b datatypes | Matrix multiplications in which matrix A has data elements of 16 bit and matrix B has data elements of 32 bit. These operations are emulated on top of Multiply-accumulate of 16b x 16b integer datatypes and might not have optimal performance
Emulated Multiply-accumulate of 32-bit Floating-Point | Elementwise matrix multiplications emulated on top of bfloat16
Emulated Multiply-accumulate of 32b x 16b datatypes | Matrix multiplications in which matrix A has data elements of 32 bit and matrix B has data elements of 16 bit. These operations are emulated on top of Multiply-accumulate of 16b x 16b integer datatypes and might not have optimal performance
Emulated Multiply-accumulate of 32b x 32b datatypes | Matrix multiplications in which matrix A has data elements of 32 bit and matrix B has data elements of 32 bit. These operations are emulated on top of Multiply-accumulate of 32b x 16b integer datatypes and Multiply-accumulate of 16b x 16b integer datatypes and might not have optimal performance
Emulated Multiply-accumulate of Complex 32b x Complex 32b datatypes | Matrix multiplications in which matrix A has data elements of complex 32 bit and matrix B has data elements of complex 32 bit. These operations are emulated on top of Multiply-accumulate of 32b x 16b complex integer datatypes and might not have optimal performance
Emulated Multiply-accumulate of Complex Float and Float datatypes | Elementwise operations based on the already emulated FP32 operations (see Emulated Multiply-accumulate of 32-bit Floating-Point). These operations might not have optimal performance
Multiply-accumulate of 16b x 16b complex integer datatypes |
Multiply-accumulate of 16b x 16b integer datatypes |
Multiply-accumulate of 32b x 16b complex integer datatypes |
Multiply-accumulate of 32b x 16b integer datatypes |
Multiply-accumulate of 8b x 8b integer datatypes |
Multiply-accumulate of MX4 datatypes |
Multiply-accumulate of MX6 datatypes |
Multiply-accumulate of MX9 datatypes |
Multiply-accumulate of bfloat16 * float16 datatypes |
Multiply-accumulate of bfloat16 datatypes |
Multiply-accumulate of float16 * bfloat16 datatypes |
Multiply-accumulate of float16 datatypes |
Multiply-accumulate of float8 and bfloat8 datatypes |
Multiply-accumulate with a sparse matrix |
Negation control in complex multiplication modes | In order to do complex multiplications, some terms need to be negated
Vector x scalar multiply-accumulate of 16b x 16b complex integer datatypes |
Vector x scalar multiply-accumulate of 16b x 16b datatypes |
Vector x scalar multiply-accumulate of 32b x 16b complex integer datatypes |
Vector x scalar multiply-accumulate of 8b x 8b datatypes |
Vector x scalar multiply-accumulate of float16 and bfloat16 datatypes |
Shift | These intrinsics allow shifting full vectors
Shift element | These intrinsics allow inserting of an element into a vector by pushing in a new value at one end of the vector
►Shuffle | Intrinsics allowing you perform vector shuffles
Illustration of Shuffle Modes |