summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Add ATTRIBUTE_UNUSED to methods that are not supposed to be used.Argyrios Kyrtzidis2010-08-145-9/+10
| | | | llvm-svn: 111082
* improve indentationChris Lattner2010-08-141-19/+18
| | | | llvm-svn: 111073
* T2I_rbin_irs rr variant is for disassembly only, so don't provide a pattern.Bob Wilson2010-08-141-1/+1
| | | | llvm-svn: 111068
* Update CMake build.Ted Kremenek2010-08-141-1/+1
| | | | llvm-svn: 111063
* LoopSimplify shouldn't split loop backedges that use indirectbr. PR7867.Dan Gohman2010-08-141-0/+5
| | | | llvm-svn: 111061
* Teach SimplifyCFG how to simplify indirectbr instructions.Dan Gohman2010-08-143-16/+45
| | | | | | | | | | | - Eliminate redundant successors. - Convert an indirectbr with one successor into a direct branch. Also, generalize SimplifyCFG to be able to be run on a function entry block. It knows quite a few simplifications which are applicable to the entry block, and it only needs a few checks to avoid trouble with the entry block. llvm-svn: 111060
* Add a local stack object block allocation pass. This is still anJim Grosbach2010-08-144-0/+218
| | | | | | | | | | | | | | | | | | experimental pass that allocates locals relative to one another before register allocation and then assigns them to actual stack slots as a block later in PEI. This will eventually allow targets with limited index offset range to allocate additional base registers (not just FP and SP) to more efficiently reference locals, as well as handle situations where locals cannot be referenced via SP or FP at all (dynamic stack realignment together with variable sized objects, for example). It's currently incomplete and almost certainly buggy. Work in progress. Disabled by default and gated via the -enable-local-stack-alloc command line option. rdar://8277890 llvm-svn: 111059
* Add a lint check for an indirectbr destination which has notDan Gohman2010-08-131-0/+6
| | | | | | had its address taken. llvm-svn: 111058
* Add a Thumb2 t2RSBrr instruction for disassembly only.Bob Wilson2010-08-131-5/+18
| | | | | | This fixes another part of PR7792. llvm-svn: 111057
* Clean up the Spiller.h interface.Jakob Stoklund Olesen2010-08-136-44/+31
| | | | | | | | | The earliestStart argument is entirely specific to linear scan allocation, and can be easily calculated by RegAllocLinearScan. Replace std::vector with SmallVector. llvm-svn: 111055
* Temporarily disable tail calls on ARM to work around some linker problems.Bob Wilson2010-08-131-0/+9
| | | | llvm-svn: 111050
* Move the Thumb2 SSAT and USAT optional shift operator out of theBob Wilson2010-08-132-39/+21
| | | | | | instruction opcode. This fixes part of PR7792. llvm-svn: 111047
* Various optimizations. Don't compare two loops' depthsDan Gohman2010-08-131-18/+26
| | | | | | | when they are the same loop. Don't compare two instructions' loop depths when they are in the same block. llvm-svn: 111045
* Implement splitting inside a single block.Jakob Stoklund Olesen2010-08-133-5/+95
| | | | | | | | When a live range is contained a single block, we can split it around instruction clusters. The current approach is very primitive, splitting before and after the largest gap between uses. llvm-svn: 111043
* Fix LSR's ExtractImmediate and ExtractSymbol to avoid callingDan Gohman2010-08-131-4/+8
| | | | | | | ScalarEvolution::getAddExpr, which can be pretty expensive, when nothing has changed, which is pretty common. llvm-svn: 111042
* Add comments to some pattern fragments in x86Bruno Cardoso Lopes2010-08-131-4/+10
| | | | llvm-svn: 111041
* When testing whether one loop contains another, test this directlyDan Gohman2010-08-131-2/+2
| | | | | | rather than testing whether the loop contains the other's header. llvm-svn: 111039
* Add a const.Dan Gohman2010-08-131-1/+1
| | | | llvm-svn: 111038
* When creating a symmetric SCEV with a constant operand, putDan Gohman2010-08-131-4/+4
| | | | | | | the constant operand on the left, as that's where ScalarEvolution will end up canonicalizing to. llvm-svn: 111037
* An add recurrence is loop-invariant in any loop inside of itsDan Gohman2010-08-131-0/+4
| | | | | | | associated loop. This avoids potentially expensive traversals of the add recurrence's operands. llvm-svn: 111034
* Refactor the code for disassembling Thumb2 saturate instructions along theBob Wilson2010-08-131-56/+39
| | | | | | same lines as the change I made for ARM saturate instructions. llvm-svn: 111029
* Revert 110491. While not wrong, it was based on aDale Johannesen2010-08-131-13/+8
| | | | | | misanalysis and is undesirable. llvm-svn: 111028
* Fix comment to reflect code, and remove an unused argumentBruno Cardoso Lopes2010-08-131-4/+3
| | | | llvm-svn: 111022
* Improve comment to make explicit why not to touch this could before JIT goes MCBruno Cardoso Lopes2010-08-131-1/+6
| | | | llvm-svn: 111021
* tidy up whitespace a bitJim Grosbach2010-08-131-7/+6
| | | | llvm-svn: 111019
* Revert last patch and r110954 as I meant to.Eric Christopher2010-08-132-24/+24
| | | | llvm-svn: 111001
* Revert r110954 for now, pseudo instructions can't make it through to the JIT.Eric Christopher2010-08-131-0/+1
| | | | llvm-svn: 111000
* Let LiveInterval::addRange extend existing ranges, it will verify that valueJakob Stoklund Olesen2010-08-131-5/+2
| | | | | | | | | | numbers match. The old check could accidentally leave holes in openli. Also let useIntv add all ranges for the phi-def value inserted by enterIntvAtEnd. This works as long at the value mapping is established in enterIntvAtEnd. llvm-svn: 110995
* Remember to actually update SplitAnalysis statistics now that we have a fancyJakob Stoklund Olesen2010-08-131-0/+1
| | | | | | function to do it. llvm-svn: 110994
* Reapply this transformation now that it is passing the external test which ↵Nate Begeman2010-08-131-64/+123
| | | | | | it previously failed. llvm-svn: 110987
* Move some code from Verifier into SVI::isValidOperands. This allows us to ↵Nate Begeman2010-08-132-23/+17
| | | | | | catch bad shufflevector operations when they are created, rather than waiting for someone to notice later on. llvm-svn: 110986
* Trim #includes.Dan Gohman2010-08-122-7/+0
| | | | llvm-svn: 110983
* Tidy up whitespace.Dan Gohman2010-08-121-85/+87
| | | | llvm-svn: 110982
* Use .empty() instead of .size().Dan Gohman2010-08-121-1/+1
| | | | llvm-svn: 110981
* Handle an empty dupli.Jakob Stoklund Olesen2010-08-121-2/+8
| | | | | | | | | | | | | | | | | | | | This can happen if the original interval has been broken into two disconnected parts. Ideally, we should be able to detect when the graph is disconnected and create separate intervals, but that code is not implemented yet. Example: Two basic blocks are both branching to a loop header. Our interval is defined in both basic blocks, and live into the loop along both edges. We decide to split the interval around the loop. The interval is split into an inside part and an outside part. The outside part now has two disconnected segments, one in each basic block. If we later decide to split the outside interval into single blocks, we get one interval per basic block and an empty dupli for the remainder. llvm-svn: 110976
* Update the SplitAnalysis statistics as uses are moved from curli to the newJakob Stoklund Olesen2010-08-122-11/+44
| | | | | | | split intervals. THis means the analysis can be used for multiple splits as long as curli doesn't shrink. llvm-svn: 110975
* fix PR7876: If ipsccp decides that a function's address is takenChris Lattner2010-08-121-4/+15
| | | | | | before it rewrites the code, we need to use that in the post-rewrite pass. llvm-svn: 110962
* Some small clean-up: use of pseudo instructionsBruno Cardoso Lopes2010-08-121-24/+23
| | | | llvm-svn: 110954
* Cleaned up the for-disassembly-only entries in the arm instruction table so thatJohnny Chen2010-08-126-48/+67
| | | | | | | the memory barrier variants (other than 'SY' full system domain read and write) are treated as one instruction with option operand. llvm-svn: 110951
* Also recompute HasPHIKill flags in LiveInterval::RenumberValues.Jakob Stoklund Olesen2010-08-122-2/+23
| | | | | | | If a phi-def value were removed from the interval, the phi-kill flags are no longer valid. llvm-svn: 110949
* Make sure ARM constant island pass does not break up an IT block. If the ↵Evan Cheng2010-08-121-3/+20
| | | | | | split point is in the middle of an IT block, it should move it up to just above the IT instruction. rdar://8302637 llvm-svn: 110947
* - Teach SSEDomainFix to switch between different levels of AVX instructions. ↵Bruno Cardoso Lopes2010-08-122-27/+89
| | | | | | | | | | Here we guess that AVX will have domain issues, so just implement them for consistency and in the future we remove if it's unnecessary. - Make foldMemoryOperandImpl aware of 256-bit zero vectors folding and support the 128-bit counterparts of AVX too. - Make sure MOV[AU]PS instructions are only selected when SSE1 is enabled, and duplicate the patterns to match AVX. - Add a testcase for a simple 128-bit zero vector creation. llvm-svn: 110946
* Remove trailing whitespace.Jakob Stoklund Olesen2010-08-122-47/+47
| | | | llvm-svn: 110944
* Clean up debug output.Jakob Stoklund Olesen2010-08-122-34/+32
| | | | llvm-svn: 110940
* Define AVX 128-bit pattern versions of SET0PS/PD.Bruno Cardoso Lopes2010-08-122-6/+18
| | | | llvm-svn: 110937
* Implement single block splitting.Jakob Stoklund Olesen2010-08-123-5/+158
| | | | | | | | | | Before spilling a live range, we split it into a separate range for each basic block where it is used. That way we only get one reload per basic block if the new smaller ranges can allocate to a register. This type of splitting is already present in the standard spiller. llvm-svn: 110934
* Optimize ScalarEvolution::getAddExpr's operand factoring code byDan Gohman2010-08-121-4/+7
| | | | | | | | having it finish processing all of the muliply operands before starting the whole getAddExpr process over again, instead of immediately after the first simplification. llvm-svn: 110916
* Hoist some loop-invariant code out of a hot loop.Dan Gohman2010-08-121-2/+4
| | | | llvm-svn: 110915
* Optimize ScalarEvolution::getAddExpr's duplicate operand detectionDan Gohman2010-08-121-3/+7
| | | | | | | | by having it finish processing the whole operand list before starting the whole getAddExpr process over again, instead of immediately after the first duplicate is found. llvm-svn: 110914
* Add a 'normalize' method to the Triple class, which takes a mucked upDuncan Sands2010-08-121-63/+196
| | | | | | | | | | | | | | | target triple and straightens it out. This does less than gcc's script config.sub, for example it turns i386-mingw32 into i386--mingw32 not i386-pc-mingw32, but it does a decent job of turning funky triples into something that the rest of the Triple class can understand. The plan is to use this to canonicalize triple's when they are first provided by users, and have the rest of LLVM only deal with canonical triples. Once this is done the special case workarounds in the Triple constructor can be removed, making the class more regular and easier to use. The comments and unittests for the Triple class are already adjusted in this patch appropriately for this brave new world of increased uniformity. llvm-svn: 110909
OpenPOWER on IntegriCloud