AI Engine Intrinsics  (AIE) r2p21
 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.