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.