• Home
  • Raw
  • Download

Lines Matching refs:atomic

20 The atomic instructions are designed specifically to provide readable IR and
23 * The new C++0x ``<atomic>`` header. (`C++0x draft available here
34 * Other scenarios with atomic semantics, including ``static`` variables with
42 pair of volatile stores. On the other hand, a non-volatile non-atomic load can
51 .. _Optimization outside atomic:
53 Optimization outside atomic
63 instructions with atomic ordering involved, concurrency does not matter, with
106 various atomic instructions. The exact guarantees provided depend on the
109 ``load atomic`` and ``store atomic`` provide the same basic functionality as
110 non-atomic loads and stores, but provide additional guarantees in situations
113 ``cmpxchg`` and ``atomicrmw`` are essentially like an atomic load followed by an
114 atomic store (where the store is conditional for ``cmpxchg``), but no other
123 Frontends generating atomic instructions generally need to be aware of the
124 target to some degree; atomic instructions are guaranteed to be lock-free, and
143 NotAtomic is the obvious, a load or store which is not atomic. (This isn't
159 atomic; do not try to use them as a substitute. (Per the C/C++ standards,
166 `Optimization outside atomic`_.
184 part of a special atomic structure or depend on a separate per-process global
185 lock. Note that code generation will fail for unsupported atomic operations; if
211 These operations are required to be atomic in the sense that if you use
234 either be used for atomic operations which do not protect other memory (like
235 an atomic counter), or along with a ``fence``.
240 it is legal to reorder non-atomic and Unordered loads around Monotonic
340 If a frontend is exposing atomic operations, these are much easier to reason
363 * ``isSimple()``: A load or store which is not volatile or atomic. This is
377 To support optimizing around atomic operations, make sure you are using the
379 optimize some atomic operations (Unordered operations in particular), make sure
380 it doesn't replace an atomic load or store with a non-atomic operation.
382 Some examples of how optimizations interact with various kinds of atomic
385 * ``memcpyopt``: An atomic operation cannot be optimized into part of a
387 across some atomic operations.
397 * Folding a load: Any atomic load from a constant global can be constant-folded,
399 atomic loads and stores.
405 On architectures which use barrier instructions for all atomic ordering (like
408 The MachineMemOperand for all atomic operations is currently marked as volatile;
414 atomic operations which can be represented in IR up to that size. Backends are
426 On x86, all atomic loads generate a ``MOV``. SequentiallyConsistent stores