//! Frozen atomic-operation discriminants for backend intrinsic metadata.
/// Atomic operation kind in the frozen data contract.
///
/// Stability: frozen as of v0.4.0-alpha.2. Downstream matches must include a
/// fallback arm so the data contract can grow without breaking SemVer.
/// Example: `AtomicOp::CompareExchange` identifies a compare-and-exchange
/// primitive without binding it to one backend's spelling.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, serde::Deserialize, serde::Serialize)]
pub enum AtomicOp {
/// Atomic add.
Add,
/// Atomic bitwise OR.
Or,
/// Atomic bitwise AND.
And,
/// Atomic bitwise XOR.
Xor,
/// Atomic minimum.
Min,
/// Atomic maximum.
Max,
/// Atomic exchange.
Exchange,
/// Atomic compare-and-exchange.
CompareExchange,
}