summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/OptimizeExts.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Merge the OptimizeExts and OptimizeCmps passes into one PeepholeOptimizerBill Wendling2010-08-091-221/+0
| | | | | | | pass. This pass should expand with all of the small, fine-grained optimization passes to reduce compile time and increase happiment. llvm-svn: 110627
* Reapply r110396, with fixes to appease the Linux buildbot gods.Owen Anderson2010-08-061-1/+1
| | | | llvm-svn: 110460
* Revert r110396 to fix buildbots.Owen Anderson2010-08-061-1/+1
| | | | llvm-svn: 110410
* Don't use PassInfo* as a type identifier for passes. Instead, use the ↵Owen Anderson2010-08-051-1/+1
| | | | | | | | address of the static ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396
* Early exit and reduce indentation. No functionality change.Bill Wendling2010-08-021-105/+106
| | | | llvm-svn: 110069
* Fix batch of converting RegisterPass<> to INTIALIZE_PASS().Owen Anderson2010-07-211-2/+2
| | | | llvm-svn: 109045
* Convert EXTRACT_SUBREG to COPY when emitting machine instrs.Jakob Stoklund Olesen2010-07-081-4/+4
| | | | | | | | | 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. llvm-svn: 107879
* It's an error to translate this:Bill Wendling2010-06-091-0/+20
| | | | | | | | | | | | | | | | | | | | %reg1025 = <sext> %reg1024 ... %reg1026 = SUBREG_TO_REG 0, %reg1024, 4 into this: %reg1025 = <sext> %reg1024 ... %reg1027 = EXTRACT_SUBREG %reg1025, 4 %reg1026 = SUBREG_TO_REG 0, %reg1027, 4 The problem here is that SUBREG_TO_REG is there to assert that an implicit zext occurs. It doesn't insert a zext instruction. If we allow the EXTRACT_SUBREG here, it will give us the value after the <sext>, not the original value of %reg1024 before <sext>. llvm-svn: 105741
* Handle DEBUG_VALUE in this pass.Dale Johannesen2010-03-261-11/+14
| | | | llvm-svn: 99573
* move target-independent opcodes out of TargetInstrInfoChris Lattner2010-02-091-3/+3
| | | | | | | | | 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. llvm-svn: 95687
* Do not extend extension results beyond the use of a PHI instruction at the ↵Evan Cheng2010-01-191-0/+12
| | | | | | start of a use block. A PHI use is expected to kill its source values. llvm-svn: 93895
* Commit some changes I had managed to lose last night while refactoring the ↵Evan Cheng2010-01-131-1/+6
| | | | | | | | code. Avoid change use of PHI instructions because it's not legal to insert any instructions before them. This fixes PR6027. llvm-svn: 93335
* Add comment; refactor; avoid pulling in DT if it's not used.Evan Cheng2010-01-131-79/+110
| | | | llvm-svn: 93306
* Add a quick pass to optimize sign / zero extension instructions. For targets ↵Evan Cheng2010-01-131-0/+149
where the pre-extension values are available in the subreg of the result of the extension, replace the uses of the pre-extension value with the result + extract_subreg. For now, this pass is fairly conservative. It only perform the replacement when both the pre- and post- extension values are used in the block. It will miss cases where the post-extension values are live, but not used. llvm-svn: 93278
OpenPOWER on IntegriCloud