AI Engine Intrinsics
(AIE) r2p21
|
The compiler supports pointer dereferencing and pointer arithmetic. No special intrinsics are needed to load or store vectors. For example:
The data pointers must be aligned to 128-bit boundary for either 128-bit or 256-bit vector loads/stores. Load/Store behaviour is undefined when stack-allocated vector variables are unaligned.
AIE cores are able to perform several vector load/store operations per instruction. However, in order for them to be executed in parallel they must target different memory banks. aiecompiler will try to evenly distribute buffers from communication primitives, and users can manually place buffers on specific banks by specifying the address range in the linker script file. In general the compiler will try to schedule many memory accesses in the same instruction when possible, but there are few exceptions. Memory accesses coming from the same pointer, will be scheduled on different instructions. Also, the compiler provides type annotations to associate memory accesses to virtual resources. Accesses using types that are associated to the same virtual resource will not be scheduled in the same instruction
There are 5 logical/virtual resources A,B,C,D and stack.
For user convenience, an enum has been made available to select bank name as a template parameter.
Modules | |
Streams | |