..
    **************************************************
    *                                                *
    *   Automatically generated file, do not edit!   *
    *                                                *
    **************************************************

.. _amdgpu_synid_gfx1030_waitcnt_depctr:

waitcnt_depctr
==============

Dependency counters to wait for.

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 -32768..65535.
* A combination of *symbolic values* described below.

    ======================== ======================== ================ =================
    Syntax                   Description              Valid *N* Values Default *N* Value
    ======================== ======================== ================ =================
    depctr_hold_cnt(<*N*>)   Wait for HOLD_CNT <= N      0..1                1
    depctr_sa_sdst(<*N*>)    Wait for SA_SDST <= N       0..1                1
    depctr_va_vdst(<*N*>)    Wait for VA_VDST <= N       0..15              15
    depctr_va_sdst(<*N*>)    Wait for VA_SDST <= N       0..7                7
    depctr_va_ssrc(<*N*>)    Wait for VA_SSRC <= N       0..1                1
    depctr_va_vcc(<*N*>)     Wait for VA_VCC <= N        0..1                1
    depctr_vm_vsrc(<*N*>)    Wait for VM_VSRC <= N       0..7                7
    ======================== ======================== ================ =================

    These values may be specified in any order. Spaces, ampersands and commas may be used as optional separators.

Examples:

.. parsed-literal::

    s_waitcnt_depctr depctr_sa_sdst(0) depctr_va_vdst(0)
    s_waitcnt_depctr depctr_sa_sdst(1) & depctr_va_vdst(1)
    s_waitcnt_depctr depctr_va_vdst(3), depctr_va_sdst(5)
