binary_shift_tile
-
void ckernel::binary_shift_tile_init()
-
Please refer to documentation for any_init.
Left Shift
-
template<DataFormat data_format>
void ckernel::binary_left_shift_tile(uint32_t idst0, uint32_t idst1, uint32_t odst)
-
Performs an elementwise shift operation to the left on the input at idst0, by input at idst1: y = x0 << x1 Both inputs must be of same data type only. Output overwrites odst in DST.
A shift amount < 0 or >= 32 produces 0.
The DST register buffer must be in acquired state via acquire_dst call. This call is blocking and is only available on the compute engine. A maximum of 4 tiles from each operand can be loaded into DST at once, for a total of 8 tiles, when using 16 bit formats. This gets reduced to 2 tiles from each operand for 32 bit formats.
Return value: None
Argument Description
idst0 The index of the tile in DST register buffer to use as first operand
idst1 The index of the tile in DST register buffer to use as second operand
odst The index of the tile in DST register buffer to use as output
- Template Parameters:
-
data_formatTemplate argument specifying the data type. Supported data formats are: DataFormat::Int32, DataFormat::UInt32, DataFormat::UInt16
Right Shift
-
template<DataFormat data_format>
void ckernel::binary_right_shift_tile(uint32_t idst0, uint32_t idst1, uint32_t odst)
-
Performs an elementwise shift operation to the right on the input at idst0, by input at idst1: y = x0 >> x1 Both inputs must be of same data type only. Output overwrites odst in DST.
Int32 uses an arithmetic shift. UInt32 uses a logical shift. UInt16 uses the Int32 path.
For UInt32 a shift amount >= 32 saturates to 31, matching scalar
right_shift_tile. For Int32 and UInt16 a shift amount < 0 or >= 32 produces 0.The DST register buffer must be in acquired state via acquire_dst call. This call is blocking and is only available on the compute engine. A maximum of 4 tiles from each operand can be loaded into DST at once, for a total of 8 tiles, when using 16 bit formats. This gets reduced to 2 tiles from each operand for 32 bit formats.
Return value: None
Argument Description
idst0 The index of the tile in DST register buffer to use as first operand
idst1 The index of the tile in DST register buffer to use as second operand
odst The index of the tile in DST register buffer to use as output
- Template Parameters:
-
data_formatTemplate argument specifying the data type. Supported data formats are: DataFormat::Int32, DataFormat::UInt32, DataFormat::UInt16
Logical Right Shift
-
template<DataFormat data_format>
void ckernel::binary_logical_right_shift_tile(uint32_t idst0, uint32_t idst1, uint32_t odst)
-
Performs an elementwise logical shift operation to the right on the input at idst0, by input at idst1: y = x0 >> x1 Both inputs must be same data type only. Vacated high bits are filled with zeros. Output overwrites odst in DST.
A shift amount < 0 or >= 32 produces 0. Unlike
binary_right_shift_tileon UInt32, out-of-range counts are not saturated to 31.The DST register buffer must be in acquired state via acquire_dst call. This call is blocking and is only available on the compute engine. A maximum of 4 tiles from each operand can be loaded into DST at once, for a total of 8 tiles, when using 16 bit formats. This gets reduced to 2 tiles from each operand for 32 bit formats.
Return value: None
Argument Description
idst0 The index of the tile in DST register buffer to use as first operand
idst1 The index of the tile in DST register buffer to use as second operand
odst The index of the tile in DST register buffer to use as output
- Template Parameters:
-
data_formatTemplate argument specifying the data type. Supported data formats are: DataFormat::Int32, DataFormat::UInt32, DataFormat::UInt16