Add ATOMIC_LDR* pseudo-instructions to model atomic_load on ARM.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Mon, 27 Aug 2012 23:58:52 +0000 (23:58 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Mon, 27 Aug 2012 23:58:52 +0000 (23:58 +0000)
commitdd364419ee64cd5bb234af006ce0cb285e4a84ca
tree39b3a87aca20346bf316390cb68c42812ce683ab
parent94a935f072452d00207b1e8c1da75c31bb2a5f9b
Add ATOMIC_LDR* pseudo-instructions to model atomic_load on ARM.

It is not safe to use normal LDR instructions because they may be
reordered by the scheduler. The ATOMIC_LDR pseudos have a mayStore flag
that prevents reordering.

Atomic loads are also prevented from participating in rematerialization
and load folding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162713 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/ARMBaseInstrInfo.cpp
lib/Target/ARM/ARMBaseRegisterInfo.cpp
lib/Target/ARM/ARMInstrInfo.td
lib/Target/ARM/ARMInstrThumb.td
lib/Target/ARM/ARMInstrThumb2.td
lib/Target/ARM/Thumb2SizeReduction.cpp