libstdc++: Add mem_order_hle_acquire/release to atomic.h v2
authorAndi Kleen <ak@linux.intel.com>
Sun, 20 Jan 2013 19:03:22 +0000 (19:03 +0000)
committerAndi Kleen <ak@gcc.gnu.org>
Sun, 20 Jan 2013 19:03:22 +0000 (19:03 +0000)
commitd76b6ea41791f792e202cde0eb5227cd1de80201
tree0b2492617f97e63077e8a77faae69484cc2f7b75
parentfe6035536ae0297dc80c38b679042265f4810286
libstdc++: Add mem_order_hle_acquire/release to atomic.h v2

The underlying compiler supports additional __ATOMIC_HLE_ACQUIRE/RELEASE
memmodel flags for TSX, but this was not exposed to the C++ wrapper.
Handle it there.

These are additional flags, so some of assert checks need to mask
off the flags before checking the memory model type.

libstdc++-v3/:
2013-01-12  Andi Kleen  <ak@linux.intel.com>
    Jonathan Wakely  <jwakely.gcc@gmail.com>

        PR libstdc++/55223
* include/bits/atomic_base.h (__memory_order_modifier): Add
__memory_order_mask, __memory_order_modifier_mask,
__memory_order_hle_acquire, __memory_order_hle_release.
(operator|,operator&): Add.
(__cmpexch_failure_order):  Rename to __cmpexch_failure_order2.
(__cmpexch_failure_order): Add.
(clear, store, load, compare_exchange_weak, compare_exchange_strong):
Handle flags.
* testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc:
Add.

Co-Authored-By: Jonathan Wakely <jwakely.gcc@gmail.com>
From-SVN: r195321
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/atomic_base.h
libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc [new file with mode: 0644]