summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* CommuteNodesToReducePressure() is now removed.Dan Gohman2009-01-031-1/+0
| | | | llvm-svn: 61612
* Remove the code from the scheduler that commuted two-addressDan Gohman2009-01-032-71/+0
| | | | | | | | | | | | | | instructions to avoid copies, because TwoAddressInstructionPass also does this optimization. The scheduler's version didn't account for live-out values, which resulted in spurious commutes and missed opportunities. Now, TwoAddressInstructionPass handles all the opportunities, instead of just those that the scheduler missed. The result is usually the same, though there are occasional trivial differences resulting from the avoidance of spurious commutes. llvm-svn: 61611
* Factorize (and generalize) the code promoting SELECTDuncan Sands2009-01-013-152/+105
| | | | | | | and BRCOND conditions. Reorder a few methods while there. llvm-svn: 61547
* Remove trailing spaces.Duncan Sands2009-01-012-33/+33
| | | | llvm-svn: 61545
* Fix PR3274: when promoting the condition of a BRCOND node,Duncan Sands2009-01-017-103/+130
| | | | | | | | | | promote from i1 all the way up to the canonical SetCC type. In order to discover an appropriate type to use, pass MVT::Other to getSetCCResultType. In order to be able to do this, change getSetCCResultType to take a type as an argument, not a value (this is also more logical). llvm-svn: 61542
* Get live interval reconstruction several steps closer to working.Owen Anderson2008-12-311-66/+86
| | | | llvm-svn: 61514
* Linux wants the FDE initial location and address range to be forced to 32-bit.Bill Wendling2008-12-291-2/+4
| | | | | | Darwin doesn't. Make this optional for platforms. llvm-svn: 61484
* The FDE initial location and address range data should be free to be 64-bitBill Wendling2008-12-291-2/+2
| | | | | | (quad) on a 64-bit platform. This fixes a problem with EH frames on Darwin. llvm-svn: 61483
* Add braces, as suggested by a gcc warning.Duncan Sands2008-12-291-4/+6
| | | | llvm-svn: 61465
* Teach LeaglizeDAG that i64 mul can be a libcall.Scott Michel2008-12-291-0/+2
| | | | llvm-svn: 61463
* Fix up kill/dead marking in the new live interval reconstruction code.Owen Anderson2008-12-281-6/+18
| | | | llvm-svn: 61460
* Add prototype code for recomputing a live interval's ranges and valnos ↵Owen Anderson2008-12-281-1/+260
| | | | | | through recursive phi construction. llvm-svn: 61458
* Darwin likes for the EH frame to be non-local.Bill Wendling2008-12-241-4/+16
| | | | llvm-svn: 61420
* GCC doesn't emit DW_EH_PE_sdata4 for the FDE encoding on Darwin. I'm not sureBill Wendling2008-12-241-4/+16
| | | | | | about other platforms. llvm-svn: 61415
* Change comments so everybody can understand them, hopefully.Dale Johannesen2008-12-231-2/+2
| | | | llvm-svn: 61405
* Add another permutation where we should get rid of a-a.Dale Johannesen2008-12-231-4/+11
| | | | llvm-svn: 61401
* Restore debug printingAnton Korobeynikov2008-12-231-23/+26
| | | | llvm-svn: 61398
* Sometimes APInt syntax is really ugly... :(Anton Korobeynikov2008-12-231-10/+21
| | | | llvm-svn: 61397
* Indent stuff properlyAnton Korobeynikov2008-12-231-25/+25
| | | | llvm-svn: 61396
* Initial checkin of APInt'ififcation of switch loweringAnton Korobeynikov2008-12-232-127/+126
| | | | llvm-svn: 61395
* Fix typo.Devang Patel2008-12-231-1/+2
| | | | | | Silence unused variable warning. llvm-svn: 61391
* Silience unused warnings.Devang Patel2008-12-232-0/+4
| | | | llvm-svn: 61390
* Clean up the atomic opcodes in SelectionDAG.Dan Gohman2008-12-235-536/+139
| | | | | | | | | | | | | This removes all the _8, _16, _32, and _64 opcodes and replaces each group with an unsuffixed opcode. The MemoryVT field of the AtomicSDNode is now used to carry the size information. In tablegen, the size-specific opcodes are replaced by size-independent opcodes that utilize the ability to compose them with predicates. This shrinks the per-opcode tables and makes the code that handles atomics much more concise. llvm-svn: 61389
* Rename BuildSchedUnits to BuildSchedGraph, and refactor theDan Gohman2008-12-236-14/+24
| | | | | | code in ScheduleDAGSDNodes' BuildSchedGraph into separate functions. llvm-svn: 61376
* Use isTerminator() instead of isBranch()||isReturn() inDan Gohman2008-12-233-5/+4
| | | | | | | | several places. isTerminator() returns true for a superset of cases, and includes things like FP_REG_KILL, which are nither return or branch but aren't safe to move/remat/etc. llvm-svn: 61373
* Avoid an unnecessary call to allnodes_size(), which is linear.Dan Gohman2008-12-231-8/+11
| | | | llvm-svn: 61372
* Minor code simplifications.Dan Gohman2008-12-231-6/+6
| | | | llvm-svn: 61371
* One more permutation of subtracting off a base value.Dale Johannesen2008-12-231-0/+6
| | | | llvm-svn: 61361
* Refactor a bunch of code out of AsmPrinter::EmitGlobalConstant into separateDan Gohman2008-12-221-182/+207
| | | | | | functions. llvm-svn: 61345
* Optimize setDepthDirty and setHeightDirty a little, as they showedDan Gohman2008-12-221-10/+16
| | | | | | up on a profile. llvm-svn: 61344
* Use SmallVector's pop_back_val.Dan Gohman2008-12-201-4/+2
| | | | llvm-svn: 61277
* Use the correct Preds and Succs lists in setHeightDirty()Dan Gohman2008-12-201-4/+4
| | | | | | and setDepthDirty(), respectively. This fixes PR3241. llvm-svn: 61276
* Use ~0u instead of -1u as the special value, to hopefully avoidDan Gohman2008-12-191-20/+20
| | | | | | warnings on compilers that warn about such things. llvm-svn: 61263
* Fix PR3149. If an early clobber def is a physical register and it is tied to ↵Evan Cheng2008-12-192-7/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | an input operand, it effectively extends the live range of the physical register. Currently we do not have a good way to represent this. 172 %ECX<def> = MOV32rr %reg1039<kill> 180 INLINEASM <es:subl $5,$1 sbbl $3,$0>, 10, %EAX<def>, 14, %ECX<earlyclobber,def>, 9, %EAX<kill>, 36, <fi#0>, 1, %reg0, 0, 9, %ECX<kill>, 36, <fi#1>, 1, %reg0, 0 188 %EAX<def> = MOV32rr %EAX<kill> 196 %ECX<def> = MOV32rr %ECX<kill> 204 %ECX<def> = MOV32rr %ECX<kill> 212 %EAX<def> = MOV32rr %EAX<kill> 220 %EAX<def> = MOV32rr %EAX 228 %reg1039<def> = MOV32rr %ECX<kill> The early clobber operand ties ECX input to the ECX def. The live interval of ECX is represented as this: %reg20,inf = [46,47:1)[174,230:0) 0@174-(230) 1@46-(47) The right way to represent this is something like %reg20,inf = [46,47:2)[174,182:1)[181:230:0) 0@174-(182) 1@181-230 @2@46-(47) Of course that won't work since that means overlapping live ranges defined by two val#. The workaround for now is to add a bit to val# which says the val# is redefined by a early clobber def somewhere. This prevents the move at 228 from being optimized away by SimpleRegisterCoalescing::AdjustCopiesBackFrom. llvm-svn: 61259
* Fix some release-assert warningsChris Lattner2008-12-191-4/+4
| | | | llvm-svn: 61244
* Fix bug 3202.Rafael Espindola2008-12-192-2/+3
| | | | | | | The EH_frame and .eh symbols are now private, except for darwin9 and earlier. The patch also fixes the definition of PrivateGlobalPrefix on pcc linux. llvm-svn: 61242
* Perform this loop only when the -debug flag is specified.Bill Wendling2008-12-191-5/+7
| | | | llvm-svn: 61238
* Initialize the ImplicitDefed member, to avoid getting staleDan Gohman2008-12-191-0/+1
| | | | | | data from a previous block. llvm-svn: 61237
* Teach LowerSubregs to preserve kill/dead information when loweringDan Gohman2008-12-181-1/+63
| | | | | | subreg instructions. llvm-svn: 61220
* Make LowerSubregs' debug output for EXTRACT_SUBREG consistent withDan Gohman2008-12-181-1/+6
| | | | | | that of INSERT_SUBREG and SUBREG_TO_REG. llvm-svn: 61218
* Fix a copy+pasto in an assertion message.Dan Gohman2008-12-181-1/+1
| | | | llvm-svn: 61217
* Fix indentation level.Dan Gohman2008-12-181-33/+33
| | | | llvm-svn: 61216
* Print subreg information in MachineInstr::dump.Dan Gohman2008-12-181-1/+5
| | | | llvm-svn: 61213
* Added support for vector widening.Mon P Wang2008-12-186-43/+1238
| | | | llvm-svn: 61209
* Give MachineLICM a name, for -time-passes etc.Dan Gohman2008-12-181-0/+2
| | | | llvm-svn: 61184
* Move post-RA scheduling before branch folding for now, because branchDan Gohman2008-12-181-7/+7
| | | | | | | folding's tail merging doesn't currently preserve liveness information which post-RA scheduling requires. llvm-svn: 61183
* Re-apply r61158 in a form that no longer breaks tests.Owen Anderson2008-12-181-36/+61
| | | | llvm-svn: 61182
* Revert r61158 for now, as it caused some test failures.Owen Anderson2008-12-171-46/+36
| | | | llvm-svn: 61159
* Fix miscompilations caused by renumbering, and enable it as part of prealloc ↵Owen Anderson2008-12-171-36/+46
| | | | | | splitting. llvm-svn: 61158
* Fix expansion of vsetcc to set the high bit for true instead of 1.Mon P Wang2008-12-171-4/+6
| | | | llvm-svn: 61129
OpenPOWER on IntegriCloud