ds_gws_barrier GPU Native ISA AMD Vector
DS GWS BARRIER LDS / Data Share
ds_gws_barrier
GDS Only: The GWS resource indicated processes this opcode by queueing it until barrier is satisfied.
Encoding
Verified bit-level encoding data is not yet available for this instruction.
The instruction-format classification below (DS)
is well-documented and stable; exact per-target opcode/field bit positions have not
yet been imported from a verified source.
Operands
Operand details have not yet been curated for this instruction.
GFX Target Compatibility
| Target | Support |
|---|---|
| gfx1100 | ✅ Supported |
Related
More in LDS / Data Share
Reference
AMDGPU / GFX ISA
Description
GDS Only: The GWS resource indicated processes this opcode by queueing it until barrier is satisfied. The number of waves needed is passed in as DATA of first valid thread.
Semantics
//Determine the GWS resource to work on
rid[5:0] = gds_base[5:0] + OFFSET0[5:0];
index = find first valid (vector mask);
value = DATA[thread: index];
// Input Decision Machine
state.type[rid] = BARRIER;
if(state[rid].counter <= 0) then
thread[rid].flag = state[rid].flag;
ENQUEUE;
state[rid].flag = !state.flag;
state[rid].counter = value;
return rd_done;
else
state[rid].counter -= 1;
thread.flag = state[rid].flag;
ENQUEUE;
endif.
Since the waves deliver the count for the next barrier, this function can have a different size barrier for each
occurrence.
// Release Machine
if(state.type == BARRIER) then
if(state.flag != thread.flag) then
return rd_done;
endif;
endif.
CAUTION: The VGPR operand MUST be even-aligned for this instruction. Only 32 bits are used but hardware
treats this instruction as a 64 bit read.
Example
ds_gws_barrier v1 gdsA real instruction accepted by the LLVM assembler, taken verbatim from LLVM's own AMDGPU MC test suite (gfx11). Not from an AMD document, and not authored here.
Sources
- User Guide for AMDGPU Backend ↗ - LLVM Project
-
"AMD Instinct MI300" Instruction Set Architecture: Reference Guide ↗
- Advanced Micro Devices, Inc.
Reference Guide, page 454. - LLVM MC assembler tests for AMDGPU (gfx11) ↗ - LLVM Project