| AI Engine Intrinsics User Guide (v2026.1)

Loading...
Searching...
No Matches
Upshift
Intrinsics » Vector Conversions

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

## ◆ lups() [1/6]

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.

## ◆ lups() [2/6]

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.

## ◆ lups() [3/6]

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.

## ◆ lups() [4/6]

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.

## ◆ lups() [5/6]

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.

## ◆ lups() [6/6]

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.

## ◆ ups() [1/8]

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.

## ◆ ups() [2/8]

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.

## ◆ ups() [3/8]

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.

## ◆ ups() [4/8]

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.

## ◆ ups() [5/8]

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.

## ◆ ups() [6/8]

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.

## ◆ ups() [7/8]

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.

## ◆ ups() [8/8]

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.