AI Engine Intrinsics User Guide  (AIE) r2p23
 All Data Structures Namespaces Functions Variables Typedefs Groups Pages
Vector Data-types

Overview

Vector data-types pack multiple scalar data elements into a wider vector. There are vector data-types with standard sized elements (8-bit, 16-bit, 32-bit, 64-bit), as well as accumulator types with wider element data-width (48-bit, 80-bit) for maintaining higher precision during arithmetic operations. A 48-bit accumulator element can be used to store the result of 16x16 (or 16x8) multiply-accumulate operations, while an 80-bit accumulator element can be used to store the result of 32x32 multiply-accumulate operations, without loss of precision. Furthermore, results from mixed precision computations higher than 16x8, namely, 16x32 and 32x16 can be stored either in a 48-bit or an 80-bit accumulator.

The general naming convention for these data-types is shown below.

    v{NumLanes}[c]{[u]int|float|acc}{SizeofElement}

Optional specifications :

For example, v16int8, v4cint16, v2int128, v4cacc48, v8acc80, v4float

The total data-width of the vector data-types can be 128-bits, 256-bits, 512-bits, or 1024-bits. The total data-width of the accumulator data-types can be 320/384-bits or 640/768-bits.

Note
Vector and Accumulator data-types are stored in different sets of registers within the AIE. Large vectors (>128-bits) and accumulators (>320/384-bits) occupy more than one physical register. Register spills will reduce performance when more than one large register is 'live'.

Modules

 Accumulator Types
 
 Floating Point Vector Types
 
 Integer Vector Types