ds_permute_b32 GPU Native ISA AMD Vector

DS PERMUTE B32 Lane Operations

ds_permute_b32 VDST, ADDR, DATA

Forward-permute: each lane sends its value to a lane index computed by another lane, via the LDS crossbar (no LDS storage consumed).

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.
Format DS
Width 32 bits
Execution Unit LDS Unit
Register Classes VGPR

Operands

  • VDST
    Destination VGPR
  • ADDR
    Per-lane destination-lane selector
  • DATA
    Per-lane value to send

GFX Target Compatibility

TargetSupport
gfx942✅ Supported
gfx1100✅ Supported

Related PTX Concepts

Lane Shuffle ↗
equivalent with restrictions
shfl (PTX)

Related

More in Lane Operations

Reference

AMDGPU / GFX ISA

Description

Forward permute. This does not access LDS memory and may be called even if no LDS memory is allocated to the wave. It uses LDS to implement an arbitrary swizzle across threads in a wavefront.

Semantics

VDST[dst_lane(lane)] = DATA[lane], where dst_lane is computed per-lane from ADDR; lanes that receive no value read undefined/zero depending on target.

Example

ds_permute_b32  v1, v0, v2   // v1[lane] = v2[dest_lane(v0[lane])]

Original illustrative example, written for this site (not reproduced from a specific AMD document).

Sources