| AI Engine Intrinsics User Guide (AIE) v2025.2

Loading...
Searching...
No Matches
Modules
Vector Data-types
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 :

- 'c' denotes complex data with real and imaginary parts packed together
- 'float' denotes single precision floating point values. (Note : there are no accumulator registers for floating point vectors)
- 'u' denotes unsigned

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