helion.language.atomic_cas

helion.language.atomic_cas(target, index, expected, value, sem='relaxed')[source]

Atomically compare-and-swap a value at target[index].

If the current value equals expected, writes value. Otherwise leaves memory unchanged.

Parameters:
  • target (Tensor) – Tensor to update.

  • index (list[object]) – Indices selecting elements to update. Can include tiles.

  • expected (Tensor | float | bool) – Expected current value(s) used for comparison.

  • value (Tensor | float | bool) – New value(s) to write if comparison succeeds.

  • sem (str) – Memory ordering semantics. One of "relaxed", "acquire", "release", "acq_rel". Defaults to "relaxed".

Returns:

The previous value(s) stored at target[index] before the compare-and-swap.

Return type:

torch.Tensor

Note

Triton CAS doesn’t support a masked form; our generated code uses an unmasked CAS and relies on index masking to avoid OOB.