llvm-6502/lib/Target/AArch64
Robin Morisset 1ad925ccf8 Refactor AtomicExpandPass and add a generic isAtomic() method to Instruction
Summary:
Split shouldExpandAtomicInIR() into different versions for Stores/Loads/RMWs/CmpXchgs.
Makes runOnFunction cleaner (no more redundant checking/casting), and will help moving
the X86 backend to this pass.

This requires a way of easily detecting which instructions are atomic.
I followed the pattern of mayReadFromMemory, mayWriteOrReadMemory, etc.. in making
isAtomic() a method of Instruction implemented by a switch on the opcodes.

Test Plan: make check

Reviewers: jfb

Subscribers: mcrosier, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217080 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-03 21:29:59 +00:00
..
AsmParser Make isValidMCLOHType take unsigned instead of enum to avoid loading invalid enum values 2014-08-29 22:34:28 +00:00
Disassembler Fix left shifts of negative integers in AArch64 InstPrinter/Disassembler 2014-09-02 16:19:41 +00:00
InstPrinter Add override to overriden virtual methods, remove virtual keywords. 2014-09-03 11:41:21 +00:00
MCTargetDesc
TargetInfo
Utils
AArch64.h
AArch64.td
AArch64A57FPLoadBalancing.cpp [AArch64] FPLoadBalancing: move ownership of the chain to its current accumulator register 2014-08-29 09:54:11 +00:00
AArch64AddressTypePromotion.cpp
AArch64AdvSIMDScalarPass.cpp
AArch64AsmPrinter.cpp Delete unused argument in AArch64MCInstLower constructor: it doesn't 2014-08-19 21:51:08 +00:00
AArch64BranchRelaxation.cpp
AArch64CallingConvention.td Teach the AArch64 backend about v4f16 and v8f16 2014-08-27 16:16:04 +00:00
AArch64CleanupLocalDynamicTLSPass.cpp
AArch64CollectLOH.cpp AArch64: use std::fill instead of memset 2014-08-26 03:33:26 +00:00
AArch64ConditionalCompares.cpp Change MCSchedModel to be a struct of statically initialized data. 2014-09-02 17:43:54 +00:00
AArch64DeadRegisterDefinitionsPass.cpp Remove 'virtual' keyword from methods markedwith 'override' keyword. 2014-08-30 16:48:34 +00:00
AArch64ExpandPseudoInsts.cpp
AArch64FastISel.cpp [FastISel][tblgen] Rename tblgen generated FastISel functions. NFC. 2014-09-03 20:56:59 +00:00
AArch64FrameLowering.cpp
AArch64FrameLowering.h
AArch64InstrAtomics.td Make use of isAtLeastRelease/Acquire in the ARM/AArch64 backends 2014-08-18 16:48:58 +00:00
AArch64InstrFormats.td Teach the AArch64 backend about v4f16 and v8f16 2014-08-27 16:16:04 +00:00
AArch64InstrInfo.cpp Remove unnecessary getTarget call now that the subtarget is cached 2014-09-03 20:36:26 +00:00
AArch64InstrInfo.h Add override to overriden virtual methods, remove virtual keywords. 2014-09-03 11:41:21 +00:00
AArch64InstrInfo.td [AArch64] Fix some failures exposed by value type v4f16 and v8f16. 2014-08-29 01:31:42 +00:00
AArch64ISelDAGToDAG.cpp Merge Extend and Shift into a UBFX 2014-09-02 09:33:56 +00:00
AArch64ISelLowering.cpp Refactor AtomicExpandPass and add a generic isAtomic() method to Instruction 2014-09-03 21:29:59 +00:00
AArch64ISelLowering.h Refactor AtomicExpandPass and add a generic isAtomic() method to Instruction 2014-09-03 21:29:59 +00:00
AArch64LoadStoreOptimizer.cpp
AArch64MachineCombinerPattern.h
AArch64MachineFunctionInfo.h
AArch64MCInstLower.cpp Delete unused argument in AArch64MCInstLower constructor: it doesn't 2014-08-19 21:51:08 +00:00
AArch64MCInstLower.h Delete unused argument in AArch64MCInstLower constructor: it doesn't 2014-08-19 21:51:08 +00:00
AArch64PerfectShuffle.h
AArch64PromoteConstant.cpp
AArch64RegisterInfo.cpp
AArch64RegisterInfo.h
AArch64RegisterInfo.td Teach the AArch64 backend about v4f16 and v8f16 2014-08-27 16:16:04 +00:00
AArch64SchedA53.td
AArch64SchedA57.td
AArch64SchedA57WriteRes.td
AArch64SchedCyclone.td
AArch64Schedule.td
AArch64SelectionDAGInfo.cpp
AArch64SelectionDAGInfo.h
AArch64StorePairSuppress.cpp Change MCSchedModel to be a struct of statically initialized data. 2014-09-02 17:43:54 +00:00
AArch64Subtarget.cpp
AArch64Subtarget.h
AArch64TargetMachine.cpp Rename AtomicExpandLoadLinked into AtomicExpand 2014-08-21 21:50:01 +00:00
AArch64TargetMachine.h
AArch64TargetObjectFile.cpp
AArch64TargetObjectFile.h
AArch64TargetTransformInfo.cpp Allow vectorization of division by uniform power of 2. 2014-08-25 04:56:54 +00:00
CMakeLists.txt Reinstate "Nuke the old JIT." 2014-09-02 22:28:02 +00:00
LLVMBuild.txt
Makefile