mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-29 15:04:57 +00:00
0d3c0a9aea
This is still a work in progress. Out-of-order CPUs usually execute instructions from multiple basic blocks simultaneously, so it is necessary to look at longer traces when estimating the performance effects of code transformations. The MachineTraceMetrics analysis will pick a typical trace through a given basic block and provide performance metrics for the trace. Metrics will include: - Instruction count through the trace. - Issue count per functional unit. - Critical path length, and per-instruction 'slack'. These metrics can be used to determine the performance limiting factor when executing the trace, and how it will be affected by a code transformation. Initially, this will be used by the early if-conversion pass. llvm-svn: 160796
113 lines
2.5 KiB
CMake
113 lines
2.5 KiB
CMake
add_llvm_library(LLVMCodeGen
|
|
AggressiveAntiDepBreaker.cpp
|
|
AllocationOrder.cpp
|
|
Analysis.cpp
|
|
BranchFolding.cpp
|
|
CalcSpillWeights.cpp
|
|
CallingConvLower.cpp
|
|
CodeGen.cpp
|
|
CodePlacementOpt.cpp
|
|
CriticalAntiDepBreaker.cpp
|
|
DeadMachineInstructionElim.cpp
|
|
DFAPacketizer.cpp
|
|
DwarfEHPrepare.cpp
|
|
EarlyIfConversion.cpp
|
|
EdgeBundles.cpp
|
|
ExecutionDepsFix.cpp
|
|
ExpandISelPseudos.cpp
|
|
ExpandPostRAPseudos.cpp
|
|
GCMetadata.cpp
|
|
GCMetadataPrinter.cpp
|
|
GCStrategy.cpp
|
|
IfConversion.cpp
|
|
InlineSpiller.cpp
|
|
InterferenceCache.cpp
|
|
IntrinsicLowering.cpp
|
|
JITCodeEmitter.cpp
|
|
LLVMTargetMachine.cpp
|
|
LatencyPriorityQueue.cpp
|
|
LexicalScopes.cpp
|
|
LiveDebugVariables.cpp
|
|
LiveInterval.cpp
|
|
LiveIntervalAnalysis.cpp
|
|
LiveIntervalUnion.cpp
|
|
LiveRegMatrix.cpp
|
|
LiveStackAnalysis.cpp
|
|
LiveVariables.cpp
|
|
LiveRangeCalc.cpp
|
|
LiveRangeEdit.cpp
|
|
LocalStackSlotAllocation.cpp
|
|
MachineBasicBlock.cpp
|
|
MachineBlockFrequencyInfo.cpp
|
|
MachineBlockPlacement.cpp
|
|
MachineBranchProbabilityInfo.cpp
|
|
MachineCodeEmitter.cpp
|
|
MachineCopyPropagation.cpp
|
|
MachineCSE.cpp
|
|
MachineDominators.cpp
|
|
MachineFunction.cpp
|
|
MachineFunctionAnalysis.cpp
|
|
MachineFunctionPass.cpp
|
|
MachineFunctionPrinterPass.cpp
|
|
MachineInstr.cpp
|
|
MachineInstrBundle.cpp
|
|
MachineLICM.cpp
|
|
MachineLoopInfo.cpp
|
|
MachineLoopRanges.cpp
|
|
MachineModuleInfo.cpp
|
|
MachineModuleInfoImpls.cpp
|
|
MachinePassRegistry.cpp
|
|
MachineRegisterInfo.cpp
|
|
MachineSSAUpdater.cpp
|
|
MachineScheduler.cpp
|
|
MachineSink.cpp
|
|
MachineTraceMetrics.cpp
|
|
MachineVerifier.cpp
|
|
OcamlGC.cpp
|
|
OptimizePHIs.cpp
|
|
PHIElimination.cpp
|
|
PHIEliminationUtils.cpp
|
|
Passes.cpp
|
|
PeepholeOptimizer.cpp
|
|
PostRASchedulerList.cpp
|
|
ProcessImplicitDefs.cpp
|
|
PrologEpilogInserter.cpp
|
|
PseudoSourceValue.cpp
|
|
RegAllocBase.cpp
|
|
RegAllocBasic.cpp
|
|
RegAllocFast.cpp
|
|
RegAllocGreedy.cpp
|
|
RegAllocPBQP.cpp
|
|
RegisterClassInfo.cpp
|
|
RegisterCoalescer.cpp
|
|
RegisterPressure.cpp
|
|
RegisterScavenging.cpp
|
|
ScheduleDAG.cpp
|
|
ScheduleDAGInstrs.cpp
|
|
ScheduleDAGPrinter.cpp
|
|
ScoreboardHazardRecognizer.cpp
|
|
ShadowStackGC.cpp
|
|
ShrinkWrapping.cpp
|
|
SjLjEHPrepare.cpp
|
|
SlotIndexes.cpp
|
|
Spiller.cpp
|
|
SpillPlacement.cpp
|
|
SplitKit.cpp
|
|
StackProtector.cpp
|
|
StackSlotColoring.cpp
|
|
StrongPHIElimination.cpp
|
|
TailDuplication.cpp
|
|
TargetFrameLoweringImpl.cpp
|
|
TargetInstrInfoImpl.cpp
|
|
TargetLoweringObjectFileImpl.cpp
|
|
TargetOptionsImpl.cpp
|
|
TwoAddressInstructionPass.cpp
|
|
UnreachableBlockElim.cpp
|
|
VirtRegMap.cpp
|
|
)
|
|
|
|
add_dependencies(LLVMCodeGen intrinsics_gen)
|
|
|
|
add_subdirectory(SelectionDAG)
|
|
add_subdirectory(AsmPrinter)
|