.. ************************************************** * * * Automatically generated file, do not edit! * * * ************************************************** .. _amdgpu_synid_gfx9_msg: msg === A 16-bit message code. The bits of this operand have the following meaning: ============ =============================== =============== Bits Description Value Range ============ =============================== =============== 3:0 Message *type*. 0..15 6:4 Optional *operation*. 0..7 7:7 Unused. \- 9:8 Optional *stream*. 0..3 15:10 Unused. \- ============ =============================== =============== This operand may be specified as one of the following: * An :ref:`integer_number` or an :ref:`absolute_expression`. The value must be in the range from 0 to 0xFFFF. * A *sendmsg* value which is described below. ==================================== ==================================================== Sendmsg Value Syntax Description ==================================== ==================================================== sendmsg(<*type*>) A message identified by its *type*. sendmsg(<*type*>,<*op*>) A message identified by its *type* and *operation*. sendmsg(<*type*>,<*op*>,<*stream*>) A message identified by its *type* and *operation* with a stream *id*. ==================================== ==================================================== *Type* may be specified using message *name* or message *id*. *Op* may be specified using operation *name* or operation *id*. Stream *id* is an integer in the range from 0 to 3. Numeric values may be specified as positive :ref:`integer numbers` or :ref:`absolute expressions`. Each message type supports specific operations: ====================== ========== ============================== ============ ========== Message name Message Id Supported Operations Operation Id Stream Id ====================== ========== ============================== ============ ========== MSG_INTERRUPT 1 \- \- \- MSG_GS 2 GS_OP_CUT 1 Optional \ GS_OP_EMIT 2 Optional \ GS_OP_EMIT_CUT 3 Optional MSG_GS_DONE 3 GS_OP_NOP 0 \- \ GS_OP_CUT 1 Optional \ GS_OP_EMIT 2 Optional \ GS_OP_EMIT_CUT 3 Optional MSG_SAVEWAVE 4 \- \- \- MSG_STALL_WAVE_GEN 5 \- \- \- MSG_HALT_WAVES 6 \- \- \- MSG_ORDERED_PS_DONE 7 \- \- \- MSG_EARLY_PRIM_DEALLOC 8 \- \- \- MSG_GS_ALLOC_REQ 9 \- \- \- MSG_GET_DOORBELL 10 \- \- \- MSG_SYSMSG 15 SYSMSG_OP_ECC_ERR_INTERRUPT 1 \- \ SYSMSG_OP_REG_RD 2 \- \ SYSMSG_OP_TTRACE_PC 4 \- ====================== ========== ============================== ============ ========== *Sendmsg* arguments are validated depending on how *type* value is specified: * If message *type* is specified by name, arguments values must satisfy limitations detailed in the table above. * If message *type* is specified as a number, each argument must not exceed the corresponding value range (see the first table). Examples: .. parsed-literal:: // numeric message code msg = 0x10 s_sendmsg 0x12 s_sendmsg msg + 2 // sendmsg with strict arguments validation s_sendmsg sendmsg(MSG_INTERRUPT) s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT) s_sendmsg sendmsg(MSG_GS, 2) s_sendmsg sendmsg(MSG_GS_DONE, GS_OP_EMIT_CUT, 1) s_sendmsg sendmsg(MSG_SYSMSG, SYSMSG_OP_TTRACE_PC) s_sendmsg sendmsg(MSG_GET_DOORBELL) // sendmsg with validation of value range only msg = 2 op = 3 stream = 1 s_sendmsg sendmsg(msg, op, stream) s_sendmsg sendmsg(2, GS_OP_CUT)