diff options
author | Ahmed Bougacha <ahmed.bougacha@gmail.com> | 2015-09-22 17:22:58 +0000 |
---|---|---|
committer | Ahmed Bougacha <ahmed.bougacha@gmail.com> | 2015-09-22 17:22:58 +0000 |
commit | 81616a72ea53175f23931b34a1372c7cafb80736 (patch) | |
tree | 8e4e0e45e555e958d9aa3f8b78c21d07031cae37 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | c3fa25def7618c052f68539aa0737bd4a5d70039 (diff) | |
download | bcm5719-llvm-81616a72ea53175f23931b34a1372c7cafb80736.tar.gz bcm5719-llvm-81616a72ea53175f23931b34a1372c7cafb80736.zip |
[ARM] Emit clrex in the expanded cmpxchg fail block.
ARM counterpart to r248291:
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: 248294
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions