reg_api

void ckernel::tile_regs_acquire()

Acquire an exclusive lock on the DST register for the MATH thread. This register is an array of 16 tiles of 32x32 elements each. This is a blocking function, i.e. this function will wait until the lock is acquired.

NOTE: On Quasar with unpack-to-dest the UNPACK thread also opens its DST section here. Every unpack-to-dest copy_tile / copy_block of the section must come after this call and before tile_regs_commit, each at its own DST index; MATH does not start on the section before that commit.

void ckernel::tile_regs_wait()

Acquire an exclusive lock on the DST register for the PACK thread. It waits for the MATH thread to commit the DST register. This is a blocking function, i.e. this function will wait until the lock is acquired.

template<bool is_fp32_dest_acc_en = DST_ACCUM_MODE>
void ckernel::tile_regs_commit()

Release lock on DST register by MATH thread. The lock had to be previously acquired with tile_regs_acquire.

NOTE: On Quasar with unpack-to-dest the UNPACK thread also closes its DST section here, handing it to MATH.

template<bool is_fp32_dest_acc_en = DST_ACCUM_MODE>
void ckernel::tile_regs_release()

Release lock on DST register by PACK thread. The lock had to be previously acquired with tile_regs_wait.