1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 12:33:33 +02:00
llvm-mirror/include/llvm/CodeGen
Rafael Espindola b04bc032f0 This reverts commit r266002, r266011 and r266016.
They broke the msan bot.

Original message:

Add __atomic_* lowering to AtomicExpandPass.

AtomicExpandPass can now lower atomic load, atomic store, atomicrmw,and
cmpxchg instructions to __atomic_* library calls, when the target
doesn't support atomics of a given size.

This is the first step towards moving all atomic lowering from clang
into llvm. When all is done, the behavior of __sync_* builtins,
__atomic_* builtins, and C11 atomics will be unified.

Previously LLVM would pass everything through to the ISelLowering
code. There, unsupported atomic instructions would turn into __sync_*
library calls. Because of that behavior, Clang currently avoids emitting
llvm IR atomic instructions when this would happen, and emits __atomic_*
library functions itself, in the frontend.

This change makes LLVM able to emit __atomic_* libcalls, and thus will
eventually allow clang to depend on LLVM to do the right thing.

It is advantageous to do the new lowering to atomic libcalls in
AtomicExpandPass, before ISel time, because it's important that all
atomic operations for a given size either lower to __atomic_*
libcalls (which may use locks), or native instructions which won't. No
mixing and matching.

At the moment, this code is enabled only for SPARC, as a
demonstration. The next commit will expand support to all of the other
targets.

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

llvm-svn: 266062
2016-04-12 12:30:25 +00:00
..
GlobalISel [RegBankSelect] Teach how to repair definitions. 2016-04-12 00:12:59 +00:00
MIRParser Re-commit r247216: "Fix Clang-tidy misc-use-override warnings, other minor fixes" 2015-09-10 16:49:58 +00:00
PBQP
Analysis.h [WinEH] Permit branch folding in the face of funclets 2015-10-04 02:22:52 +00:00
AsmPrinter.h [IFUNC] Use GlobalIndirectSymbol when aliases and ifuncs have something similar 2016-04-05 08:47:51 +00:00
AtomicExpandUtils.h Refactor AtomicExpand::expandAtomicRMWToCmpXchg into a standalone function. 2015-08-03 15:29:47 +00:00
BasicTTIImpl.h [TTI] Let the cost model estimate ctpop costs based on legality 2016-03-31 10:42:40 +00:00
CalcSpillWeights.h Trace copies when checking for rematerializability in spill weight calculation 2015-08-10 11:59:44 +00:00
CallingConvLower.h CodeGen: Factor out code for tail call result compatibility check; NFC 2016-03-30 22:46:04 +00:00
CommandFlags.h Implemented stack symbol table ordering/packing optimization to improve data locality and code size from SP/FP offset encoding. 2016-02-15 23:44:13 +00:00
DAGCombine.h
DFAPacketizer.h Add DAG mutation interface to the DFA packetizer 2016-03-08 15:33:51 +00:00
DIE.h DwarfDebug: emit type units immediately. 2016-02-11 19:57:46 +00:00
DIEValue.def DwarfDebug: emit type units immediately. 2016-02-11 19:57:46 +00:00
DwarfStringPoolEntry.h
EdgeBundles.h
FastISel.h Swift Calling Convention: add swifterror attribute. 2016-04-01 21:41:15 +00:00
FaultMaps.h Revert "[FaultMaps] Move FaultMapParser to Object/" 2015-06-23 20:09:03 +00:00
FunctionLoweringInfo.h Swift Calling Convention: swifterror target-independent change. 2016-04-05 18:13:16 +00:00
GCMetadata.h Prune trailing whitespaces in comment lines. 2015-10-05 04:43:57 +00:00
GCMetadataPrinter.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
GCs.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
GCStrategy.h [GC] Make GCStrategy::isGCManagedPointer a type predicate not a value predicate [NFC] 2015-12-23 01:42:15 +00:00
IntrinsicLowering.h Reformat 3 files in llvm/include/llvm/CodeGen/. 2015-10-05 04:44:18 +00:00
ISDOpcodes.h Revert r248483, r242546, r242545, and r242409 - absdiff intrinsics 2015-12-11 23:11:52 +00:00
LatencyPriorityQueue.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LexicalScopes.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LinkAllAsmWriterComponents.h
LinkAllCodegenComponents.h
LiveInterval.h CodeGen: Tune the SmallVector size in LiveRange 2016-03-04 00:58:39 +00:00
LiveIntervalAnalysis.h CodeGen: Update LiveIntervalAnalysis API to use MachineInstr&, NFC 2016-02-27 20:14:29 +00:00
LiveIntervalUnion.h RAGreedy: Keep track of allocated PhysRegs internally 2015-07-14 17:38:17 +00:00
LivePhysRegs.h LivePhysRegs: removeReg() must remove aliased registers 2016-04-06 02:46:35 +00:00
LiveRangeEdit.h Revert r265547 "Recommit r265309 after fixed an invalid memory reference bug happened" 2016-04-08 15:17:43 +00:00
LiveRegMatrix.h MachineRegisterInfo: Remove UsedPhysReg infrastructure 2015-07-14 17:52:07 +00:00
LiveStackAnalysis.h Reformat 3 files in llvm/include/llvm/CodeGen/. 2015-10-05 04:44:18 +00:00
LiveVariables.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineBasicBlock.h CodeGen: Take MachineInstr& in SlotIndexes and LiveIntervals, NFC 2016-02-27 06:40:41 +00:00
MachineBlockFrequencyInfo.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineBranchProbabilityInfo.h Use getEdgeProbability() instead of getEdgeWeight() in BFI and remove getEdgeWeight() interfaces from MBPI. 2015-12-18 21:53:24 +00:00
MachineCombinerPattern.h replace MachineCombinerPattern namespace and enum with enum class; NFCI 2015-11-05 19:34:57 +00:00
MachineConstantPool.h Drop prelink support. 2015-11-17 00:51:23 +00:00
MachineDominanceFrontier.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineDominators.h NFC. 2015-08-07 18:04:17 +00:00
MachineFrameInfo.h Use member initializers for all scalar fields of MachineFrameInfo to save boilerplate 2016-04-11 17:54:16 +00:00
MachineFunction.h Replace MachineRegisterInfo::TracksLiveness with a MachineFunctionProperty 2016-04-11 23:32:13 +00:00
MachineFunctionAnalysis.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineFunctionInitializer.h
MachineFunctionPass.h Introduce MachineFunctionProperties and the AllVRegsAllocated property 2016-03-28 17:05:30 +00:00
MachineInstr.h [MachineInstr] Get rid of some GlobalISel ifdefs. 2016-03-07 22:47:23 +00:00
MachineInstrBuilder.h CodeGen: Change MachineInstr to use MachineInstr&, NFC 2016-02-27 20:01:33 +00:00
MachineInstrBundle.h WIP: CodeGen: Use MachineInstr& in MachineInstrBundle.h, NFC 2016-02-27 17:05:33 +00:00
MachineInstrBundleIterator.h CodeGen: Bring back MachineBasicBlock::iterator::getInstrIterator()... 2016-02-22 21:30:15 +00:00
MachineJumpTableInfo.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineLoopInfo.h fix documentation comments; NFC 2016-04-08 21:42:43 +00:00
MachineMemOperand.h PseudoSourceValue: Replace global manager with a manager in a machine function. 2015-08-11 23:09:45 +00:00
MachineModuleInfo.h [ptr-traits] Add a bunch of includes to provide complete types that are 2015-12-29 09:06:21 +00:00
MachineModuleInfoImpls.h Reformat 3 files in llvm/include/llvm/CodeGen/. 2015-10-05 04:44:18 +00:00
MachineOperand.h CodeGen: Push the ModuleSlotTracker through MachineOperands 2015-06-26 22:06:47 +00:00
MachinePassRegistry.h
MachinePostDominators.h
MachineRegionInfo.h Remove macro guards for extern template instantiations. 2015-07-13 17:21:31 +00:00
MachineRegisterInfo.h Replace MachineRegisterInfo::TracksLiveness with a MachineFunctionProperty 2016-04-11 23:32:13 +00:00
MachineScheduler.h Add DAG mutation interface to the post-RA scheduler 2016-03-05 15:45:23 +00:00
MachineSSAUpdater.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineTraceMetrics.h Reapply "CodeGen: Use references in MachineTraceMetrics::Trace, NFC" 2016-02-22 03:33:28 +00:00
MachineValueType.h Add isScalarInteger helper to EVT/MVT 2016-03-01 18:01:28 +00:00
MachORelocation.h
MIRYamlMapping.h Introduce MachineFunctionProperties and the AllVRegsAllocated property 2016-03-28 17:05:30 +00:00
ParallelCG.h [gold] Save bitcode for module partitions (save-temps + split codegen). 2016-04-06 18:32:13 +00:00
Passes.h [GlobalISel] Add RegBankSelect hooks into the pass pipeline. 2016-04-07 20:27:33 +00:00
PBQPRAConstraint.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
PseudoSourceValue.h [ScheduleDAGInstrs::buildSchedGraph()] Handling of memory dependecies rewritten. 2016-02-03 17:52:29 +00:00
RegAllocPBQP.h Fix some comment typos. 2015-08-08 18:27:36 +00:00
RegAllocRegistry.h Reformat partially. 2015-10-05 04:46:30 +00:00
RegisterClassInfo.h
RegisterPressure.h MachineScheduler: Allow independent scheduling of sub register defs 2016-01-20 00:23:32 +00:00
RegisterScavenging.h RegisterScavenger: Take a reference as enterBasicBlock() argument. 2016-04-06 02:47:09 +00:00
ResourcePriorityQueue.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
RuntimeLibcalls.h This reverts commit r266002, r266011 and r266016. 2016-04-12 12:30:25 +00:00
ScheduleDAG.h [ScheduleDAGInstrs::buildSchedGraph()] Handling of memory dependecies rewritten. 2016-02-03 17:52:29 +00:00
ScheduleDAGInstrs.h [ScheduleDAGInstrs::buildSchedGraph()] Handling of memory dependecies rewritten. 2016-02-03 17:52:29 +00:00
ScheduleDAGMutation.h Add DAG mutation interface to the post-RA scheduler 2016-03-05 15:45:23 +00:00
ScheduleDFS.h
ScheduleHazardRecognizer.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
SchedulerRegistry.h Move the Target way of overriding DAG Scheduler to a target hook 2015-07-28 06:18:04 +00:00
ScoreboardHazardRecognizer.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
SelectionDAG.h Prevent X86ISelLowering from merging volatile loads 2016-03-31 13:40:55 +00:00
SelectionDAGISel.h [CodeGen] Add space-optimized EmitMergeInputChains1_2 to the DAG isel matching tables. Shaves about 5100 bytes from the X86 matcher table. NFC 2016-03-07 07:29:12 +00:00
SelectionDAGNodes.h [x86] use BMI 'andn' for logic + compare ops 2016-04-09 16:02:52 +00:00
SelectionDAGTargetInfo.h Rename TargetSelectionDAGInfo into SelectionDAGTargetInfo and move it to CodeGen/ 2016-01-27 16:32:26 +00:00
SlotIndexes.h WIP: CodeGen: Use MachineInstr& in MachineInstrBundle.h, NFC 2016-02-27 17:05:33 +00:00
StackMaps.h [ptr-traits] Add a bunch of includes to provide complete types that are 2015-12-29 09:06:21 +00:00
StackProtector.h [SSP] Remove llvm.stackprotectorcheck. 2016-04-08 21:26:31 +00:00
TailDuplicator.h Codegen: Factor tail duplication into a utility class. NFC 2016-04-08 20:35:01 +00:00
TargetLoweringObjectFileImpl.h [X86] Use the correct alignment for COMDAT constant pool entries 2016-02-21 01:30:30 +00:00
TargetSchedule.h [MachineCombiner] Work with itineraries 2015-07-15 08:22:23 +00:00
ValueTypes.h [CodeGen] Mark EVT:getExtendedSizeInBits() as LLVM_READONLY. 2016-03-30 05:26:43 +00:00
ValueTypes.td Fix some typos; NFC 2016-03-18 14:08:42 +00:00
VirtRegMap.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
WinEHFuncInfo.h Make more headers self-contained. 2016-01-27 18:03:37 +00:00