Go to file
Ahmed Bougacha 07a844d758 [AArch64] Emit clrex in the expanded cmpxchg fail block.
In the comparison failure block of a cmpxchg expansion, the initial
ldrex/ldxr will not be followed by a matching strex/stxr.
On ARM/AArch64, this unnecessarily ties up the execution monitor,
which might have a negative performance impact on some uarchs.

Instead, release the monitor in the failure block.
The clrex instruction was designed for this: use it.

Also see ARMARM v8-A B2.10.2:
"Exclusive access instructions and Shareable memory locations".

Differential Revision: http://reviews.llvm.org/D13033

llvm-svn: 248291
2015-09-22 17:21:44 +00:00
clang Remove unused diagnostic. NFC. 2015-09-22 14:34:59 +00:00
clang-tools-extra misc-unused-parameter: Ignore lambda static invokers. 2015-09-22 09:20:20 +00:00
compiler-rt Disable final MSAN test in AArch64 to get the bots green 2015-09-18 18:02:55 +00:00
debuginfo-tests New round of fixes for "Always compile debuginfo-tests for the host triple" 2014-10-18 23:47:59 +00:00
libclc Add sampler defines. 2015-09-21 14:59:58 +00:00
libcxx Fix <atomic> with -pedantic-errors 2015-09-22 03:15:35 +00:00
libcxxabi Let cxa_demangle.cpp compile with gcc/libstdc++ 4.8 and clang-cl/MSVC2013's STL. 2015-09-20 18:10:46 +00:00
libunwind unwind: cleanup -Wunused-parameter 2015-09-01 04:29:03 +00:00
lld Use a signed value for Delta. 2015-09-22 17:08:25 +00:00
lldb Allow TAB key to switch first responder when tests are running or completed. 2015-09-22 17:18:15 +00:00
llgo [llgo] drop debug/DIBuilder.Declare 2015-09-01 11:52:37 +00:00
llvm [AArch64] Emit clrex in the expanded cmpxchg fail block. 2015-09-22 17:21:44 +00:00
openmp OpenMP Initial testsuite change to purely llvm-lit based testing 2015-09-21 20:41:31 +00:00
polly Make MIN_LOOP_TRIP_COUNT a static constant 2015-09-21 19:10:11 +00:00