AI Engine Intrinsics User Guide (AIE) v2024.2
Loading...
Searching...
No Matches

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 :

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
Addrunsigned Local Byte Address (two LSB not used). Accesses are 128 bit aligned.
n_wordsunsigned 2 bits. 1 to 4 words of 32 bit data to follow. This must be a compile time constant.
op_typeunsigned 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.
rspIDunsigned 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.
Deprecated:
Please use 'void put_ms_ctrl_packet_header(int, int, unsigned, unsigned, unsigned, unsigned)' instead.

◆ 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.

Deprecated:
Better use put_mcd(), which now supports all the datatypes that can be stored in an accumulator.

◆ 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.

Deprecated:
Better use put_mcd(), which now supports all the datatypes that can be stored in an accumulator.

◆ 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.

Deprecated:
Better use put_mcd(), which now supports all the datatypes that can be stored in an accumulator.

◆ 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.

Deprecated:
Better use put_mcd(), which now supports all the datatypes that can be stored in an accumulator.

◆ 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.

Deprecated:
Better use put_mcd(), which now supports all the datatypes that can be stored in an accumulator.

◆ 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.

Deprecated:
Better use put_mcd(), which now supports all the datatypes that can be stored in an accumulator.

◆ 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.

Deprecated:
Better use put_mcd(), which now supports all the datatypes that can be stored in an accumulator.

◆ 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.

Deprecated:
Better use put_mcd(), which now supports all the datatypes that can be stored in an accumulator.

◆ packet_header()

unsigned int packet_header ( unsigned  dstID,
unsigned  pcktType 
)

Generate a packet header.

Parameters
dstIDunsigned 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.
pcktTypeunsigned 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.
Deprecated:
Please use 'void put_ms_packet_header(int, int, unsigned, unsigned)' instead.

◆ 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_msmaster ports
tlastThe optional tlast parameter indicates the last word in a packet and the default is false.
Addrunsigned Local Byte Address (two LSB not used). Accesses are 128 bit aligned.
n_wordsunsigned 2 bits. 1 to 4 words of 32 bit data to follow. This must be a compile time constant.
op_typeunsigned 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.
rspIDunsigned 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_msmaster ports
tlastThe optional tlast parameter indicates the last word in a packet and the default is false.
dstIDunsigned 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.
pcktTypeunsigned 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_msmaster ports
tlastThe optional tlast parameter indicates the last word in a packet and the default is false.
dstIDunsigned 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.
pcktTypeunsigned 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_msmaster ports
tlastThe optional tlast parameter indicates the last word in a packet and the default is false.
dstIDunsigned 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.
pcktTypeunsigned 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() )

Deprecated:
Better use get_scd_T() where T is the type you wish to obtain. E.g. get_scd_v32int8()

◆ 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() )

Deprecated:
Better use get_scd_T() where T is the type you wish to obtain. E.g. get_scd_v32int8()

◆ 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() )

Deprecated:
Better use get_scd_T() where T is the type you wish to obtain. E.g. get_scd_v32int8()

◆ 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() )

Deprecated:
Better use get_scd_T() where T is the type you wish to obtain. E.g. get_scd_v32int8()

◆ 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() )

Deprecated:
Better use get_scd_T() where T is the type you wish to obtain. E.g. get_scd_v32int8()

◆ 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() )

Deprecated:
Better use get_scd_T() where T is the type you wish to obtain. E.g. get_scd_v32int8()

◆ 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() )

Deprecated:
Better use get_scd_T() where T is the type you wish to obtain. E.g. get_scd_v32int8()

◆ 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() )

Deprecated:
Better use get_scd_T() where T is the type you wish to obtain. E.g. get_scd_v32int8()