|
| 1 | +.. |
| 2 | + ************************************************** |
| 3 | + * * |
| 4 | + * Automatically generated file, do not edit! * |
| 5 | + * * |
| 6 | + ************************************************** |
| 7 | +
|
| 8 | +.. _amdgpu_synid_gfx90a_hwreg: |
| 9 | + |
| 10 | +hwreg |
| 11 | +===== |
| 12 | + |
| 13 | +Bits of a hardware register being accessed. |
| 14 | + |
| 15 | +The bits of this operand have the following meaning: |
| 16 | + |
| 17 | + ======= ===================== ============ |
| 18 | + Bits Description Value Range |
| 19 | + ======= ===================== ============ |
| 20 | + 5:0 Register *id*. 0..63 |
| 21 | + 10:6 First bit *offset*. 0..31 |
| 22 | + 15:11 *Size* in bits. 1..32 |
| 23 | + ======= ===================== ============ |
| 24 | + |
| 25 | +This operand may be specified as one of the following: |
| 26 | + |
| 27 | +* An :ref:`integer_number<amdgpu_synid_integer_number>` or an :ref:`absolute_expression<amdgpu_synid_absolute_expression>`. The value must be in the range 0..0xFFFF. |
| 28 | +* An *hwreg* value described below. |
| 29 | + |
| 30 | + ==================================== ============================================================================ |
| 31 | + Hwreg Value Syntax Description |
| 32 | + ==================================== ============================================================================ |
| 33 | + hwreg({0..63}) All bits of a register indicated by its *id*. |
| 34 | + hwreg(<*name*>) All bits of a register indicated by its *name*. |
| 35 | + hwreg({0..63}, {0..31}, {1..32}) Register bits indicated by register *id*, first bit *offset* and *size*. |
| 36 | + hwreg(<*name*>, {0..31}, {1..32}) Register bits indicated by register *name*, first bit *offset* and *size*. |
| 37 | + ==================================== ============================================================================ |
| 38 | + |
| 39 | +Numeric values may be specified as positive :ref:`integer numbers<amdgpu_synid_integer_number>` |
| 40 | +or :ref:`absolute expressions<amdgpu_synid_absolute_expression>`. |
| 41 | + |
| 42 | +Defined register *names* include: |
| 43 | + |
| 44 | + =================== ========================================== |
| 45 | + Name Description |
| 46 | + =================== ========================================== |
| 47 | + HW_REG_MODE Shader writeable mode bits. |
| 48 | + HW_REG_STATUS Shader read-only status. |
| 49 | + HW_REG_TRAPSTS Trap status. |
| 50 | + HW_REG_HW_ID Id of wave, simd, compute unit, etc. |
| 51 | + HW_REG_GPR_ALLOC Per-wave SGPR and VGPR allocation. |
| 52 | + HW_REG_LDS_ALLOC Per-wave LDS allocation. |
| 53 | + HW_REG_IB_STS Counters of outstanding instructions. |
| 54 | + HW_REG_SH_MEM_BASES Memory aperture. |
| 55 | + =================== ========================================== |
| 56 | + |
| 57 | +Examples: |
| 58 | + |
| 59 | +.. parsed-literal:: |
| 60 | +
|
| 61 | + reg = 1 |
| 62 | + offset = 2 |
| 63 | + size = 4 |
| 64 | + hwreg_enc = reg | (offset << 6) | ((size - 1) << 11) |
| 65 | +
|
| 66 | + s_getreg_b32 s2, 0x1881 |
| 67 | + s_getreg_b32 s2, hwreg_enc // the same as above |
| 68 | + s_getreg_b32 s2, hwreg(1, 2, 4) // the same as above |
| 69 | + s_getreg_b32 s2, hwreg(reg, offset, size) // the same as above |
| 70 | +
|
| 71 | + s_getreg_b32 s2, hwreg(15) |
| 72 | + s_getreg_b32 s2, hwreg(51, 1, 31) |
| 73 | + s_getreg_b32 s2, hwreg(HW_REG_LDS_ALLOC, 0, 1) |
0 commit comments