- Oct 20, 2010
-
-
Dan Gohman authored
llvm-svn: 116890
-
- Oct 19, 2010
-
-
Evan Cheng authored
erased the instruction during LICM so UpdateRegPressureAfter() should not reference it afterwards. llvm-svn: 116845
-
Owen Anderson authored
Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize the pass's dependencies. Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h before parsing commandline arguments. I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass registration/creation, please send the testcase to me directly. llvm-svn: 116820
-
Daniel Dunbar authored
is", which breaks some nightly tests. llvm-svn: 116816
-
Andrew Trick authored
in MultiSource/Benchmarks/VersaBench/beamformer/beamformer. SmallSet.insert returns true if the element is inserted. llvm-svn: 116790
-
Evan Cheng authored
"long latency" enough to hoist even if it may increase spilling. Reloading a value from spill slot is often cheaper than performing an expensive computation in the loop. For X86, that means machine LICM will hoist SQRT, DIV, etc. ARM will be somewhat aggressive with VFP and NEON instructions. - Enable register pressure aware machine LICM by default. llvm-svn: 116781
-
- Oct 16, 2010
-
-
Evan Cheng authored
More machine LICM work. It now tracks register pressure for path from preheader to current BB and use the information determine whether hoisting is worthwhile. llvm-svn: 116654
-
- Oct 14, 2010
-
-
Evan Cheng authored
llvm-svn: 116465
-
- Oct 12, 2010
-
-
Owen Anderson authored
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. llvm-svn: 116334
-
- Oct 08, 2010
-
-
Evan Cheng authored
llvm-svn: 116081
-
Owen Anderson authored
llvm-svn: 115996
-
- Aug 06, 2010
-
-
Owen Anderson authored
llvm-svn: 110460
-
Owen Anderson authored
llvm-svn: 110410
-
Owen Anderson authored
ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396
-
- Jul 29, 2010
-
-
Dale Johannesen authored
llvm-svn: 109765
-
- Jul 22, 2010
-
-
Owen Anderson authored
llvm-svn: 109045
-
- Jul 20, 2010
-
-
Dale Johannesen authored
threshold a bit per experimentation. llvm-svn: 108935
-
Dale Johannesen authored
loop, for the reasons in the comments. This is a major win on 253.perlbmk on ARM Darwin. I expect it to be a good heuristic in general, but it's possible some things will regress; I'll be watching. 7940152. llvm-svn: 108792
-
- Jul 14, 2010
-
-
Evan Cheng authored
Teach ProcessImplicitDefs to transform more COPY instructions into IMPLICIT_DEF (and subsequently eliminate them). This allows machine LICM to hoist IMPLICIT_DEF's. PR7620. llvm-svn: 108304
-
- Jul 12, 2010
-
-
Chris Lattner authored
intended functionality change. The avoidance of hoistiing implicitdef seems wrong though. llvm-svn: 108109
-
- Jul 09, 2010
-
-
Dan Gohman authored
llvm-svn: 108001
-
- Jun 22, 2010
-
-
Dan Gohman authored
into a utility routine, teach it how to update MachineLoopInfo, and make use of it in MachineLICM to split critical edges on demand. llvm-svn: 106555
-
- May 29, 2010
-
-
- May 13, 2010
-
-
Dan Gohman authored
when they move instructions. llvm-svn: 103737
-
- Apr 20, 2010
-
-
Jakob Stoklund Olesen authored
register is not killed in the loop. This fixes 188.ammp on ARM where the post-ra scheduler would grab a register that looked available but wasn't. A testcase would be huge and fragile, sorry. llvm-svn: 101930
-
- Apr 17, 2010
-
-
Evan Cheng authored
the live-in sets of BBs in the loop. Otherwise later pass may end up using the registers and override the invariant. rdar://7852937 No reasonablly sized test case possible. llvm-svn: 101626
-
- Apr 14, 2010
-
-
Evan Cheng authored
llvm-svn: 101183
-
- Apr 13, 2010
-
-
Evan Cheng authored
llvm-svn: 101170
-
Evan Cheng authored
Expand postra machine licm's capability a little more. If an instruction's register operands are all loop invariants, then it's safe to hoist it. llvm-svn: 101167
-
Evan Cheng authored
Teach postra machine licm to hoist more obvious invariants, e.g. instructions with no source operands. llvm-svn: 101154
-
Dan Gohman authored
MachineBasicBlock::livein_iterator a const_iterator, because clients shouldn't ever be using the iterator interface to mutate the livein set. llvm-svn: 101147
-
- Apr 12, 2010
-
-
Benjamin Kramer authored
llvm-svn: 101034
-
- Apr 09, 2010
-
-
Dan Gohman authored
llvm-svn: 100858
-
- Apr 08, 2010
-
-
Evan Cheng authored
llvm-svn: 100742
-
- Apr 07, 2010
-
-
Evan Cheng authored
llvm-svn: 100610
-
Evan Cheng authored
llvm-svn: 100609
-
Evan Cheng authored
llvm-svn: 100592
-
- Mar 03, 2010
-
-
Evan Cheng authored
- Change MachineInstr::isIdenticalTo to take a new option that determines whether it should skip checking defs or at least virtual register defs. This subsumes part of the TargetInstrInfo::isIdentical functionality. - Eliminate TargetInstrInfo::isIdentical and replace it with produceSameValue. In the default case, produceSameValue just checks whether two machine instructions are identical (except for virtual register defs). But targets may override it to check for unusual cases (e.g. ARM pic loads from constant pools). llvm-svn: 97628
-
- Feb 28, 2010
-
-
Dan Gohman authored
llvm-svn: 97360
-
Dan Gohman authored
defs or uses. The regular def and use checking below covers them, and can be more precise. It's safe to hoist an instruction with a dead implicit def if the register isn't live into the loop header. llvm-svn: 97352
-