Lines Matching refs:cmpxchg
109 ``cmpxchg`` and ``atomicrmw`` are essentially like an atomic load followed by an
110 atomic store (where the store is conditional for ``cmpxchg``), but no other
245 stores. No fences are required. ``cmpxchg`` and ``atomicrmw`` are required
422 When the target implements atomic ``cmpxchg`` or LL/SC instructions (as most do)
425 are atomic load and store instructions, but no ``cmpxchg`` or LL/SC. As it is
427 ``cmpxchg`` using a library call to a function that uses a mutex, ``atomic
429 can remain atomic with regards to a simultaneous ``cmpxchg``, by using the same
439 generated. ``cmpxchg`` uses the ``LOCK CMPXCHG`` instruction. ``atomicrmw xchg``
447 operation. Loads and stores generate normal instructions. ``cmpxchg`` and
455 * cmpxchg -> loop with load-linked/store-conditional
458 * large loads/stores -> ll-sc/cmpxchg
463 * atomic rmw -> loop with cmpxchg or load-linked/store-conditional
466 * part-word atomicrmw/cmpxchg -> target-specific intrinsic by overriding
473 AtomicExpandPass supports two strategies for lowering atomicrmw/cmpxchg to
481 AtomicExpandPass can help support lowering of part-word atomicrmw or cmpxchg