llvm-6502/include/llvm/CodeGen
Jingyue Wu 5733100450 Divergence analysis for GPU programs
Summary:
Some optimizations such as jump threading and loop unswitching can negatively
affect performance when applied to divergent branches. The divergence analysis
added in this patch conservatively estimates which branches in a GPU program
can diverge. This information can then help LLVM to run certain optimizations
selectively.

Test Plan: test/Analysis/DivergenceAnalysis/NVPTX/diverge.ll

Reviewers: resistor, hfinkel, eliben, meheff, jholewinski

Subscribers: broune, bjarke.roune, madhur13490, tstellarAMD, dberlin, echristo, jholewinski, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234567 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-10 05:03:50 +00:00
..
PBQP [PBQP] NDEBUG guards added around code needed for assert. 2015-02-17 07:45:06 +00:00
Analysis.h Fold a loop for array processing in ComputeLinearIndex 2015-01-14 05:33:01 +00:00
AsmPrinter.h Change getISAEncoding to use the target triple to determine 2015-03-21 03:13:01 +00:00
BasicTTIImpl.h Divergence analysis for GPU programs 2015-04-10 05:03:50 +00:00
CalcSpillWeights.h [PBQP] Tweak spill costs and coalescing benefits 2014-11-04 20:51:24 +00:00
CallingConvLower.h ARM: treat [N x i32] and [N x i64] as AAPCS composite types 2015-02-24 17:22:34 +00:00
CommandFlags.h Add r228980 back. 2015-02-17 20:48:01 +00:00
DAGCombine.h
DFAPacketizer.h Remove the TargetMachine from DFAPacketizer since it was only 2014-10-14 01:03:16 +00:00
DIE.h Add DIEInteger::setValue() method. 2015-03-06 23:22:46 +00:00
EdgeBundles.h [modules] "Specialize" a function by actually specializing a function template 2014-04-24 18:27:29 +00:00
FastISel.h [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
FunctionLoweringInfo.h Remove dead code for llvm.eh.selector in the old EH model 2015-01-14 18:49:39 +00:00
GCMetadata.h Revert GCStrategy ownership changes 2015-01-26 18:26:35 +00:00
GCMetadataPrinter.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
GCs.h clang-format all the GC related files (NFC) 2015-01-16 23:16:12 +00:00
GCStrategy.h [gcroot] Remove unused items from an enum 2015-04-02 05:02:16 +00:00
IntrinsicLowering.h
ISDOpcodes.h Reverted 230471 - gather scatter handling in table gen. 2015-03-01 08:23:41 +00:00
LatencyPriorityQueue.h Remove LatencyPriorityQueue::dump because it relies on an implicit copy ctor which is deprecated in C++11 (due to the presence of a user-declare dtor in the base class) 2015-03-03 21:16:56 +00:00
LexicalScopes.h DebugLoc: Remove getFromDILexicalBlock() 2015-03-30 23:47:26 +00:00
LinkAllAsmWriterComponents.h
LinkAllCodegenComponents.h Introduce an example statepoint GC strategy 2015-01-07 19:07:50 +00:00
LiveInterval.h Recommit r231168: unique_ptrify LiveRange::segmentSet 2015-03-04 01:20:33 +00:00
LiveIntervalAnalysis.h [LiveIntervalAnalysis] Speed up creation of live ranges for physical registers 2015-02-06 18:42:41 +00:00
LiveIntervalUnion.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
LivePhysRegs.h Fix uses of reserved identifiers starting with an underscore followed by an uppercase letter 2015-03-16 18:06:57 +00:00
LiveRangeEdit.h Remove unnecessary getTarget call now that the subtarget is cached 2014-09-03 20:36:26 +00:00
LiveRegMatrix.h
LiveStackAnalysis.h Recommit r231175: Change LiveStackAnalysis::SS2IntervalMap from std::map to std::unordered_map 2015-03-04 01:15:53 +00:00
LiveVariables.h CodeGen/LiveVariables: hoist out code in nested loops 2014-08-25 01:59:49 +00:00
MachineBasicBlock.h CodeGen: assert an instruction is being inserted with the correct iterator. 2014-11-14 00:34:59 +00:00
MachineBlockFrequencyInfo.h
MachineBranchProbabilityInfo.h
MachineCombinerPattern.h MachineCombiner Pass for selecting faster instruction 2014-08-03 21:35:39 +00:00
MachineConstantPool.h CodeGen: Add a getSectionKind method to MachineConstantPoolEntry 2014-07-14 22:06:29 +00:00
MachineDominanceFrontier.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
MachineDominators.h MachineDominators: Move applySplitCriticalEdges into the cpp file. 2015-02-27 23:13:13 +00:00
MachineFrameInfo.h [WinEH] Sink UnwindHelp completely out of IR 2015-04-03 22:32:26 +00:00
MachineFunction.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
MachineFunctionAnalysis.h
MachineFunctionPass.h
MachineInstr.h DebugInfo: Remove DIDescriptor::Verify() 2015-04-06 19:49:39 +00:00
MachineInstrBuilder.h CodeGen: Stop using DIDescriptor::is*() and auto-casting 2015-04-06 23:27:40 +00:00
MachineInstrBundle.h
MachineJumpTableInfo.h
MachineLoopInfo.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
MachineMemOperand.h [BranchFolding] Remove MMOs during tail merge to preserve dependencies. 2015-03-10 16:22:52 +00:00
MachineModuleInfo.h Clear the stub map in getSortedStubs. 2015-04-07 12:59:28 +00:00
MachineModuleInfoImpls.h Clear the stub map in getSortedStubs. 2015-04-07 12:59:28 +00:00
MachineOperand.h Rewrite MachineOperand::print and MachineInstr::print to avoid 2015-02-27 00:11:34 +00:00
MachinePassRegistry.h Refactoring cl::parser construction and initialization. 2015-01-22 21:01:12 +00:00
MachinePostDominators.h Fix typos in comments, NFC 2014-08-29 21:53:01 +00:00
MachineRegionInfo.h Templatify RegionInfo so it works on MachineBasicBlocks 2014-07-19 18:29:29 +00:00
MachineRegisterInfo.h MachineRegisterInfo: Make it clear that hints are for vregs 2015-04-03 00:18:33 +00:00
MachineScheduler.h [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
MachineSSAUpdater.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
MachineTraceMetrics.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
MachineValueType.h Make VTs and UnicodeCharSet ctors constexpr if the compiler supports it. 2015-03-01 18:10:07 +00:00
MachORelocation.h
Passes.h Reland r229944: EH: Prune unreachable resume instructions during Dwarf EH preparation 2015-03-09 22:45:16 +00:00
PBQPRAConstraint.h Remove redundant virtual on overriden functions. 2014-11-14 19:06:36 +00:00
PseudoSourceValue.h
RegAllocPBQP.h [PBQP] Do not add an edge between nodes with totally disjoint allowed registers 2015-03-01 20:39:34 +00:00
RegAllocRegistry.h
RegisterClassInfo.h
RegisterPressure.h Remove declarations for nonexistent methods 2015-04-01 21:16:02 +00:00
RegisterScavenging.h Changed the liveness tracking in the RegisterScavenger 2014-08-04 23:07:49 +00:00
ResourcePriorityQueue.h unique_ptrify ResourcePriorityQueue::ResourceModel 2015-03-03 20:49:08 +00:00
RuntimeLibcalls.h SDAG: Merge the meat of two ExpandAtomic implementations. 2015-03-05 20:04:29 +00:00
ScheduleDAG.h Remove the explicit SUnitIterator::operator= as the default is just fine 2015-03-03 21:17:00 +00:00
ScheduleDAGInstrs.h Cleanup: Delete seemingly unused reference to MachineDominatorTree from ScheduleDAGInstrs. 2014-08-20 20:57:26 +00:00
ScheduleDFS.h Move remaining LLVM_ENABLE_DUMP conditionals out of the headers 2014-07-01 21:19:13 +00:00
ScheduleHazardRecognizer.h
SchedulerRegistry.h
ScoreboardHazardRecognizer.h
SelectionDAG.h remove function/variable names from comments; NFC 2015-04-04 21:06:39 +00:00
SelectionDAGISel.h Recommit r232027 with PR22883 fixed: Add infrastructure for support of multiple memory constraints. 2015-03-13 12:45:09 +00:00
SelectionDAGNodes.h move helper function closer to use; NFC 2015-04-07 19:13:06 +00:00
SlotIndexes.h Removing LLVM_EXPLICIT, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:00:20 +00:00
StackMaps.h Remove dead calls and function arguments dealing with TRI in StackMaps. 2015-03-20 21:05:18 +00:00
StackProtector.h
TargetLoweringObjectFileImpl.h Implement unique sections with an unique ID. 2015-04-04 18:02:01 +00:00
TargetSchedule.h Change MCSchedModel to be a struct of statically initialized data. 2014-09-02 17:43:54 +00:00
ValueTypes.h Make VTs and UnicodeCharSet ctors constexpr if the compiler supports it. 2015-03-01 18:10:07 +00:00
ValueTypes.td Intrinsics: introduce llvm_any_ty aka ValueType Any 2015-01-22 20:14:38 +00:00
VirtRegMap.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
WinEHFuncInfo.h [WinEHPrepare] Don't rely on the order of IR 2015-04-10 04:56:17 +00:00