Function spirv_std::arch::subgroup_quad_swap

source ·
pub unsafe fn subgroup_quad_swap<const DIRECTION: u32, T: VectorOrScalar>(
    value: T
) -> T
Expand description

Swap the Value of the invocation within the quad with another invocation in the quad using Direction.

Result Type must be a scalar or vector of floating-point type, integer type, or Boolean type.

Execution is a Scope, but has no effect on the behavior of this instruction. It must be Subgroup.

The type of Value must be the same as Result Type.

Direction is the kind of swap to perform.

Direction must be a scalar of integer type, whose Signedness operand is 0.

Direction must come from a constant instruction.

The value returned in Result is the value provided to Value by another invocation in the same quad scope instance. The invocation providing this value is determined according to Direction.

A Direction of 0 indicates a horizontal swap;

  • Invocations with quad indices of 0 and 1 swap values
  • Invocations with quad indices of 2 and 3 swap values A Direction of 1 indicates a vertical swap;
  • Invocations with quad indices of 0 and 2 swap values
  • Invocations with quad indices of 1 and 3 swap values A Direction of 2 indicates a diagonal swap;
  • Invocations with quad indices of 0 and 3 swap values
  • Invocations with quad indices of 1 and 2 swap values

Direction must be one of the above values.

If an active invocation reads Value from an inactive invocation, the resulting value is undefined.

Requires Capability GroupNonUniformQuad.