summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix for PR 1505 (and 1489). Rewrite X87 registerDale Johannesen2007-07-032-10/+24
| | | | | | | model to include f32 variants. Some factoring improvments forthcoming. llvm-svn: 37847
* Replace ExpandScalarFormalArgs and ExpandScalarCallArgs with the newlyDan Gohman2007-07-021-124/+30
| | | | | | | | refactored getCopyFromParts and getCopyToParts, which are more general. This effectively adds support for lowering illegal by-val vector call arguments. llvm-svn: 37843
* Teach GetNegatedExpression to negate 0-B to B in UnsafeFPMath mode, andDan Gohman2007-07-021-11/+14
| | | | | | | | | | visitFSUB to fold 0-B to -B in UnsafeFPMath mode. Also change visitFNEG to use isNegatibleForFree/GetNegatedExpression instead of doing a subset of the same thing manually. This fixes test/CodeGen/X86/negative-sin.ll. llvm-svn: 37842
* Only do FNEG xform when the vector type is a floating point type.Evan Cheng2007-06-291-7/+9
| | | | llvm-svn: 37818
* Remove unused variables.David Greene2007-06-291-3/+0
| | | | llvm-svn: 37816
* Fix a vector FP constant CSE bug.Evan Cheng2007-06-291-5/+10
| | | | llvm-svn: 37814
* Remove unnecessary attributions in comments.David Greene2007-06-292-3/+3
| | | | llvm-svn: 37799
* Fix reference to cached end iterator invalidated by an erase operation.David Greene2007-06-291-1/+3
| | | | | | Uncovered by _GLIBCXX_DEBUG. llvm-svn: 37795
* Remove the "special tie breaker" because it resulted in inconsistentDavid Greene2007-06-291-10/+12
| | | | | | | ordering and thus violated the strict weak ordering requirement of priority_queue. Uncovered by _GLIBCXX_DEBUG. llvm-svn: 37794
* Fix misue of iterator pointing to erased object. Uncovered byDavid Greene2007-06-292-7/+8
| | | | | | _GLIBCXX_DEBUG. llvm-svn: 37793
* Fix an assertion failure in legalizing bitcast operators on targets whereDan Gohman2007-06-291-23/+15
| | | | | | vectors are split down to single elements as part of legalization. llvm-svn: 37785
* Add new TargetLowering code to provide the final register type that anDan Gohman2007-06-282-449/+351
| | | | | | | | | | | | illegal value type will be transformed to, for code that needs the register type after all transformations instead of just after the first transformation. Factor out the code that uses this information to do copy-from-regs and copy-to-regs for various purposes into separate functions so that they are done consistently. llvm-svn: 37781
* If a livein is not used in the block. It's live through.Evan Cheng2007-06-271-5/+8
| | | | llvm-svn: 37764
* Partial fix for PR1502: If a EH register is needed in a successor of landing ↵Evan Cheng2007-06-271-11/+34
| | | | | | pad, add it as livein to all the blocks in the paths between the landing pad and the specified block. llvm-svn: 37763
* Rename ("shrinkify") MVT::isExtendedValueType to MVT::isExtendedVT.Dan Gohman2007-06-272-2/+2
| | | | llvm-svn: 37758
* Use getVectorTypeBreakdown in FunctionLoweringInfo::CreateRegForValueDan Gohman2007-06-271-44/+11
| | | | | | | to compute the number and type of registers needed for vector values instead of computing it manually. This fixes PR1529. llvm-svn: 37755
* Make the comment for ScalarizeVectorOp mention that it is only for useDan Gohman2007-06-271-4/+6
| | | | | | with single-element vectors. llvm-svn: 37752
* ok, this is something of a dirty hack, but it seems to work. (fixes e.g.Duraid Madina2007-06-271-2/+16
| | | | | | the SPASS miscompilation) llvm-svn: 37750
* ok, this much doesn't seem to bork anythingDuraid Madina2007-06-271-25/+48
| | | | llvm-svn: 37749
* revert evan's fixes (and my doofusness) since they had a huge codeDuraid Madina2007-06-271-63/+31
| | | | | | quality hit. will look at this soon. llvm-svn: 37748
* pull evan's fixes - should help the nightly tester (but there are stillDuraid Madina2007-06-271-48/+63
| | | | | | some issues) llvm-svn: 37747
* Replace std::set with SmallPtrSet.Evan Cheng2007-06-271-3/+5
| | | | llvm-svn: 37746
* Fix an obvious bug. Old code only worked for the entry block.Evan Cheng2007-06-271-3/+4
| | | | llvm-svn: 37743
* Correctly handle implcit def / use operands.Evan Cheng2007-06-261-52/+64
| | | | llvm-svn: 37740
* Properly handle kills of a physical register which has sub-registers that ↵Evan Cheng2007-06-261-13/+73
| | | | | | are read by later instructions. llvm-svn: 37739
* tidy this file up a bitDuraid Madina2007-06-261-54/+82
| | | | llvm-svn: 37725
* A bunch of fixes to the BigBlock allocator improve compile-time by ~20%Duraid Madina2007-06-251-72/+65
| | | | | | | | | | and code quality by ~2% on my tests. A big thank you to Roman Levenstein for this patch! See http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070618/050717.html for more details. llvm-svn: 37724
* Generalize MVT::ValueType and associated functions to be able to representDan Gohman2007-06-255-963/+742
| | | | | | | | | | | | | | | extended vector types. Remove the special SDNode opcodes used for pre-legalize vector operations, and the special MVT::Vector type used with them. Adjust lowering and legalize to work with the normal SDNode kinds instead, and to use the normal MVT functions to work with vector types instead of using the two special operands that the pre-legalize nodes held. This allows pre-legalize and post-legalize DAGs, and the code that operates on them, to be more consistent. Pre-legalize vector operators can be handled more consistently with scalar operators. And, -view-dag-combine1-dags and -view-legalize-dags now look prettier for vector code. llvm-svn: 37719
* Move ComputeMaskedBits, MaskedValueIsZero, and ComputeNumSignBits fromDan Gohman2007-06-225-581/+582
| | | | | | | | | TargetLowering to SelectionDAG so that they have more convenient access to the current DAG, in preparation for the ValueType routines being changed from standalone functions to members of SelectionDAG for the pre-legalize vector type changes. llvm-svn: 37704
* check in the BigBlock local register allocatorDuraid Madina2007-06-221-0/+852
| | | | llvm-svn: 37703
* std::set is really really terrible. Switch to SmallPtrSet to reduce compile ↵Evan Cheng2007-06-221-4/+4
| | | | | | time. For Duraid's example. The overall isel time is reduced from 0.6255 sec to 0.1876 sec. llvm-svn: 37701
* Tidy up ValueType names in comments.Dan Gohman2007-06-212-5/+5
| | | | llvm-svn: 37688
* Rename TargetLowering::getNumElements and friends toDan Gohman2007-06-212-19/+19
| | | | | | | TargetLowering::getNumRegisters and similar, to avoid confusion with the actual number of elements for vector types. llvm-svn: 37687
* Xforms:Evan Cheng2007-06-211-0/+64
| | | | | | | (add (select cc, 0, c), x) -> (select cc, x, (add, x, c)) (sub x, (select cc, 0, c)) -> (select cc, x, (sub, x, c)) llvm-svn: 37685
* Avoid if-converting simple block that ends with unconditional branch or ↵Evan Cheng2007-06-191-1/+4
| | | | | | fallthrough unless it branches / falls to the 'false' block. Not profitable, may end up increasing code size. llvm-svn: 37660
* Pass a SelectionDAG into SDNode::dump everywhere it's used, in preprationDan Gohman2007-06-193-7/+7
| | | | | | | for needing the DAG node to print pre-legalize extended value types, and to get better debug messages with target-specific nodes. llvm-svn: 37656
* document and hide two options.Chris Lattner2007-06-191-2/+5
| | | | llvm-svn: 37651
* Replace M_REMATERIALIZIBLE and the newly-added isOtherReMaterializableLoadDan Gohman2007-06-192-8/+6
| | | | | | | | | | with a general target hook to identify rematerializable instructions. Some instructions are only rematerializable with specific operands, such as loads from constant pools, while others are always rematerializable. This hook allows both to be identified as being rematerializable with the same mechanism. llvm-svn: 37644
* Replace TargetInstrInfo::CanBeDuplicated() with a M_NOT_DUPLICABLE bit.Evan Cheng2007-06-191-2/+2
| | | | llvm-svn: 37643
* add isVarArg to CCStateChris Lattner2007-06-191-2/+3
| | | | llvm-svn: 37640
* Fix some fragile code wrt CFG edge updating.Evan Cheng2007-06-181-74/+39
| | | | llvm-svn: 37634
* Move CorrectExtraCFGEdges() from BranchFolding.cpp to a MachineBasicBlock ↵Evan Cheng2007-06-182-75/+64
| | | | | | method. llvm-svn: 37633
* make ComputeTopDownOrdering significantly faster and use less stack spaceChris Lattner2007-06-181-32/+37
| | | | | | by making it non-recursive llvm-svn: 37629
* Make chain dependencies blue, in addition to being dashed.Dan Gohman2007-06-181-1/+1
| | | | llvm-svn: 37626
* Properly remove duplicate instructions as result of diamond if-conversion. ↵Evan Cheng2007-06-181-103/+176
| | | | | | Other bug fixes. llvm-svn: 37623
* Really turn if-converter loose:Evan Cheng2007-06-161-166/+211
| | | | | | | | | | 1. Consider all possible ifcvt cases at once. No longer restricted to bottom up iterative approach. 2. Sort all possible cases based on a cost function. Perform the most profitable ones first invalidate others that target the same blocks. 3. Fixed a number of bugs related to block duplication. llvm-svn: 37613
* Codegen support (stripped out) for the annotate attribute.Tanya Lattner2007-06-152-0/+7
| | | | llvm-svn: 37608
* Not every predicable block can be safely duplicated.Evan Cheng2007-06-151-8/+35
| | | | llvm-svn: 37607
* Fix CodeGen/X86/inline-asm-x-scalar.ll:test4, by retaining regclass infoChris Lattner2007-06-151-6/+9
| | | | | | for tied register constraints. llvm-svn: 37601
* MachineInstr::isPredicable() is no longer needed.Evan Cheng2007-06-152-10/+5
| | | | llvm-svn: 37599
OpenPOWER on IntegriCloud