summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* Temporarily revert 110737 and 110734, they were causing failuresEric Christopher2010-08-121-141/+64
| | | | | | in an external testsuite. llvm-svn: 110905
* Fix comment orderBruno Cardoso Lopes2010-08-121-1/+1
| | | | llvm-svn: 110898
* Begin to support some vector operations for AVX 256-bit intructions. The longBruno Cardoso Lopes2010-08-123-19/+42
| | | | | | | | | term goal here is to be able to match enough of vector_shuffle and build_vector so all avx intrinsics which aren't mapped to their own built-ins but to shufflevector calls can be codegen'd. This is the first (baby) step, support building zeroed vectors. llvm-svn: 110897
* The autogened decoder was confusing the ARM STRBT for ARM USAT, because the .tdJohnny Chen2010-08-122-0/+9
| | | | | | | | | | entry for ARM STRBT is actually a super-instruction for A8.6.199 STRBT A1 & A2. Recover by looking for ARM:USAT encoding pattern before delegating to the auto- gened decoder. Added a "usat" test case to arm-tests.txt. llvm-svn: 110894
* MC/X86/AsmParser: Give an explicit error message when we reject an instructionDaniel Dunbar2010-08-121-2/+31
| | | | | | because it could have an ambiguous suffix. llvm-svn: 110890
* MC/AsmParser: Push the burdon of emitting diagnostics about unmatchedDaniel Dunbar2010-08-123-22/+30
| | | | | | instructions onto the target specific parser, which can do a better job. llvm-svn: 110889
* tblgen/AsmMatcher: Always emit the match function as 'MatchInstructionImpl',Daniel Dunbar2010-08-122-3/+8
| | | | | | target specific parsers can adapt the TargetAsmParser to this. llvm-svn: 110888
* Changed the format of DMBsy, DSBsy, and friends from Pseudo to MiscFrm.Johnny Chen2010-08-113-9/+6
| | | | | | Added two test cases to arm-tests.txt. llvm-svn: 110880
* Even if a variable has constant value all the time, it is still a variable ↵Devang Patel2010-08-111-1/+1
| | | | | | | | in gdb's eyes. Tested by scope.exp in gdb testsuite. llvm-svn: 110876
* Move the ARM SSAT and USAT optional shift amount operand out of theBob Wilson2010-08-117-44/+75
| | | | | | instruction opcode. This also fixes part of PR7792. llvm-svn: 110875
* Fix <rdar://problem/8282498> even if it doesn't reproduce on trunk.Jakob Stoklund Olesen2010-08-111-0/+5
| | | | | | | | | | | | | | When a register is defined by a partial load: %reg1234:sub_32 = MOV32mr <fi#-1>; GR64:%reg1234 That load cannot be folded into an instruction using the full 64-bit register. It would become a 64-bit load. This is related to the recent change to have isLoadFromStackSlot return false on a sub-register load. llvm-svn: 110874
* Fix a subtle use-after-free issue.Owen Anderson2010-08-111-1/+4
| | | | llvm-svn: 110863
* Clean up ConstantRange a bit:Nick Lewycky2010-08-111-78/+46
| | | | | | | | | - remove ashr which never worked. - fix lshr and shl and add tests. - remove dead function "intersect1Wrapped". - add a new sub method to subtract ranges, with test. llvm-svn: 110861
OpenPOWER on IntegriCloud