hwregΒΆ

Bits of a hardware register being accessed.

The bits of this operand have the following meaning:

Bits Description
5:0 Register id.
10:6 First bit offset (0..31).
15:11 Size in bits (1..32).

This operand may be specified as a positive 16-bit integer_number or using the syntax described below.

Syntax Description
hwreg({0..63}) All bits of a register indicated by its id.
hwreg(<name>) All bits of a register indicated by its name.
hwreg({0..63}, {0..31}, {1..32}) Register bits indicated by register id, first bit offset and size.
hwreg(<name>, {0..31}, {1..32}) Register bits indicated by register name, first bit offset and size.

Register id, offset and size must be specified as positive integer numbers.

Defined register names include:

Name Description
HW_REG_MODE Shader writeable mode bits.
HW_REG_STATUS Shader read-only status.
HW_REG_TRAPSTS Trap status.
HW_REG_HW_ID Id of wave, simd, compute unit, etc.
HW_REG_GPR_ALLOC Per-wave SGPR and VGPR allocation.
HW_REG_LDS_ALLOC Per-wave LDS allocation.
HW_REG_IB_STS Counters of outstanding instructions.
HW_REG_SH_MEM_BASES Memory aperture.
HW_REG_TBA_LO tba_lo register.
HW_REG_TBA_HI tba_hi register.
HW_REG_TMA_LO tma_lo register.
HW_REG_TMA_HI tma_hi register.
HW_REG_FLAT_SCR_LO flat_scratch_lo register.
HW_REG_FLAT_SCR_HI flat_scratch_hi register.
HW_REG_XNACK_MASK xnack_mask register.
HW_REG_POPS_PACKER pops_packer register.

Examples:

s_getreg_b32 s2, 0x6
s_getreg_b32 s2, hwreg(15)
s_getreg_b32 s2, hwreg(51, 1, 31)
s_getreg_b32 s2, hwreg(HW_REG_LDS_ALLOC, 0, 1)