• Slang Standard Library Reference
    • Interfaces
    • Types
      • Buffer types
        • AppendStructuredBuffer
        • ByteAddressBuffer
        • ConsumeStructuredBuffer
        • RWByteAddressBuffer
          • GetDimensions
          • InterlockedAdd
          • InterlockedAdd64
          • InterlockedAddF16
          • InterlockedAddF16Emulated
          • InterlockedAddF32
          • InterlockedAddI64
          • InterlockedAddU64
          • InterlockedAnd
          • InterlockedAnd64
          • InterlockedAndU64
          • InterlockedCompareExchange
          • InterlockedCompareExchange64
          • InterlockedCompareExchangeFloatBitwise
          • InterlockedCompareExchangeU64
          • InterlockedCompareStore
          • InterlockedCompareStore64
          • InterlockedCompareStoreFloatBitwise
          • InterlockedExchange
          • InterlockedExchange64
          • InterlockedExchangeFloat
          • InterlockedExchangeU64
          • InterlockedMax
          • InterlockedMax64
          • InterlockedMaxU64
          • InterlockedMin
          • InterlockedMin64
          • InterlockedMinU64
          • InterlockedOr
          • InterlockedOr64
          • InterlockedOrU64
          • InterlockedXor
          • InterlockedXor64
          • InterlockedXorU64
          • Load
          • Load2
          • Load2Aligned
          • Load3
          • Load3Aligned
          • Load4
          • Load4Aligned
          • LoadAligned
          • Store
          • Store2
          • Store2Aligned
          • Store3
          • Store3Aligned
          • Store4
          • Store4Aligned
          • StoreAligned
          • _NvInterlockedAddFp16x2
        • RWStructuredBuffer
        • RasterizerOrderedByteAddressBuffer
        • RasterizerOrderedStructuredBuffer
        • StructuredBuffer
      • Math types
      • Miscelaneous types
      • Ray-tracing
      • Sampler types
      • Scalar types
      • Stage IO types
      • Texture types
      • Array
      • Atomic
      • ConstantBuffer
      • DifferentialPair
      • DifferentialPtrPair
      • Optional
      • ParameterBlock
      • Ptr
      • String
      • Tuple
      • _AttributeTargets
    • Attributes
    • Global Declarations

RWByteAddressBuffer.InterlockedCompareExchange

Description

Perform a 32-bit integer atomic compare-and-exchange operation at the specified byte address within the RWByteAddressBuffer.

Signature

void RWByteAddressBuffer.InterlockedCompareExchange(
    uint dest,
    uint compare_value,
    uint value,
    out uint original_value);

Parameters

dest : uint

The address at which to perform the atomic compare-and-exchange operation.

compare_value : uint

The value to perform bitwise comparison to the value at byteAddress.

value : uint

The value to store at byteAddress if the comparison is successful.

original_value : uint

The original value at byteAddress before the compare-and-exchange operation.

Remarks

For SPIR-V, this function maps to OpAtomicCompareExchange. For HLSL, this function translates to InterlockedCompareExchange. For CUDA, this function maps to atomicCAS.

Availability and Requirements

Defined for the following targets:

hlsl

Available in all stages.

glsl

Available in all stages.

cuda

Available in all stages.

metal

Available in all stages.

spirv

Available in all stages.