summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorAhmed Bougacha <ahmed.bougacha@gmail.com>2015-09-22 17:22:58 +0000
committerAhmed Bougacha <ahmed.bougacha@gmail.com>2015-09-22 17:22:58 +0000
commit81616a72ea53175f23931b34a1372c7cafb80736 (patch)
tree8e4e0e45e555e958d9aa3f8b78c21d07031cae37 /clang/lib/Frontend/CompilerInvocation.cpp
parentc3fa25def7618c052f68539aa0737bd4a5d70039 (diff)
downloadbcm5719-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
OpenPOWER on IntegriCloud