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

Loading...
Searching...
No Matches
Streams
Intrinsics » Load/Store Operations

## Overview

These intrinsics enable the AI Engine to access the input/output streams. Some of these intrinsics are "blocking" and will stall the AIE when trying to read from an empty stream, or write to a full one. Non blocking intrinsics have "_nb" in their name.

Concerning performance :

- 32-bit streams can be read/written every clock cycle.
- 128-bit streams can be read/written every 4 clock cycles.

See also
  Control register
  Status register

## Packet headers
These intrinsics are designed to facilitate the headers creation. They do not write directly to stream and should always be combined with a "put_ms" call.
unsigned int | packet_header (unsigned dstID, unsigned pcktType)
| Generate a packet header.

## Generate 32-bit Packet headers and Write to output stream port MS0 or MS1
These intrinsics are designed to facilitate the headers creation. They write directly to stream.
void | put_ms_packet_header (int idx_ms, int tlast, unsigned dstID, unsigned pcktType)
| Generate a packet header and Write to 32-bit streams.
void | put_ms_packet_header (int idx_ms, unsigned dstID, unsigned pcktType)
| Generate a packet header and Write to 32-bit streams.
unsigned int | ctrl_packet_header (unsigned Addr, unsigned n_words, unsigned op_type, unsigned rspID)
| Generate a control packet header.
void | put_ms_ctrl_packet_header (int idx_ms, int tlast, unsigned Addr, unsigned n_words, unsigned op_type, unsigned rspID)
| Generate a control packet header and Write to 32-bit streams.
void | put_ms_ctrl_packet_header (int idx_ms, unsigned Addr, unsigned n_words, unsigned op_type, unsigned rspID)
| Generate a packet header and Write to 32-bit streams.

## Unpack accumulator types into vectors after reading from cascade
v32int8 | unpackb (v8acc48)
| Unpack a 256-bit vector received from the input cascade stream.
v32uint8 | unpackub (v8acc48)
| Unpack a 256-bit vector received from the input cascade stream.
v16int16 | unpack (v8acc48)
| Unpack a 256-bit vector received from the input cascade stream.
v8cint16 | unpackc (v8acc48)
| Unpack a 256-bit vector received from the input cascade stream.
v8int32 | unpackl (v8acc48)
| Unpack a 256-bit vector received from the input cascade stream.
v4cint32 | unpacklc (v4cacc48)
| Unpack a 256-bit vector received from the input cascade stream.
v8float | unpackf (v8acc48)
| Unpack a 256-bit vector received from the input cascade stream.
v4cfloat | unpackfc (v4cacc48)
| Unpack a 256-bit vector received from the input cascade stream.

## Read cascade stream
v8acc48 | get_scd ()
| Read 384 bit data into accumulator from cascade stream.
v4cacc48 | getc_scd ()
| Read 384 bit data into accumulator from cascade stream.
v4acc80 | getl_scd ()
| Read 384 bit data into accumulator from cascade stream.
v2cacc80 | getlc_scd ()
| Read 384 bit data into accumulator from cascade stream.
v8acc48 | get_scd_v8acc48 ()
| Read 384 bit data into accumulator from cascade stream.
v4cacc48 | get_scd_v4cacc48 ()
| Read 384 bit data into accumulator from cascade stream.
v4acc80 | get_scd_v4acc80 ()
| Read 384 bit data into accumulator from cascade stream.
v2cacc80 | get_scd_v2cacc80 ()
| Read 384 bit data into accumulator from cascade stream.
v32int8 | get_scd_v32int8 ()
| Read 384 bit data into accumulator from cascade stream.
v32uint8 | get_scd_v32uint8 ()
| Read 384 bit data into accumulator from cascade stream.
v16int16 | get_scd_v16int16 ()
| Read 384 bit data into accumulator from cascade stream.
v8cint16 | get_scd_v8cint16 ()
| Read 384 bit data into accumulator from cascade stream.
v8int32 | get_scd_v8int32 ()
| Read 384 bit data into accumulator from cascade stream.
v4cint32 | get_scd_v4cint32 ()
| Read 384 bit data into accumulator from cascade stream.
v8float | get_scd_v8float ()
| Read 384 bit data into accumulator from cascade stream.
v4cfloat | get_scd_v4cfloat ()
| Read 384 bit data into accumulator from cascade stream.

## Pack vectors into accumulator types for cascade writing
v8acc48 | packa (v32int8)
| Pack a 256-bit vector for sending via the output cascade stream.
v8acc48 | packa (v32uint8)
| Pack a 256-bit vector for sending via the output cascade stream.
v8acc48 | packa (v16int16)
| Pack a 256-bit vector for sending via the output cascade stream.
v8acc48 | packa (v8cint16)
| Pack a 256-bit vector for sending via the output cascade stream.
v8acc48 | packa (v8int32)
| Pack a 256-bit vector for sending via the output cascade stream.
v4cacc48 | packa (v4cint32)
| Pack a 256-bit vector for sending via the output cascade stream.
v8acc48 | packa (v8float)
| Pack a 256-bit vector for sending via the output cascade stream.
v4cacc48 | packa (v4cfloat)
| Pack a 256-bit vector for sending via the output cascade stream.

## Write cascade stream
void | put_mcd (v8acc48 a)
| Write 384 bit data out to cascade stream.
void | put_mcd (v4cacc48 a)
| Write 384 bit data out to cascade stream.
void | put_mcd (v4acc80 a)
| Write 384 bit data out to cascade stream.
void | put_mcd (v2cacc80 a)
| Write 384 bit data out to cascade stream.
void | put_mcd (v32int8 a)
| Write 384 bit data out to cascade stream.
void | put_mcd (v32uint8 a)
| Write 384 bit data out to cascade stream.
void | put_mcd (v16int16 a)
| Write 384 bit data out to cascade stream.
void | put_mcd (v8cint16 a)
| Write 384 bit data out to cascade stream.
void | put_mcd (v8int32 a)
| Write 384 bit data out to cascade stream.
void | put_mcd (v4cint32 a)
| Write 384 bit data out to cascade stream.
void | put_mcd (v8float a)
| Write 384 bit data out to cascade stream.
void | put_mcd (v4cfloat a)
| Write 384 bit data out to cascade stream.

## Write 32-bit streams
void | put_ms (int idx_ms, int val, int tlast)
| Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.
void | put_ms_nb (int idx_ms, int val, int tlast)
| Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.
void | put_ms (int idx_ms, unsigned int a, int tlast)
| Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.
void | put_ms (int idx_ms, float a, int tlast)
| Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.
void | put_ms (int idx_ms, int a)
| Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.
void | put_ms (int idx_ms, unsigned int a)
| Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.
void | put_ms (int idx_ms, float a)
| Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.
void | put_ms_nb (int idx_ms, unsigned int a, int tlast)
| Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.
void | put_ms_nb (int idx_ms, float a, int tlast)
| Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.
void | put_ms_nb (int idx_ms, int a)
| Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.
void | put_ms_nb (int idx_ms, unsigned int a)
| Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.
void | put_ms_nb (int idx_ms, float a)
| Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.

## Read 32-bit streams
int | get_ss (int idx_ss)
| Read a 32-bit value from input stream port SS0 or SS1 Intrinsics suffixed with _nb perform a non-blocking read. All others are blocking.
int | get_ss_nb (int idx_ss)
| Read a 32-bit value from input stream port SS0 or SS1 Intrinsics suffixed with _nb perform a non-blocking read. All others are blocking.
float | getf_ss (int idx)
| Read a 32-bit value from input stream port SS0 or SS1 Intrinsics suffixed with _nb perform a non-blocking read. All others are blocking.
float | getf_ss_nb (int idx)
| Read a 32-bit value from input stream port SS0 or SS1 Intrinsics suffixed with _nb perform a non-blocking read. All others are blocking.
cint16 | getc_ss (int idx)
| Read a 32-bit value from input stream port SS0 or SS1 Intrinsics suffixed with _nb perform a non-blocking read. All others are blocking.
cint16 | getc_ss_nb (int idx)
| Read a 32-bit value from input stream port SS0 or SS1 Intrinsics suffixed with _nb perform a non-blocking read. All others are blocking.

## Read 128-bit streams
v4int32 | getl_wss (int idx_ss)
| Reads a 128-bit vector from input stream port WSS0 or WSS1.
v16int8 | getb_wss (int idx_ss)
| Reads a 128-bit vector from input stream port WSS0 or WSS1.
v16uint8 | getub_wss (int idx_ss)
| Reads a 128-bit vector from input stream port WSS0 or WSS1.
v8int16 | get_wss (int idx_ss)
| Reads a 128-bit vector from input stream port WSS0 or WSS1.
v4cint16 | getc_wss (int idx_ss)
| Reads a 128-bit vector from input stream port WSS0 or WSS1.
v2cint32 | getlc_wss (int idx_ss)
| Reads a 128-bit vector from input stream port WSS0 or WSS1.
v4float | getf_wss (int idx_ss)
| Reads a 128-bit vector from input stream port WSS0 or WSS1.
v2cfloat | getfc_wss (int idx_ss)
| Reads a 128-bit vector from input stream port WSS0 or WSS1.

## Write 128-bit streams
void | put_wms (int idx_ms, v4int32 val, int tlast)
| Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.
void | put_wms (int idx_ms, v16int8 a, int tlast)
| Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.
void | put_wms (int idx_ms, v16uint8 a, int tlast)
| Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.
void | put_wms (int idx_ms, v8int16 a, int tlast)
| Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.
void | put_wms (int idx_ms, v4cint16 a, int tlast)
| Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.
void | put_wms (int idx_ms, v2cint32 a, int tlast)
| Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.
void | put_wms (int idx_ms, v4float a, int tlast)
| Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.
void | put_wms (int idx_ms, v2cfloat a, int tlast)
| Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.
void | put_wms (int idx_ms, v16int8 a)
| Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.
void | put_wms (int idx_ms, v16uint8 a)
| Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.
void | put_wms (int idx_ms, v8int16 a)
| Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.
void | put_wms (int idx_ms, v4cint16 a)
| Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.
void | put_wms (int idx_ms, v4int32 a)
| Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.
void | put_wms (int idx_ms, v2cint32 a)
| Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.
void | put_wms (int idx_ms, v4float a)
| Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.
void | put_wms (int idx_ms, v2cfloat a)
| Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.

## Function Documentation

## ◆ ctrl_packet_header()

unsigned int ctrl_packet_header | ( | unsigned | Addr,
|  | unsigned | n_words,
|  | unsigned | op_type,
|  | unsigned | rspID
| ) |  |

Generate a control packet header.

Parameters

  Addr | unsigned Local Byte Address (two LSB not used). Accesses are 128 bit aligned.
  n_words | unsigned 2 bits. 1 to 4 words of 32 bit data to follow. This must be a compile time constant.
  op_type | unsigned Operation modes - 2 bit (LSB). 3 modes. 0 - Write without return, 1 - Read with return, 2 - Write with return. The response to a read will be a packet switched stream header and 1 to 4 32 bit word data. The response to a write will be a packet switched stream header. This must be a compile time constant.
  rspID | unsigned Response ID: 5 bit (LSB). Identifies the return destination for operation modes with a return. (The return packet's header's 'dstID' is set to this).

This intrinsic takes an address, number of words, operation type and response ID and returns a control packet header.

Note
  Parameters 'n_words' and 'op_type' must be compile time constants.

## ◆ get_scd()

v8acc48 get_scd | ( |  | ) |

Read 384 bit data into accumulator from cascade stream.

## ◆ get_scd_v16int16()

v16int16 get_scd_v16int16 | ( |  | ) |

Read 384 bit data into accumulator from cascade stream.

## ◆ get_scd_v2cacc80()

v2cacc80 get_scd_v2cacc80 | ( |  | ) |

Read 384 bit data into accumulator from cascade stream.

## ◆ get_scd_v32int8()

v32int8 get_scd_v32int8 | ( |  | ) |

Read 384 bit data into accumulator from cascade stream.

## ◆ get_scd_v32uint8()

v32uint8 get_scd_v32uint8 | ( |  | ) |

Read 384 bit data into accumulator from cascade stream.

## ◆ get_scd_v4acc80()

v4acc80 get_scd_v4acc80 | ( |  | ) |

Read 384 bit data into accumulator from cascade stream.

## ◆ get_scd_v4cacc48()

v4cacc48 get_scd_v4cacc48 | ( |  | ) |

Read 384 bit data into accumulator from cascade stream.

## ◆ get_scd_v4cfloat()

v4cfloat get_scd_v4cfloat | ( |  | ) |

Read 384 bit data into accumulator from cascade stream.

## ◆ get_scd_v4cint32()

v4cint32 get_scd_v4cint32 | ( |  | ) |

Read 384 bit data into accumulator from cascade stream.

## ◆ get_scd_v8acc48()

v8acc48 get_scd_v8acc48 | ( |  | ) |

Read 384 bit data into accumulator from cascade stream.

## ◆ get_scd_v8cint16()

v8cint16 get_scd_v8cint16 | ( |  | ) |

Read 384 bit data into accumulator from cascade stream.

## ◆ get_scd_v8float()

v8float get_scd_v8float | ( |  | ) |

Read 384 bit data into accumulator from cascade stream.

## ◆ get_scd_v8int32()

v8int32 get_scd_v8int32 | ( |  | ) |

Read 384 bit data into accumulator from cascade stream.

## ◆ get_ss()

int get_ss | ( | int | idx_ss | ) |

Read a 32-bit value from input stream port SS0 or SS1 Intrinsics suffixed with _nb perform a non-blocking read. All others are blocking.

## ◆ get_ss_nb()

int get_ss_nb | ( | int | idx_ss | ) |

Read a 32-bit value from input stream port SS0 or SS1 Intrinsics suffixed with _nb perform a non-blocking read. All others are blocking.

## ◆ get_wss()

v8int16 get_wss | ( | int | idx_ss | ) |

Reads a 128-bit vector from input stream port WSS0 or WSS1.

## ◆ getb_wss()

v16int8 getb_wss | ( | int | idx_ss | ) |

Reads a 128-bit vector from input stream port WSS0 or WSS1.

## ◆ getc_scd()

v4cacc48 getc_scd | ( |  | ) |

Read 384 bit data into accumulator from cascade stream.

## ◆ getc_ss()

cint16 getc_ss | ( | int | idx | ) |

Read a 32-bit value from input stream port SS0 or SS1 Intrinsics suffixed with _nb perform a non-blocking read. All others are blocking.

## ◆ getc_ss_nb()

cint16 getc_ss_nb | ( | int | idx | ) |

Read a 32-bit value from input stream port SS0 or SS1 Intrinsics suffixed with _nb perform a non-blocking read. All others are blocking.

## ◆ getc_wss()

v4cint16 getc_wss | ( | int | idx_ss | ) |

Reads a 128-bit vector from input stream port WSS0 or WSS1.

## ◆ getf_ss()

float getf_ss | ( | int | idx | ) |

Read a 32-bit value from input stream port SS0 or SS1 Intrinsics suffixed with _nb perform a non-blocking read. All others are blocking.

## ◆ getf_ss_nb()

float getf_ss_nb | ( | int | idx | ) |

Read a 32-bit value from input stream port SS0 or SS1 Intrinsics suffixed with _nb perform a non-blocking read. All others are blocking.

## ◆ getf_wss()

v4float getf_wss | ( | int | idx_ss | ) |

Reads a 128-bit vector from input stream port WSS0 or WSS1.

## ◆ getfc_wss()

v2cfloat getfc_wss | ( | int | idx_ss | ) |

Reads a 128-bit vector from input stream port WSS0 or WSS1.

## ◆ getl_scd()

v4acc80 getl_scd | ( |  | ) |

Read 384 bit data into accumulator from cascade stream.

## ◆ getl_wss()

v4int32 getl_wss | ( | int | idx_ss | ) |

Reads a 128-bit vector from input stream port WSS0 or WSS1.

## ◆ getlc_scd()

v2cacc80 getlc_scd | ( |  | ) |

Read 384 bit data into accumulator from cascade stream.

## ◆ getlc_wss()

v2cint32 getlc_wss | ( | int | idx_ss | ) |

Reads a 128-bit vector from input stream port WSS0 or WSS1.

## ◆ getub_wss()

v16uint8 getub_wss | ( | int | idx_ss | ) |

Reads a 128-bit vector from input stream port WSS0 or WSS1.

## ◆ packa() [1/8]

v8acc48 packa | ( | v16int16 |  | ) |

Pack a 256-bit vector for sending via the output cascade stream.

This intrinsic sign extends each 32bit word to 48bit and then assigns the result to a accumulator of the return type. This intrinsic can only be used coupled with put_mcd and cannot be used alone.

## ◆ packa() [2/8]

v8acc48 packa | ( | v32int8 |  | ) |

Pack a 256-bit vector for sending via the output cascade stream.

This intrinsic sign extends each 32bit word to 48bit and then assigns the result to a accumulator of the return type. This intrinsic can only be used coupled with put_mcd and cannot be used alone.

## ◆ packa() [3/8]

v8acc48 packa | ( | v32uint8 |  | ) |

Pack a 256-bit vector for sending via the output cascade stream.

This intrinsic sign extends each 32bit word to 48bit and then assigns the result to a accumulator of the return type. This intrinsic can only be used coupled with put_mcd and cannot be used alone.

## ◆ packa() [4/8]

v4cacc48 packa | ( | v4cfloat |  | ) |

Pack a 256-bit vector for sending via the output cascade stream.

This intrinsic sign extends each 32bit word to 48bit and then assigns the result to a accumulator of the return type. This intrinsic can only be used coupled with put_mcd and cannot be used alone.

## ◆ packa() [5/8]

v4cacc48 packa | ( | v4cint32 |  | ) |

Pack a 256-bit vector for sending via the output cascade stream.

This intrinsic sign extends each 32bit word to 48bit and then assigns the result to a accumulator of the return type. This intrinsic can only be used coupled with put_mcd and cannot be used alone.

## ◆ packa() [6/8]

v8acc48 packa | ( | v8cint16 |  | ) |

Pack a 256-bit vector for sending via the output cascade stream.

This intrinsic sign extends each 32bit word to 48bit and then assigns the result to a accumulator of the return type. This intrinsic can only be used coupled with put_mcd and cannot be used alone.

## ◆ packa() [7/8]

v8acc48 packa | ( | v8float |  | ) |

Pack a 256-bit vector for sending via the output cascade stream.

This intrinsic sign extends each 32bit word to 48bit and then assigns the result to a accumulator of the return type. This intrinsic can only be used coupled with put_mcd and cannot be used alone.

## ◆ packa() [8/8]

v8acc48 packa | ( | v8int32 |  | ) |

Pack a 256-bit vector for sending via the output cascade stream.

This intrinsic sign extends each 32bit word to 48bit and then assigns the result to a accumulator of the return type. This intrinsic can only be used coupled with put_mcd and cannot be used alone.

## ◆ packet_header()

unsigned int packet_header | ( | unsigned | dstID,
|  | unsigned | pcktType
| ) |  |

Generate a packet header.

Parameters

  dstID | unsigned 5 bit (LSB). Identifies the destination of the packet. Should be unique amongst all streams it shares ports with. Can be 32 destinations or more with nested headers.
  pcktType | unsigned 3 bit (LSB). Can be used to distinguish packets with the same source and destination. Control packets set this to 7 if there is an error. This must be a compile time constant.

This intrinsic takes a destination ID and a packet type and returns a packet header.

Note
  Parameter 'pcktType' must be a compile time constant.
  A packet with nested headers has a number of headers at the beginning (instead of the usual single header). For every level of header nesting, the number of possible destinations is multiplied by 32, thus for a two-nested header approach, the number of destinations is already 1024.

## ◆ put_mcd() [1/12]

void put_mcd | ( | v16int16 | a | ) |

Write 384 bit data out to cascade stream.

## ◆ put_mcd() [2/12]

void put_mcd | ( | v2cacc80 | a | ) |

Write 384 bit data out to cascade stream.

## ◆ put_mcd() [3/12]

void put_mcd | ( | v32int8 | a | ) |

Write 384 bit data out to cascade stream.

## ◆ put_mcd() [4/12]

void put_mcd | ( | v32uint8 | a | ) |

Write 384 bit data out to cascade stream.

## ◆ put_mcd() [5/12]

void put_mcd | ( | v4acc80 | a | ) |

Write 384 bit data out to cascade stream.

## ◆ put_mcd() [6/12]

void put_mcd | ( | v4cacc48 | a | ) |

Write 384 bit data out to cascade stream.

## ◆ put_mcd() [7/12]

void put_mcd | ( | v4cfloat | a | ) |

Write 384 bit data out to cascade stream.

## ◆ put_mcd() [8/12]

void put_mcd | ( | v4cint32 | a | ) |

Write 384 bit data out to cascade stream.

## ◆ put_mcd() [9/12]

void put_mcd | ( | v8acc48 | a | ) |

Write 384 bit data out to cascade stream.

## ◆ put_mcd() [10/12]

void put_mcd | ( | v8cint16 | a | ) |

Write 384 bit data out to cascade stream.

## ◆ put_mcd() [11/12]

void put_mcd | ( | v8float | a | ) |

Write 384 bit data out to cascade stream.

## ◆ put_mcd() [12/12]

void put_mcd | ( | v8int32 | a | ) |

Write 384 bit data out to cascade stream.

## ◆ put_ms() [1/6]

void put_ms | ( | int | idx_ms,
|  | float | a
| ) |  |

Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.

## ◆ put_ms() [2/6]

void put_ms | ( | int | idx_ms,
|  | float | a,
|  | int | tlast
| ) |  |

Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.

## ◆ put_ms() [3/6]

void put_ms | ( | int | idx_ms,
|  | int | a
| ) |  |

Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.

## ◆ put_ms() [4/6]

void put_ms | ( | int | idx_ms,
|  | int | val,
|  | int | tlast
| ) |  |

Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.

## ◆ put_ms() [5/6]

void put_ms | ( | int | idx_ms,
|  | unsigned int | a
| ) |  |

Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.

## ◆ put_ms() [6/6]

void put_ms | ( | int | idx_ms,
|  | unsigned int | a,
|  | int | tlast
| ) |  |

Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.

## ◆ put_ms_ctrl_packet_header() [1/2]

void put_ms_ctrl_packet_header | ( | int | idx_ms,
|  | int | tlast,
|  | unsigned | Addr,
|  | unsigned | n_words,
|  | unsigned | op_type,
|  | unsigned | rspID
| ) |  |

Generate a control packet header and Write to 32-bit streams.

Parameters

  idx_ms | master ports
  tlast | The optional tlast parameter indicates the last word in a packet and the default is false.
  Addr | unsigned Local Byte Address (two LSB not used). Accesses are 128 bit aligned.
  n_words | unsigned 2 bits. 1 to 4 words of 32 bit data to follow. This must be a compile time constant.
  op_type | unsigned Operation modes - 2 bit (LSB). 3 modes. 0 - Write without return, 1 - Read with return, 2 - Write with return. The response to a read will be a packet switched stream header and 1 to 4 32 bit word data. The response to a write will be a packet switched stream header. This must be a compile time constant.
  rspID | unsigned Response ID: 5 bit (LSB). Identifies the return destination for operation modes with a return. (The return packet's header's 'dstID' is set to this).

This intrinsic takes an address, number of words, operation type and response ID and returns a control packet header.

Note
  Parameters 'n_words' and 'op_type' must be compile time constants.

## ◆ put_ms_ctrl_packet_header() [2/2]

void put_ms_ctrl_packet_header | ( | int | idx_ms,
|  | unsigned | Addr,
|  | unsigned | n_words,
|  | unsigned | op_type,
|  | unsigned | rspID
| ) |  |

Generate a packet header and Write to 32-bit streams.

Parameters

  idx_ms | master ports
  tlast | The optional tlast parameter indicates the last word in a packet and the default is false.
  dstID | unsigned 5 bit (LSB). Identifies the destination of the packet. Should be unique amongst all streams it shares ports with. Can be 32 destinations or more with nested headers.
  pcktType | unsigned 3 bit (LSB). Can be used to distinguish packets with the same source and destination. Control packets set this to 7 if there is an error. This must be a compile time constant.

This intrinsic takes a destination ID and a packet type and returns a packet header.

Note
  Parameter 'pcktType' must be a compile time constant.
  A packet with nested headers has a number of headers at the beginning (instead of the usual single header). For every level of header nesting, the number of possible destinations is multiplied by 32, thus for a two-nested header approach, the number of destinations is already 1024.

## ◆ put_ms_nb() [1/6]

void put_ms_nb | ( | int | idx_ms,
|  | float | a
| ) |  |

Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.

## ◆ put_ms_nb() [2/6]

void put_ms_nb | ( | int | idx_ms,
|  | float | a,
|  | int | tlast
| ) |  |

Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.

## ◆ put_ms_nb() [3/6]

void put_ms_nb | ( | int | idx_ms,
|  | int | a
| ) |  |

Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.

## ◆ put_ms_nb() [4/6]

void put_ms_nb | ( | int | idx_ms,
|  | int | val,
|  | int | tlast
| ) |  |

Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.

## ◆ put_ms_nb() [5/6]

void put_ms_nb | ( | int | idx_ms,
|  | unsigned int | a
| ) |  |

Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.

## ◆ put_ms_nb() [6/6]

void put_ms_nb | ( | int | idx_ms,
|  | unsigned int | a,
|  | int | tlast
| ) |  |

Write a 32-bit value to output stream port MS0 or MS1 The optional tlast parameter indicates the last word in a packet and the default is false. Intrinsics suffixed with _nb perform a non-blocking write. All others are blocking.

## ◆ put_ms_packet_header() [1/2]

void put_ms_packet_header | ( | int | idx_ms,
|  | int | tlast,
|  | unsigned | dstID,
|  | unsigned | pcktType
| ) |  |

Generate a packet header and Write to 32-bit streams.

Parameters

  idx_ms | master ports
  tlast | The optional tlast parameter indicates the last word in a packet and the default is false.
  dstID | unsigned 5 bit (LSB). Identifies the destination of the packet. Should be unique amongst all streams it shares ports with. Can be 32 destinations or more with nested headers.
  pcktType | unsigned 3 bit (LSB). Can be used to distinguish packets with the same source and destination. Control packets set this to 7 if there is an error. This must be a compile time constant.

This intrinsic takes a destination ID and a packet type and returns a packet header.

Note
  Parameter 'pcktType' must be a compile time constant.
  A packet with nested headers has a number of headers at the beginning (instead of the usual single header). For every level of header nesting, the number of possible destinations is multiplied by 32, thus for a two-nested header approach, the number of destinations is already 1024.

## ◆ put_ms_packet_header() [2/2]

void put_ms_packet_header | ( | int | idx_ms,
|  | unsigned | dstID,
|  | unsigned | pcktType
| ) |  |

Generate a packet header and Write to 32-bit streams.

Parameters

  idx_ms | master ports
  tlast | The optional tlast parameter indicates the last word in a packet and the default is false.
  dstID | unsigned 5 bit (LSB). Identifies the destination of the packet. Should be unique amongst all streams it shares ports with. Can be 32 destinations or more with nested headers.
  pcktType | unsigned 3 bit (LSB). Can be used to distinguish packets with the same source and destination. Control packets set this to 7 if there is an error. This must be a compile time constant.

This intrinsic takes a destination ID and a packet type and returns a packet header.

Note
  Parameter 'pcktType' must be a compile time constant.
  A packet with nested headers has a number of headers at the beginning (instead of the usual single header). For every level of header nesting, the number of possible destinations is multiplied by 32, thus for a two-nested header approach, the number of destinations is already 1024.

## ◆ put_wms() [1/16]

void put_wms | ( | int | idx_ms,
|  | v16int8 | a
| ) |  |

Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.

## ◆ put_wms() [2/16]

void put_wms | ( | int | idx_ms,
|  | v16int8 | a,
|  | int | tlast
| ) |  |

Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.

## ◆ put_wms() [3/16]

void put_wms | ( | int | idx_ms,
|  | v16uint8 | a
| ) |  |

Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.

## ◆ put_wms() [4/16]

void put_wms | ( | int | idx_ms,
|  | v16uint8 | a,
|  | int | tlast
| ) |  |

Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.

## ◆ put_wms() [5/16]

void put_wms | ( | int | idx_ms,
|  | v2cfloat | a
| ) |  |

Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.

## ◆ put_wms() [6/16]

void put_wms | ( | int | idx_ms,
|  | v2cfloat | a,
|  | int | tlast
| ) |  |

Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.

## ◆ put_wms() [7/16]

void put_wms | ( | int | idx_ms,
|  | v2cint32 | a
| ) |  |

Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.

## ◆ put_wms() [8/16]

void put_wms | ( | int | idx_ms,
|  | v2cint32 | a,
|  | int | tlast
| ) |  |

Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.

## ◆ put_wms() [9/16]

void put_wms | ( | int | idx_ms,
|  | v4cint16 | a
| ) |  |

Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.

## ◆ put_wms() [10/16]

void put_wms | ( | int | idx_ms,
|  | v4cint16 | a,
|  | int | tlast
| ) |  |

Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.

## ◆ put_wms() [11/16]

void put_wms | ( | int | idx_ms,
|  | v4float | a
| ) |  |

Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.

## ◆ put_wms() [12/16]

void put_wms | ( | int | idx_ms,
|  | v4float | a,
|  | int | tlast
| ) |  |

Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.

## ◆ put_wms() [13/16]

void put_wms | ( | int | idx_ms,
|  | v4int32 | a
| ) |  |

Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.

## ◆ put_wms() [14/16]

void put_wms | ( | int | idx_ms,
|  | v4int32 | val,
|  | int | tlast
| ) |  |

Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.

## ◆ put_wms() [15/16]

void put_wms | ( | int | idx_ms,
|  | v8int16 | a
| ) |  |

Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.

## ◆ put_wms() [16/16]

void put_wms | ( | int | idx_ms,
|  | v8int16 | a,
|  | int | tlast
| ) |  |

Writes a 128-bit vector to output stream port WMS0 or WMS1 The optional tlast parameter indicates the last word in a packet and the default is false.

## ◆ unpack()

v16int16 unpack | ( | v8acc48 |  | ) |

Unpack a 256-bit vector received from the input cascade stream.

This intrinsic truncates each 48bit word to 32bit and then assigns the result to a vector of the result type This intrinsic can only be used coupled with a stream access (getxx_scd() )

## ◆ unpackb()

v32int8 unpackb | ( | v8acc48 |  | ) |

Unpack a 256-bit vector received from the input cascade stream.

This intrinsic truncates each 48bit word to 32bit and then assigns the result to a vector of the result type This intrinsic can only be used coupled with a stream access (getxx_scd() )

## ◆ unpackc()

v8cint16 unpackc | ( | v8acc48 |  | ) |

Unpack a 256-bit vector received from the input cascade stream.

This intrinsic truncates each 48bit word to 32bit and then assigns the result to a vector of the result type This intrinsic can only be used coupled with a stream access (getxx_scd() )

## ◆ unpackf()

v8float unpackf | ( | v8acc48 |  | ) |

Unpack a 256-bit vector received from the input cascade stream.

This intrinsic truncates each 48bit word to 32bit and then assigns the result to a vector of the result type This intrinsic can only be used coupled with a stream access (getxx_scd() )

## ◆ unpackfc()

v4cfloat unpackfc | ( | v4cacc48 |  | ) |

Unpack a 256-bit vector received from the input cascade stream.

This intrinsic truncates each 48bit word to 32bit and then assigns the result to a vector of the result type This intrinsic can only be used coupled with a stream access (getxx_scd() )

## ◆ unpackl()

v8int32 unpackl | ( | v8acc48 |  | ) |

Unpack a 256-bit vector received from the input cascade stream.

This intrinsic truncates each 48bit word to 32bit and then assigns the result to a vector of the result type This intrinsic can only be used coupled with a stream access (getxx_scd() )

## ◆ unpacklc()

v4cint32 unpacklc | ( | v4cacc48 |  | ) |

Unpack a 256-bit vector received from the input cascade stream.

This intrinsic truncates each 48bit word to 32bit and then assigns the result to a vector of the result type This intrinsic can only be used coupled with a stream access (getxx_scd() )

## ◆ unpackub()

v32uint8 unpackub | ( | v8acc48 |  | ) |

Unpack a 256-bit vector received from the input cascade stream.

This intrinsic truncates each 48bit word to 32bit and then assigns the result to a vector of the result type This intrinsic can only be used coupled with a stream access (getxx_scd() )