libstdc++: Add mem_order_hle_acquire/release to atomic.h v2
commitc7b2ff9a291bfe558fd7e4907b0482dde2dc1a97
authorak <ak@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 20 Jan 2013 19:03:22 +0000 (20 19:03 +0000)
committerak <ak@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 20 Jan 2013 19:03:22 +0000 (20 19:03 +0000)
tree0b2492617f97e63077e8a77faae69484cc2f7b75
parente7bca8d9856fd5a04ec3ef04b4a57d6a1c4aecd8
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@195321 138bc75d-0d04-0410-961f-82ee72b054a4
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]