| .. | 
 |     ************************************************** | 
 |     *                                                * | 
 |     *   Automatically generated file, do not edit!   * | 
 |     *                                                * | 
 |     ************************************************** | 
 |  | 
 | .. _amdgpu_synid_gfx940_hwreg: | 
 |  | 
 | hwreg | 
 | ===== | 
 |  | 
 | Bits of a hardware register being accessed. | 
 |  | 
 | The bits of this operand have the following meaning: | 
 |  | 
 |     ======= ===================== ============ | 
 |     Bits    Description           Value Range | 
 |     ======= ===================== ============ | 
 |     5:0     Register *id*.        0..63 | 
 |     10:6    First bit *offset*.   0..31 | 
 |     15:11   *Size* in bits.       1..32 | 
 |     ======= ===================== ============ | 
 |  | 
 | This operand may be specified as one of the following: | 
 |  | 
 | * An :ref:`integer_number<amdgpu_synid_integer_number>` or an :ref:`absolute_expression<amdgpu_synid_absolute_expression>`. The value must be in the range from 0 to 0xFFFF. | 
 | * An *hwreg* value which is described below. | 
 |  | 
 |     ==================================== =============================================================================== | 
 |     Hwreg Value Syntax                   Description | 
 |     ==================================== =============================================================================== | 
 |     hwreg({0..63})                       All bits of a register indicated by the register *id*. | 
 |     hwreg(<*name*>)                      All bits of a register indicated by the register *name*. | 
 |     hwreg({0..63}, {0..31}, {1..32})     Register bits indicated by the register *id*, first bit *offset* and *size*. | 
 |     hwreg(<*name*>, {0..31}, {1..32})    Register bits indicated by the register *name*, first bit *offset* and *size*. | 
 |     ==================================== =============================================================================== | 
 |  | 
 | Numeric values may be specified as positive :ref:`integer numbers<amdgpu_synid_integer_number>` | 
 | or :ref:`absolute expressions<amdgpu_synid_absolute_expression>`. | 
 |  | 
 | Predefined register *names* include: | 
 |  | 
 |     ============================== ========================================== | 
 |     Name                           Description | 
 |     ============================== ========================================== | 
 |     HW_REG_MODE                    Shader writable 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_XCC_ID                  ID of this XCC (compute accelerator chip). | 
 |     HW_REG_SQ_PERF_SNAPSHOT_DATA   Performance snapshot data (first part). | 
 |     HW_REG_SQ_PERF_SNAPSHOT_DATA1  Performance snapshot data (second part). | 
 |     HW_REG_SQ_PERF_SNAPSHOT_PC_LO  PC.lo of wave when snapshot was taken. | 
 |     HW_REG_SQ_PERF_SNAPSHOT_PC_HI  PC.hi of wave when snapshot was taken. | 
 |     ============================== ========================================== | 
 |  | 
 | Examples: | 
 |  | 
 | .. parsed-literal:: | 
 |  | 
 |     reg = 1 | 
 |     offset = 2 | 
 |     size = 4 | 
 |     hwreg_enc = reg | (offset << 6) | ((size - 1) << 11) | 
 |  | 
 |     s_getreg_b32 s2, 0x1881 | 
 |     s_getreg_b32 s2, hwreg_enc                     // the same as above | 
 |     s_getreg_b32 s2, hwreg(1, 2, 4)                // the same as above | 
 |     s_getreg_b32 s2, hwreg(reg, offset, size)      // the same as above | 
 |  | 
 |     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) |