Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Re-apply 55467 with fix. If copy is being replaced by remat'ed def, transfer ↵ | Evan Cheng | 2008-08-30 | 1 | -0/+7 |
| | | | | | | the implicit defs onto the remat'ed instruction. llvm-svn: 55564 | ||||
* | Revert r55467; it causes regressions in UnitTests/Vector/divides, | Dan Gohman | 2008-08-28 | 1 | -7/+0 |
| | | | | | | Benchmarks/sim/sim, and others on x86-64. llvm-svn: 55475 | ||||
* | If a copy isn't coalesced, but its src is defined by trivial computation. ↵ | Evan Cheng | 2008-08-28 | 1 | -0/+7 |
| | | | | | | Re-materialize the src to replace the copy. llvm-svn: 55467 | ||||
* | Fix a compile-time regression introduced by my heuristic-changing patch. I ↵ | Owen Anderson | 2008-07-23 | 1 | -1/+2 |
| | | | | | | | | | 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 | ||||
* | Change the heuristics used in the coalescer, register allocator, and within | Owen Anderson | 2008-07-22 | 1 | -1/+1 |
| | | | | | | | live intervals itself to use an instruction count approximation that is not affected by inserting empty indices. llvm-svn: 53937 | ||||
* | Coalesce copy from one register class to a sub register class. e.g. ↵ | Evan Cheng | 2008-06-19 | 1 | -3/+13 |
| | | | | | | X86::MOV16to16_. llvm-svn: 52480 | ||||
* | The coalescer doesn't need LiveVariables now that we have register use ↵ | Owen Anderson | 2008-05-30 | 1 | -1/+0 |
| | | | | | | iterators. llvm-svn: 51790 | ||||
* | After reading memory that's already freed. | Evan Cheng | 2008-04-16 | 1 | -4/+4 |
| | | | | llvm-svn: 49810 | ||||
* | Add comment. | Evan Cheng | 2008-04-10 | 1 | -0/+2 |
| | | | | llvm-svn: 49469 | ||||
* | - More aggressively coalescing away copies whose source is defined by an ↵ | Evan Cheng | 2008-04-09 | 1 | -2/+20 |
| | | | | | | | | implicit_def. - Added insert_subreg coalescing support. llvm-svn: 49448 | ||||
* | - Turn copies of implicit_def into implicit_def instructions. | Evan Cheng | 2008-04-03 | 1 | -0/+6 |
| | | | | | | - Be smarter about coalescing copies from implicit_def. llvm-svn: 49168 | ||||
* | Rewrite code that propagate isDead information after a dead copy is ↵ | Evan Cheng | 2008-03-18 | 1 | -1/+5 |
| | | | | | | coalesced. This remove some ugly spaghetti code and fixed a number of subtle bugs. llvm-svn: 48490 | ||||
* | - Fix a subtle bug in RemoveCopyByCommutingDef. ALR is the live range where ↵ | Evan Cheng | 2008-03-10 | 1 | -0/+4 |
| | | | | | | | | | | | | | | | | | | 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 | ||||
* | Fix a coalescer bug wrt how dead copy interval is shortened. | Evan Cheng | 2008-03-05 | 1 | -0/+6 |
| | | | | llvm-svn: 47966 | ||||
* | Refactor code. Remove duplicated functions that basically do the same thing as | Evan Cheng | 2008-03-05 | 1 | -4/+0 |
| | | | | | | findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies. llvm-svn: 47927 | ||||
* | No need for coalescer to update kills. Only copies are coalesced and those ↵ | Evan Cheng | 2008-02-29 | 1 | -8/+0 |
| | | | | | | instructions will be deleted. Doh. llvm-svn: 47749 | ||||
* | Refactor some code; check if commuteInstruction is able to commute the ↵ | Evan Cheng | 2008-02-16 | 1 | -0/+5 |
| | | | | | | instruction. llvm-svn: 47208 | ||||
* | - Removing the infamous r2rMap_ and rep() method. Now the coalescer will update | Evan Cheng | 2008-02-15 | 1 | -51/+26 |
| | | | | | | | register defs and uses after each successful coalescing. - Also removed a number of hacks and fixed some subtle kill information bugs. llvm-svn: 47167 | ||||
* | Initial support for copy elimination by commuting its definition MI. | Evan Cheng | 2008-02-13 | 1 | -1/+8 |
| | | | | | | | | | | | | | | | | | | | | | 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 | ||||
* | Rename MRegisterInfo to TargetRegisterInfo. | Dan Gohman | 2008-02-10 | 1 | -2/+2 |
| | | | | llvm-svn: 46930 | ||||
* | Remove attribution from file headers, per discussion on llvmdev. | Chris Lattner | 2007-12-29 | 1 | -2/+2 |
| | | | | llvm-svn: 45418 | ||||
* | Add explicit keywords, and fix a minor typo that they uncovered. | Dan Gohman | 2007-12-14 | 1 | -2/+3 |
| | | | | llvm-svn: 45034 | ||||
* | Switch over to MachineLoopInfo. | Evan Cheng | 2007-12-11 | 1 | -2/+2 |
| | | | | llvm-svn: 44838 | ||||
* | First step towards moving the coalescer to priority_queue based machinery. | Evan Cheng | 2007-11-06 | 1 | -16/+70 |
| | | | | llvm-svn: 43764 | ||||
* | Move SimpleRegisterCoalescing.h to lib/CodeGen since there is now a common | Evan Cheng | 2007-11-05 | 1 | -0/+184 |
register coalescer interface: RegisterCoalescing. llvm-svn: 43714 |