- Jun 02, 2009
-
-
Lang Hames authored
llvm-svn: 72729
-
- Apr 28, 2009
-
-
Evan Cheng authored
llvm-svn: 70291
-
- Apr 27, 2009
-
-
Evan Cheng authored
llvm-svn: 70212
-
- Apr 25, 2009
-
-
Evan Cheng authored
llvm-svn: 70069
-
Evan Cheng authored
Do not share a single unknown val# for all the live ranges merged into a physical sub-register live interval. When coalescer is merging in clobbered virtaul register live interval into a physical register live interval, give each virtual register val# a separate val# in the physical register live interval. Otherwise, the coalescer would have lost track of the definitions information it needs to make correct coalescing decisions. llvm-svn: 70026
-
- Apr 18, 2009
-
-
Evan Cheng authored
Add a new LiveInterval::overlaps(). It checks if the live interval overlaps a range specified by [Start, End). llvm-svn: 69434
-
- Apr 08, 2009
-
-
Dan Gohman authored
with SUBREG_TO_REG, teach SimpleRegisterCoalescing to coalesce SUBREG_TO_REG instructions (which are similar to INSERT_SUBREG instructions), and teach the DAGCombiner to take advantage of this on targets which support it. This eliminates many redundant zero-extension operations on x86-64. This adds a new TargetLowering hook, isZExtFree. It's similar to isTruncateFree, except it only applies to actual definitions, and not no-op truncates which may not zero the high bits. Also, this adds a new optimization to SimplifyDemandedBits: transform operations like x+y into (zext (add (trunc x), (trunc y))) on targets where all the casts are no-ops. In contexts where the high part of the add is explicitly masked off, this allows the mask operation to be eliminated. Fix the DAGCombiner to avoid undoing these transformations to eliminate casts on targets where the casts are no-ops. Also, this adds a new two-address lowering heuristic. Since two-address lowering runs before coalescing, it helps to be able to look through copies when deciding whether commuting and/or three-address conversion are profitable. Also, fix a bug in LiveInterval::MergeInClobberRanges. It didn't handle the case that a clobber range extended both before and beyond an existing live range. In that case, multiple live ranges need to be added. This was exposed by the new subreg coalescing code. Remove 2008-05-06-SpillerBug.ll. It was bugpoint-reduced, and the spiller behavior it was looking for no longer occurrs with the new instruction selection. llvm-svn: 68576
-
- Mar 11, 2009
-
-
Evan Cheng authored
1. Use the same value# to represent unknown values being merged into sub-registers. 2. When coalescer commute an instruction and the destination is a physical register, update its sub-registers by merging in the extended ranges. llvm-svn: 66610
-
- Feb 02, 2009
-
-
Owen Anderson authored
Live interval reconstruction needs to account for this, and scour its maps to prevent dangling references. llvm-svn: 63558
-
- Jan 29, 2009
-
-
Evan Cheng authored
llvm-svn: 63267
-
Evan Cheng authored
llvm-svn: 63255
-
- Sep 24, 2008
-
-
Dale Johannesen authored
RA problem by expanding the live interval of an earlyclobber def back one slot. Remove overlap-earlyclobber throughout. Remove earlyclobber bits and their handling from live internals. llvm-svn: 56539
-
- Sep 19, 2008
-
-
Dale Johannesen authored
and redo as linked list walk. Logic moved into RA. Per review feedback. llvm-svn: 56326
-
- Aug 14, 2008
-
-
Dan Gohman authored
llvm-svn: 54780
-
- Jun 23, 2008
-
-
Evan Cheng authored
Instead of adding an isSS field to LiveInterval to denote stack slot. Use top bit of 'reg' instead. If the top bit is set, than the LiveInterval represents a stack slot live interval. llvm-svn: 52639
-
- Jun 04, 2008
-
-
Evan Cheng authored
llvm-svn: 51934
-
- Feb 26, 2008
-
-
Bill Wendling authored
llvm-svn: 47629
-
Bill Wendling authored
would have been a Godsend here! llvm-svn: 47625
-
- Feb 20, 2008
-
-
Anton Korobeynikov authored
llvm-svn: 47368
-
- Feb 15, 2008
-
-
Evan Cheng authored
register defs and uses after each successful coalescing. - Also removed a number of hacks and fixed some subtle kill information bugs. llvm-svn: 47167
-
- Feb 13, 2008
-
-
Evan Cheng authored
- removeRange() can now update value# information. llvm-svn: 47044
-
- Feb 10, 2008
-
-
Dan Gohman authored
llvm-svn: 46930
-
- Jan 30, 2008
-
-
Evan Cheng authored
Fixed a bug in MergeValueInAsValue() pointed out by David Greene. Replace val# with previous liverange's. llvm-svn: 46579
-
- Jan 14, 2008
-
-
Chris Lattner authored
llvm-svn: 45971
-
- Dec 29, 2007
-
-
Chris Lattner authored
llvm-svn: 45418
-
- Nov 29, 2007
-
-
Evan Cheng authored
llvm-svn: 44434
-
Evan Cheng authored
llvm-svn: 44427
-
- Oct 17, 2007
-
-
Evan Cheng authored
their value numbers with the specified value number. llvm-svn: 43062
-
- Oct 14, 2007
-
-
Evan Cheng authored
the source register will be coalesced to the super register of the LHS. Properly merge in the live ranges of the resulting coalesced interval that were part of the original source interval to the live interval of the super-register. llvm-svn: 42961
-
- Oct 12, 2007
-
-
Evan Cheng authored
(almost) a register copy. However, it always coalesced to the register of the RHS (the super-register). All uses of the result of a EXTRACT_SUBREG are sub- register uses which adds subtle complications to load folding, spiller rewrite, etc. llvm-svn: 42899
-
- Sep 06, 2007
-
-
David Greene authored
Constify to catch bugs. llvm-svn: 41751
-
Evan Cheng authored
llvm-svn: 41739
-
- Sep 05, 2007
-
-
Evan Cheng authored
Use pool allocator for all the VNInfo's to improve memory access locality. This reduces coalescing time on siod Mac OS X PPC by 35%. Also remove the back ptr from VNInfo to LiveInterval and other tweaks. llvm-svn: 41729
-
- Sep 01, 2007
-
-
Evan Cheng authored
llvm-svn: 41669
-
- Aug 31, 2007
-
-
Evan Cheng authored
llvm-svn: 41641
-
- Aug 29, 2007
-
-
Evan Cheng authored
Changes related modules so VNInfo's are not copied. This decrease copy coalescing time by 45% and overall compilation time by 10% on siod. llvm-svn: 41579
-
- Aug 28, 2007
-
-
Evan Cheng authored
1. Eliminate the costly live interval "swapping". 2. Change ValueNumberInfo container from SmallVector to std::vector. The former performs slowly when the vector size is very large. llvm-svn: 41536
-
- Aug 14, 2007
-
-
Evan Cheng authored
llvm-svn: 41064
-
- Aug 13, 2007
-
-
Evan Cheng authored
llvm-svn: 41043
-
- Aug 11, 2007
-
-
Evan Cheng authored
llvm-svn: 41016
-