diff options
author | Ahmed Bougacha <ahmed.bougacha@gmail.com> | 2015-09-22 17:21:44 +0000 |
---|---|---|
committer | Ahmed Bougacha <ahmed.bougacha@gmail.com> | 2015-09-22 17:21:44 +0000 |
commit | 07a844d758f09e1dd07ca17eb38a22d69d63fae3 (patch) | |
tree | 4b7b38a24d18b1e32cd081cc7880fd62b6fc7cef /clang/lib/Tooling/JSONCompilationDatabase.cpp | |
parent | d13c4fb7f202dc19e8c127428ddfe941f944b729 (diff) | |
download | bcm5719-llvm-07a844d758f09e1dd07ca17eb38a22d69d63fae3.tar.gz bcm5719-llvm-07a844d758f09e1dd07ca17eb38a22d69d63fae3.zip |
[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
Diffstat (limited to 'clang/lib/Tooling/JSONCompilationDatabase.cpp')
0 files changed, 0 insertions, 0 deletions