summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* teach dag combiner how to eliminate MERGE_VALUES nodes.Chris Lattner2008-02-131-0/+14
| | | | llvm-svn: 47052
* Support legalizing insert_vector_elt on targets where the elementNate Begeman2008-02-131-27/+40
| | | | | | type is not legal. llvm-svn: 47048
* Initial support for copy elimination by commuting its definition MI.Evan Cheng2008-02-132-17/+243
| | | | | | | | | | | | | | | | | | | | | 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
* - Added removeValNo() to remove all live ranges of a particular value#.Evan Cheng2008-02-131-7/+61
| | | | | | - removeRange() can now update value# information. llvm-svn: 47044
* commuteInstr() can now commute non-ssa machine instrs.Evan Cheng2008-02-131-0/+9
| | | | llvm-svn: 47043
* Added debugging routine dumpUses.Evan Cheng2008-02-131-0/+8
| | | | llvm-svn: 47042
* Convert SelectionDAG::ComputeMaskedBits to use APInt instead of uint64_t.Dan Gohman2008-02-132-89/+119
| | | | | | | Add an overload that supports the uint64_t interface for use by clients that haven't been updated yet. llvm-svn: 47039
* Generalize getCopyFromParts and getCopyToParts toDuncan Sands2008-02-121-113/+215
| | | | | | | | | | | | handle arbitrary precision integers and any number of parts. For example, on a 32 bit machine an i50 corresponds to two i32 parts. getCopyToParts will extend the i50 to an i64 then write half of the i64 to each part; getCopyFromParts will combine the two i32 parts into an i64 then truncate the result to i50. llvm-svn: 47024
* Generalize the handling of call and return arguments,Duncan Sands2008-02-111-136/+85
| | | | | | | in preparation for apint support. These changes are intended to have no functional effect. llvm-svn: 46967
* From Chris' review: use isa instead of explicitly using classof.Dan Gohman2008-02-111-1/+1
| | | | llvm-svn: 46964
* From Chris' review: minor corrections in comments.Dan Gohman2008-02-111-2/+3
| | | | llvm-svn: 46963
* From Chris' review: use cast instead of dyn_cast with an assert.Dan Gohman2008-02-111-8/+4
| | | | llvm-svn: 46962
* From Chris' review: fix 80 column violationsDan Gohman2008-02-111-5/+10
| | | | llvm-svn: 46961
* Added "Profile" method to APFloat for use with FoldingSet.Ted Kremenek2008-02-111-3/+3
| | | | | | | | | | Added member template "Add" to FoldingSetNodeID that allows "adding" arbitrary objects to a profile via dispatch to FoldingSetTrait<T>::Profile(). Removed FoldingSetNodeID::AddAPFloat and FoldingSetNodeID::APInt, as their functionality is now replaced using the above mentioned member template. llvm-svn: 46957
* Add a isBigEndian method to complement isLittleEndian.Duncan Sands2008-02-113-11/+11
| | | | llvm-svn: 46954
* Determine whether a spill kills the register it's spilling before insertion ↵Evan Cheng2008-02-111-8/+3
| | | | | | rather than trying to undo the kill marker afterwards. llvm-svn: 46953
* Rename MRegisterInfo to TargetRegisterInfo.Dan Gohman2008-02-1034-417/+422
| | | | llvm-svn: 46930
* Add truncate and AssertZext result expansion.Duncan Sands2008-02-103-0/+33
| | | | llvm-svn: 46926
* Return "(c1 + c2)" instead of yet another ADD node (which made this aBill Wendling2008-02-101-1/+1
| | | | | | no-op). llvm-svn: 46922
* add anoteChris Lattner2008-02-101-0/+7
| | | | llvm-svn: 46918
* Remove unused hidden option.Evan Cheng2008-02-091-6/+1
| | | | llvm-svn: 46903
* Change ConstantSDNode to store an APInt instead of a uint64_t, andDan Gohman2008-02-081-3/+10
| | | | | | begin adding some methods to use it this way. llvm-svn: 46899
* Forgot these files.Evan Cheng2008-02-083-4/+4
| | | | llvm-svn: 46896
* Also print alignment.Evan Cheng2008-02-081-1/+1
| | | | llvm-svn: 46895
* Avoid needlessly casting away const qualifiers.Dan Gohman2008-02-081-2/+2
| | | | llvm-svn: 46876
* Remove remnant of load folding in local register allocator. Patch by Holger ↵Evan Cheng2008-02-071-7/+1
| | | | | | Schurig. llvm-svn: 46861
* Follow Chris' suggestion; change the PseudoSourceValue accessorsDan Gohman2008-02-073-24/+24
| | | | | | | to return pointers instead of references, since this is always what is needed. llvm-svn: 46857
* Don't abort if a MemOperand is missing a SourceValue; just print itDan Gohman2008-02-071-9/+13
| | | | | | | as <unknown>. And make some minor adjustments to the MemOperand dump format. llvm-svn: 46853
* Don't make up new directives. (".set_foobar")Nick Lewycky2008-02-071-1/+1
| | | | llvm-svn: 46848
* Re-apply the memory operand changes, with a fix for the staticDan Gohman2008-02-066-50/+243
| | | | | | | | initializer problem, a minor tweak to the way the DAGISelEmitter finds load/store nodes, and a renaming of the new PseudoSourceValue objects. llvm-svn: 46827
* Fix a number of local register allocator issues: PR1609.Evan Cheng2008-02-061-14/+16
| | | | llvm-svn: 46821
* RegAllocaLocal still *requires* LiveVariables since it runs PHIElimination, ↵Evan Cheng2008-02-061-1/+3
| | | | | | followed by TwoAddress which requires LiveVariables. We cannot run LiveVariables on non-SSA code. llvm-svn: 46813
* Fix PR1975: dag isel emitter produces patterns that isel wrong flag result.Evan Cheng2008-02-051-4/+0
| | | | llvm-svn: 46776
* If a vr is already marked alive in a bb, then it has PHI uses that are ↵Evan Cheng2008-02-051-2/+3
| | | | | | visited earlier, then it is not killed in the def block (i.e. not dead). llvm-svn: 46763
* Typo.Evan Cheng2008-02-041-1/+1
| | | | llvm-svn: 46725
* Dwarf requires variable entries to be in the source order. Right now, since ↵Evan Cheng2008-02-041-4/+7
| | | | | | we are recording variable information at isel time this means parameters would appear in the reverse order. The short term fix is to issue recordVariable() at asm printing time instead. llvm-svn: 46724
* I don't see how NodeUpdated can be called with aDuncan Sands2008-02-041-5/+10
| | | | | | | | | | | | | | | | | | | | ReadyToProcess node - add an assertion to check this. Add an assertion to NodeDeleted that checks that processed/ready nodes are indeed not deleted. It is because they are never deleted that none of the maps can have a deleted node as the source of a mapping. It does however seem to be possible in theory to have a deleted value as the target of a mapping, however this has not yet been spotted in the wild. Still mulling on what to do about this. [The theoretical situation is this: a node A is expanded/promoted/whatever to a newly created node B. Thus A->B is added to a map. When the subtree rooted at B is legalized it is conceivable that B is deleted due to RAUW on a node somewhere above it]. llvm-svn: 46705
* Fix typoChris Lattner2008-02-031-1/+1
| | | | llvm-svn: 46682
* handle the case where a node can become ready to processChris Lattner2008-02-032-3/+4
| | | | | | multiple times due to a RAUW. llvm-svn: 46680
* Use the new infrastructure for listening to node updates to Chris Lattner2008-02-032-31/+34
| | | | | | | | keep the LegalizeTypes node flags up to date when doing a RAUW. This fixes a nasty bug that Duncan ran into and makes the previous (nonbuggy case) more efficent. llvm-svn: 46679
* the world doesn't need my debugging code.Chris Lattner2008-02-031-1/+0
| | | | llvm-svn: 46678
* Change the 'global modification' APIs in SelectionDAG to take a newChris Lattner2008-02-032-162/+209
| | | | | | | | | | DAGUpdateListener object pointer instead of just returning a vector of deleted nodes. This makes the interfaces more efficient (no more allocating a vector [at least a malloc], filling it in, then walking it) and more clean. This also allows the client to be notified of nodes that are *changed* but not deleted. llvm-svn: 46677
* Generalize the SDOperand->SDOperand form of Chris Lattner2008-02-031-17/+16
| | | | | | | | | SelectionDAG::ReplaceAllUsesWith to handle replacement of an SDOperand with *any* sdoperand, not just one for a node with a single result. Note that this has a horrible FIXME'd hack in it to work around PR1975. This should be removed when PR1975 is fixed. llvm-svn: 46674
* add a -view-legalize-types-dags option, for viewing the dags going into ↵Chris Lattner2008-02-031-0/+13
| | | | | | legalize types. llvm-svn: 46672
* Get rid of the annoying blank lines before labels.Evan Cheng2008-02-021-3/+3
| | | | llvm-svn: 46667
* SDIsel processes llvm.dbg.declare by recording the variable debug ↵Evan Cheng2008-02-027-16/+51
| | | | | | | | | information descriptor and its corresponding stack frame index in MachineModuleInfo. This only works if the local variable is "homed" in the stack frame. It does not work for byval parameter, etc. Added ISD::DECLARE node type to represent llvm.dbg.declare intrinsic. Now the intrinsic calls are lowered into a SDNode and lives on through out the codegen passes. For now, since all the debugging information recording is done at isel time, when a ISD::DECLARE node is selected, it has the side effect of also recording the variable. This is a short term solution that should be fixed in time. llvm-svn: 46659
* Remove the nasty LABEL hack with a much less evil one. Now ↵Evan Cheng2008-02-015-35/+24
| | | | | | llvm.dbg.func.start implies a stoppoint is set. SelectionDAGISel records a new source line but does not create a ISD::LABEL node for this special stoppoint. Asm printer will magically print this label. This ensures nothing is emitted before. llvm-svn: 46635
* Rename RecordLabel to RecordSourceLine because that's what it is doing.Evan Cheng2008-02-012-4/+4
| | | | llvm-svn: 46628
* Revert 46556 and 46585. Dan please fix the PseudoSourceValue problem and ↵Evan Cheng2008-01-316-223/+48
| | | | | | re-commit. llvm-svn: 46623
* Add a comment for a nasty short term hack.Evan Cheng2008-01-311-0/+4
| | | | llvm-svn: 46610
OpenPOWER on IntegriCloud