@atomicRmw

@atomicRmw

@atomicRmw(comptime T: type, ptr: *T, comptime op: builtin.AtomicRmwOp, operand: T, comptime ordering: builtin.AtomicOrder) T

This builtin function atomically modifies memory and then returns the previous value.

T must be a pointer, a bool, a float, an integer or an enum.

Supported operations:

  • .Xchg - stores the operand unmodified. Supports enums, integers and floats.
  • .Add - for integers, twos complement wraparound addition. Also supports Floats.
  • .Sub - for integers, twos complement wraparound subtraction. Also supports Floats.
  • .And - bitwise and
  • .Nand - bitwise nand
  • .Or - bitwise or
  • .Xor - bitwise xor
  • .Max - stores the operand if it is larger. Supports integers and floats.
  • .Min - stores the operand if it is smaller. Supports integers and floats.