Owen Anderson
58d9213c3a
Fix a compile-time regression introduced by my heuristic-changing patch. I forgot
...
to multiply the instruction count by a constant factor in a few places, which
caused the register allocator to require many more iterations.
llvm-svn: 53959
2008-07-23 19:47:27 +00:00
Owen Anderson
7b8947cc31
Change the heuristics used in the coalescer, register allocator, and within
...
live intervals itself to use an instruction count approximation that is
not affected by inserting empty indices.
llvm-svn: 53937
2008-07-22 22:46:49 +00:00
Evan Cheng
22b431d28f
Coalesce copy from one register class to a sub register class. e.g. X86::MOV16to16_.
...
llvm-svn: 52480
2008-06-19 01:39:21 +00:00
Owen Anderson
65cfda30bd
The coalescer doesn't need LiveVariables now that we have register use iterators.
...
llvm-svn: 51790
2008-05-30 22:37:27 +00:00
Evan Cheng
44a0a0c8ee
After reading memory that's already freed.
...
llvm-svn: 49810
2008-04-16 20:24:25 +00:00
Evan Cheng
c79e80c679
Add comment.
...
llvm-svn: 49469
2008-04-10 08:03:14 +00:00
Evan Cheng
def576f9e6
- More aggressively coalescing away copies whose source is defined by an implicit_def.
...
- Added insert_subreg coalescing support.
llvm-svn: 49448
2008-04-09 20:57:25 +00:00
Evan Cheng
e86caa45cf
- Turn copies of implicit_def into implicit_def instructions.
...
- Be smarter about coalescing copies from implicit_def.
llvm-svn: 49168
2008-04-03 16:41:54 +00:00
Evan Cheng
5750c3cd1e
Rewrite code that propagate isDead information after a dead copy is coalesced. This remove some ugly spaghetti code and fixed a number of subtle bugs.
...
llvm-svn: 48490
2008-03-18 08:26:47 +00:00
Evan Cheng
02b66c3a32
- Fix a subtle bug in RemoveCopyByCommutingDef. ALR is the live range where the source is defined; BLR is the live range which is defined by the copy.
...
If ALR and BLR overlaps and end of BLR extends beyond end of ALR, e.g.
A = or A, B
...
B = A
...
C = A<kill>
...
= B
then do not add kills of A to the newly created B interval.
- Also fix some kill info update bug.
llvm-svn: 48141
2008-03-10 08:11:32 +00:00
Evan Cheng
8f5092bea8
Fix a coalescer bug wrt how dead copy interval is shortened.
...
llvm-svn: 47966
2008-03-05 22:09:42 +00:00
Evan Cheng
18064ddb5b
Refactor code. Remove duplicated functions that basically do the same thing as
...
findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies.
llvm-svn: 47927
2008-03-05 00:59:57 +00:00
Evan Cheng
f6d76f2e52
No need for coalescer to update kills. Only copies are coalesced and those instructions will be deleted. Doh.
...
llvm-svn: 47749
2008-02-29 02:50:03 +00:00
Evan Cheng
dd13a96a60
Refactor some code; check if commuteInstruction is able to commute the instruction.
...
llvm-svn: 47208
2008-02-16 02:32:17 +00:00
Evan Cheng
bb357cd8a6
- Removing the infamous r2rMap_ and rep() method. Now the coalescer will update
...
register defs and uses after each successful coalescing.
- Also removed a number of hacks and fixed some subtle kill information bugs.
llvm-svn: 47167
2008-02-15 18:24:29 +00:00
Evan Cheng
d4ddda68fa
Initial support for copy elimination by commuting its definition MI.
...
PR1877.
A3 = op A2 B0<kill>
...
B1 = A3 <- this copy
...
= op A3 <- more uses
==>
B2 = op B0 A2<kill>
...
B1 = B2 <- now an identify copy
...
= op B2 <- more uses
This speeds up FreeBench/neural by 29%, Olden/bh by 12%, oopack_v1p8 by 53%.
llvm-svn: 47046
2008-02-13 03:01:43 +00:00
Dan Gohman
cabaec582f
Rename MRegisterInfo to TargetRegisterInfo.
...
llvm-svn: 46930
2008-02-10 18:45:23 +00:00
Chris Lattner
ad9a6ccb83
Remove attribution from file headers, per discussion on llvmdev.
...
llvm-svn: 45418
2007-12-29 20:36:04 +00:00
Dan Gohman
80af3e255d
Add explicit keywords, and fix a minor typo that they uncovered.
...
llvm-svn: 45034
2007-12-14 15:41:34 +00:00
Evan Cheng
45c08c8337
Switch over to MachineLoopInfo.
...
llvm-svn: 44838
2007-12-11 02:09:15 +00:00
Evan Cheng
bd9a038bd7
First step towards moving the coalescer to priority_queue based machinery.
...
llvm-svn: 43764
2007-11-06 08:52:21 +00:00
Evan Cheng
ec35b58b0a
Move SimpleRegisterCoalescing.h to lib/CodeGen since there is now a common
...
register coalescer interface: RegisterCoalescing.
llvm-svn: 43714
2007-11-05 17:41:38 +00:00