1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-23 21:13:02 +02:00
llvm-mirror/lib
Matt Arsenault 0410cd21d2 AMDGPU: Move SIFixSGPRLiveRanges to be a regalloc pass
Replace LiveInterval usage with LiveVariables. LiveIntervals
computes far more information than is needed for this pass
which just needs to find if an SGPR is live out of the
defining block.

LiveIntervals are not usually available that early, requiring
computing them twice which is very expensive. The extra run of
LiveIntervals/LiveVariables/SlotIndexes was costing in total
about 5% of compile time.

Continuing to use LiveIntervals is problematic. It seems
there is an option (early-live-intervals) to run the analysis
about where it should go to avoid recomputing LiveVariables,
but it seems to be completely broken with subreg liveness
enabled. There are also problems from trying to recompute
LiveIntervals since this seems to undo LiveVariables
and clearing kill flags, causing TwoAddressInstructions
to make bad decisions.

Insert the pass right after live variables and preserve it.
The tricky case to worry about might be phis since
LiveVariables doesn't count a register as live out if
in the successor block it is only used in a phi,
but I don't think this is a concern right now
because SIFixSGPRCopies replaces SGPR phis.

llvm-svn: 249087
2015-10-01 22:10:03 +00:00
..
Analysis Refactor computeKnownBits alignment handling code 2015-09-30 11:55:45 +00:00
AsmParser HHVM calling conventions. 2015-09-29 22:09:16 +00:00
Bitcode [Bitcode][Asm] Teach LLVM to read and write operand bundles. 2015-09-24 23:34:52 +00:00
CodeGen [WinEH] Emit __C_specific_handler tables for the new IR 2015-10-01 21:38:24 +00:00
DebugInfo Use makeArrayRef or None to avoid unnecessarily mentioning the ArrayRef type extra times. NFC 2015-09-21 05:32:41 +00:00
ExecutionEngine Fix performance problem in long-running SectionMemoryManagers 2015-10-01 02:45:07 +00:00
Fuzzer [libFuzzer] Marking exported symbols as visible. Patch by Mike Aizatsky 2015-09-30 22:22:37 +00:00
IR Fix debug info with SafeStack. 2015-09-30 19:55:43 +00:00
IRReader
LibDriver There is only one saver of strings. 2015-08-13 01:07:02 +00:00
LineEditor
Linker [opaque pointer types] Switch a few cases of getElementType over, since I had them lying around anyway 2015-09-14 20:29:26 +00:00
LTO Reapply "LTO: Disable extra verify runs in release builds" 2015-09-15 23:05:59 +00:00
MC MCAsmInfo: Allow targets to specify when the .section directive should be omitted 2015-09-25 21:41:14 +00:00
Object Prune trailing whitespaces. 2015-09-22 11:19:03 +00:00
Option
Passes [PM] Port SROA to the new pass manager. 2015-09-12 09:09:14 +00:00
ProfileData InstrProf: Don't call std::unique twice here 2015-09-30 02:02:08 +00:00
Support [BranchProbability] Manually round the floating point output. 2015-09-26 10:09:36 +00:00
TableGen
Target AMDGPU: Move SIFixSGPRLiveRanges to be a regalloc pass 2015-10-01 22:10:03 +00:00
Transforms [InstCombine] Remove trivially empty lifetime start/end ranges. 2015-10-01 14:54:31 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile