llvm-6502/lib
JF Bastien 81338a4890 Mutate TargetLowering::shouldExpandAtomicRMWInIR to specifically dictate how AtomicRMWInsts are expanded.
Summary:
In PNaCl, most atomic instructions have their own @llvm.nacl.atomic.* function, each one, with a few exceptions, represents a consistent behaviour across all NaCl-supported targets. Unfortunately, the atomic RMW operations nand, [u]min, and [u]max aren't directly represented by any such @llvm.nacl.atomic.* function. This patch refines shouldExpandAtomicRMWInIR in TargetLowering so that a future `Le32TargetLowering` class can selectively inform the caller how the target desires the atomic RMW instruction to be expanded (ie via load-linked/store-conditional for ARM/AArch64, via cmpxchg for X86/others?, or not at all for Mips) if at all.

This does not represent a behavioural change and as such no tests were added.

Patch by: Richard Diamond.

Reviewers: jfb

Reviewed By: jfb

Subscribers: jfb, aemerson, t.p.northover, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231250 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-04 15:47:57 +00:00
..
Analysis Move TargetLibraryInfo data from two files into one common .def file. 2015-03-03 23:41:58 +00:00
AsmParser Workaround MSVC not providing implicit move members 2015-03-04 02:07:51 +00:00
Bitcode
CodeGen Mutate TargetLowering::shouldExpandAtomicRMWInIR to specifically dictate how AtomicRMWInsts are expanded. 2015-03-04 15:47:57 +00:00
DebugInfo [llvm-pdbdump] Display full enum definitions. 2015-03-04 06:09:53 +00:00
ExecutionEngine
Fuzzer [sanitizer/coverage] Add AFL-style coverage counters (search heuristic for fuzzing). 2015-03-03 23:27:02 +00:00
IR Remove 'llvm.x86.avx2.vbroadcasti128' intrinsic. 2015-03-04 00:13:25 +00:00
IRReader
LineEditor
Linker Restore LLVMLinkModules C API until it is properly deprecated. 2015-03-02 18:59:38 +00:00
LTO
MC [MC][Target] Implement support for R_X86_64_SIZE{32,64}. 2015-03-04 06:49:39 +00:00
Object Use read{16,32,64}{le,be}() instead of *reinterpret_cast<u{little,big}{16,32,64}_t>(). 2015-03-02 21:19:12 +00:00
Option Remove explicit no-op dtor in favor of the implicit dtor so as not to disable/deprecate the copy operations. 2015-03-03 19:53:02 +00:00
ProfileData
Support Make Triple::getOSVersion make sense for Android. 2015-03-03 18:23:51 +00:00
TableGen
Target Mutate TargetLowering::shouldExpandAtomicRMWInIR to specifically dictate how AtomicRMWInsts are expanded. 2015-03-04 15:47:57 +00:00
Transforms asan: do not instrument direct inbounds accesses to stack variables 2015-03-04 13:27:53 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile