AI Engine Intrinsics User Guide  (AIE) v(2024.1)
 All Data Structures Namespaces Functions Variables Typedefs Groups Pages

Intrinsics for moving values from vector data types to accumulator data types. More...

Overview

Intrinsics for moving values from vector data types to accumulator data types.

Moving data from vector data types to accumulator data types (e.g. for initialization) requires adjustment in precision because the accumulator data types are wider in size. For fixed point arithmetic, an appropriate left shift operation would align the decimal point between the two representations. The shift amount is specified as a parameter (in the range -1 to 62 which will be encoded as 0..63 in the instruction).

UPS/LUPS integer intrinsic functions

There are two variants of the UPS intrinsics based on width of input and output data types:

  1. ups is used to convert integer
    • 8-bit vector data into corresponding 48-bit accumulator, or
    • 16-bit vector data (short) into corresponding 48-bit accumulator, or
    • 32-bit vector data into corresponding 48-bit accumulator
  2. lups is used to convert integer
    • 32-bit vector data into corresponding 80-bit accumulator, or
    • 64-bit vector data (long) into corresponding 80-bit accumulator
See Also
'srs' Intrinsics (Shift-Round-Saturate)

256-bit vector to 768-bit accumulator conversions

v16acc48 ups (v16int16 a, int shft)
 
v8cacc48 ups (v8cint16 a, int shft)
 
v8acc80 lups (v8int32 a, int shft)
 
v4cacc80 lups (v4cint32 a, int shft)
 

256-bit vector to 384-bit accumulator conversions

v8acc48 ups (v8int32 a, int shft)
 
v4cacc48 ups (v4cint32 a, int shft)
 
v4acc80 lups (v4int64 a, int shft)
 
v2cacc80 lups (v2cint64 a, int shft)
 

128-bit vector to 384-bit accumulator conversions

v8acc48 ups (v8int16 a, int shft)
 
v4cacc48 ups (v4cint16 a, int shft)
 
v4acc80 lups (v4int32 a, int shft)
 
v2cacc80 lups (v2cint32 a, int shft)
 

128-bit vector to 768-bit accumulator conversions

v16acc48 ups (v16int8 a, int shft)
 
v16acc48 ups (v16uint8 a, int shft)
 

Function Documentation

v8acc80 lups ( v8int32  a,
int  shft 
)

shft parameter is in the range of -1 to 62 which will encoded as 0..63 in the instruction.

v4cacc80 lups ( v4cint32  a,
int  shft 
)

shft parameter is in the range of -1 to 62 which will encoded as 0..63 in the instruction.

v4acc80 lups ( v4int64  a,
int  shft 
)

shft parameter is in the range of -1 to 62 which will encoded as 0..63 in the instruction.

v2cacc80 lups ( v2cint64  a,
int  shft 
)

shft parameter is in the range of -1 to 62 which will encoded as 0..63 in the instruction.

v4acc80 lups ( v4int32  a,
int  shft 
)

shft parameter is in the range of -1 to 62 which will encoded as 0..63 in the instruction.

v2cacc80 lups ( v2cint32  a,
int  shft 
)

shft parameter is in the range of -1 to 62 which will encoded as 0..63 in the instruction.

v16acc48 ups ( v16int16  a,
int  shft 
)

shft parameter is in the range of -1 to 62 which will encoded as 0..63 in the instruction.

v8cacc48 ups ( v8cint16  a,
int  shft 
)

shft parameter is in the range of -1 to 62 which will encoded as 0..63 in the instruction.

v8acc48 ups ( v8int32  a,
int  shft 
)

shft parameter is in the range of -1 to 62 which will encoded as 0..63 in the instruction.

v4cacc48 ups ( v4cint32  a,
int  shft 
)

shft parameter is in the range of -1 to 62 which will encoded as 0..63 in the instruction.

v8acc48 ups ( v8int16  a,
int  shft 
)

shft parameter is in the range of -1 to 62 which will encoded as 0..63 in the instruction.

v4cacc48 ups ( v4cint16  a,
int  shft 
)

shft parameter is in the range of -1 to 62 which will encoded as 0..63 in the instruction.

v16acc48 ups ( v16int8  a,
int  shft 
)

shft parameter is in the range of -1 to 62 which will encoded as 0..63 in the instruction.

v16acc48 ups ( v16uint8  a,
int  shft 
)

shft parameter is in the range of -1 to 62 which will encoded as 0..63 in the instruction.