Skip to main content

update_dpp

Function update_dpp 

Source
pub unsafe fn update_dpp<const DPP_CTRL: u32, const ROW_MASK: u32, const BANK_MASK: u32, const BOUND_CONTROL: bool>(
    old: u32,
    src: u32,
) -> u32
🔬This is a nightly-only experimental API. (stdarch_amdgpu #149988)
Available on AMD GPU only.
Expand description

The update_dpp intrinsic represents the update.dpp operation in AMDGPU. It takes an old value, a source operand, a DPP control operand, a row mask, a bank mask, and a bound control. This operation is equivalent to a sequence of v_mov_b32 operations.

llvm.amdgcn.update.dpp.i32 <old> <src> <dpp_ctrl> <row_mask> <bank_mask> <bound_ctrl> Should be equivalent to:

v_mov_b32 <dest> <old>
v_mov_b32 <dest> <src> <dpp_ctrl> <row_mask> <bank_mask> <bound_ctrl>

This intrinsic does not behave like a normal function call; it is a “convergent” operation and as such has non-standard control-flow effects which need special treatment by the language. Rust currently does not properly support convergent operations. This operation is hence provided on a best-effort basis. Using it may result in incorrect code under some circumstances.