9ebfbf8b9fd5f982e0db9293808bd32168615ba9 |
|
05-Mar-2012 |
Craig Topper <craig.topper@gmail.com> |
Convert more GenRegisterInfo tables from unsigned to uint16_t to reduce static data size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152016 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
8dd26253f54247e77e5accfdd70e7b4bf27b39c2 |
|
10-Feb-2012 |
Andrew Trick <atrick@apple.com> |
RegAlloc superpass: includes phi elimination, coalescing, and scheduling. Creates a configurable regalloc pipeline. Ensure specific llc options do what they say and nothing more: -reglloc=... has no effect other than selecting the allocator pass itself. This patch introduces a new umbrella flag, "-optimize-regalloc", to enable/disable the optimizing regalloc "superpass". This allows for example testing coalscing and scheduling under -O0 or vice-versa. When a CodeGen pass requires the MachineFunction to have a particular property, we need to explicitly define that property so it can be directly queried rather than naming a specific Pass. For example, to check for SSA, use MRI->isSSA, not addRequired<PHIElimination>. CodeGen transformation passes are never "required" as an analysis ProcessImplicitDefs does not require LiveVariables. We have a plan to massively simplify some of the early passes within the regalloc superpass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150226 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
e8838d5c5f6cae7daa2507a114c896dc5a4ae097 |
|
26-Jan-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Improve sub-register def handling in ProcessImplicitDefs. This boils down to using MachineOperand::readsReg() more. This fixes PR11829 where a use ended up after the first def when lowering REG_SEQUENCE instructions involving IMPLICIT_DEFs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148996 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
f6c690019b7ba9d121e658d16b9d99831df7428f |
|
28-Jul-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Handle REG_SEQUENCE with implicitly defined operands. Code like that would only be produced by bugpoint, but we should still handle it correctly. When a register is defined by a REG_SEQUENCE of undefs, the register itself is undef. Previously, we would create a register with uses but no defs. Fixes part of PR10520. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136401 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
cf03e35d9009480a416b3546a4ee39093e69d506 |
|
14-Mar-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Place context in member variables instead of passing around pointers. Use the opportunity to get rid of the trailing underscore variable names. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127618 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
dd061b317711d4165e01f30e8be4798c832819b8 |
|
29-Dec-2010 |
Cameron Zwarich <zwarich@apple.com> |
None of the other pass names in CodeGen have terminating periods. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122628 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
2ab36d350293c77fc8941ce1023e4899df7e3a82 |
|
12-Oct-2010 |
Owen Anderson <resistor@mac.com> |
Begin adding static dependence information to passes, which will allow us to perform initialization without static constructors AND without explicit initialization by the client. For the moment, passes are required to initialize both their (potential) dependencies and any passes they preserve. I hope to be able to relax the latter requirement in the future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116334 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
ce665bd2e2b581ab0858d1afe359192bac96b868 |
|
08-Oct-2010 |
Owen Anderson <resistor@mac.com> |
Now with fewer extraneous semicolons! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115996 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
d13db2c59cc94162d6cf0a04187d408bfef6d4a7 |
|
22-Jul-2010 |
Owen Anderson <resistor@mac.com> |
Fix batch of converting RegisterPass<> to INTIALIZE_PASS(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109045 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
04c528a0c86ddf3d6a70681f72e1b2ec07b0b53a |
|
16-Jul-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove many calls to TII::isMoveInstr. Targets should be producing COPY anyway. TII::isMoveInstr is going tobe completely removed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108507 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
db8980903717e1127463f00a34cae9bd29f82a91 |
|
14-Jul-2010 |
Evan Cheng <evan.cheng@apple.com> |
Teach ProcessImplicitDefs to transform more COPY instructions into IMPLICIT_DEF (and subsequently eliminate them). This allows machine LICM to hoist IMPLICIT_DEF's. PR7620. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108304 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
0bc25f40402f48ba42fc45403f635b20d90fabb3 |
|
08-Jul-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Convert EXTRACT_SUBREG to COPY when emitting machine instrs. EXTRACT_SUBREG no longer appears as a machine instruction. Use COPY instead. Add isCopy() checks in many places using isMoveInstr() and isExtractSubreg(). The isMoveInstr hook will be removed later. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107879 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
5c00e077952d14899c3fc26709c7b2dfd36d0209 |
|
08-Jul-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove references to INSERT_SUBREG after de-SSA. Fix X86InstrInfo::convertToThreeAddressWithLEA to generate COPY instead of INSERT_SUBREG. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107878 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
4b76ffc1ffca2ed016467e916d5223515b485592 |
|
07-Jul-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Revert "Remove references to INSERT_SUBREG after de-SSA" r107725. Buildbot breakage. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107744 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
d3b376b4483d816367dd28a41bcbccede1cdcbf0 |
|
07-Jul-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove references to INSERT_SUBREG after de-SSA git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107732 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
ed2185e171a86b8c0e166803fd4066383a6cff08 |
|
07-Jul-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Convert INSERT_SUBREG to COPY in TwoAddressInstructionPass. INSERT_SUBREG will now only appear in SSA machine instructions. Fix the handling of partial redefs in ProcessImplicitDefs. This is now relevant since partial redef COPY instructions appear. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107726 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
273f7e42994a5bce0614d04d96dbfdf05fd652e5 |
|
03-Jul-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Detect and handle COPY in many places. This code is transitional, it will soon be possible to eliminate isExtractSubreg, isInsertSubreg, and isMoveInstr in most places. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107547 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
31b9c44cc13bb686010cf6bfbeef8745c39939b9 |
|
11-May-2010 |
Evan Cheng <evan.cheng@apple.com> |
It's not safe eliminate copies where src and dst have different sub-register indices. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103450 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
9cc9bfaf86510790c36198b033f241635614a8d0 |
|
10-May-2010 |
Evan Cheng <evan.cheng@apple.com> |
It's not safe to propagate implicit_def that defines part of a register. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103436 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
8eea48a43da9e861841abe869c5f3215c1f42d27 |
|
15-Feb-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Fix PR6300. A virtual register can be used before it is defined in the same MBB if the MBB is part of a loop. Teach the implicit-def pass about this case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96279 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
518bb53485df640d7b7e3f6b0544099020c42aa7 |
|
09-Feb-2010 |
Chris Lattner <sabre@nondot.org> |
move target-independent opcodes out of TargetInstrInfo into TargetOpcodes.h. #include the new TargetOpcodes.h into MachineInstr. Add new inline accessors (like isPHI()) to MachineInstr, and start using them throughout the codebase. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95687 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
e4d2d96cc8663b9a6040532cea2f2e72688bd895 |
|
04-Feb-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Fix small bug in handling instructions with more than one implicitly defined operand. ProcessImplicitDefs would only mark one operand per instruction with <undef>. This fixed PR6086. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95319 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
7530efb49e5b26912933dd1dc62ff0d06a06bf9f |
|
05-Jan-2010 |
David Greene <greened@obbligato.org> |
Change errs() to dbgs(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92567 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
40ea0e22b2380236c137e5a4b17d2eae38286a5e |
|
26-Nov-2009 |
Evan Cheng <evan.cheng@apple.com> |
When all defs of a vr are implicit_def, delete all of the defs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89905 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
e7c9195706ce17b5016f74005ecab5523519deea |
|
25-Nov-2009 |
Evan Cheng <evan.cheng@apple.com> |
ProcessImplicitDefs should watch out for invalidated iterator and extra implicit operands on copies. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89880 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
285a7d57dc3c1210eda135fc137928e727175200 |
|
16-Nov-2009 |
Evan Cheng <evan.cheng@apple.com> |
For some targets, a copy can use a register multiple times, e.g. ppc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88895 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
79ac32de3bdaf8da2213945c808f6ec26cf2a7fa |
|
16-Nov-2009 |
Lang Hames <lhames@gmail.com> |
Fixes the bug exposed by Anton's test case in PR 5495: Make sure when ProcessImplicitDefs removes a copy which kills its source reg that it removes the copy from said reg's Kills list. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88881 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|
233a60ec40b41027ff429e2f2c27fa2be762f2e9 |
|
04-Nov-2009 |
Lang Hames <lhames@gmail.com> |
The Indexes Patch. This introduces a new pass, SlotIndexes, which is responsible for numbering instructions for register allocation (and other clients). SlotIndexes numbering is designed to match the existing scheme, so this patch should not cause any changes in the generated code. For consistency, and to avoid naming confusion, LiveIndex has been renamed SlotIndex. The processImplicitDefs method of the LiveIntervals analysis has been moved into its own pass so that it can be run prior to SlotIndexes. This was necessary to match the existing numbering scheme. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85979 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/ProcessImplicitDefs.cpp
|