summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Make SCEVCallbackVH::allUsesReplacedWith unconditionally deleteDan Gohman2010-07-281-12/+6
| | | | | | the old value. llvm-svn: 109567
* Implement a vectorized algorithm for <16 x i8> << <16 x i8>Nate Begeman2010-07-281-21/+73
| | | | | | This is about 4x faster and smaller than the existing scalarization. llvm-svn: 109566
* Rearrange several datastructures in LazyValueInfo to improve compile time.Owen Anderson2010-07-271-69/+35
| | | | | | This is still not perfect, but better than it was before. llvm-svn: 109563
* reintroduce original (asserting) semantics of CallSite(Instruction *II)Gabor Greif2010-07-271-1/+1
| | | | | | | add instead a CallSite(Value* V) constructor that is consistent with ImmutableCallSize and use that one in client code llvm-svn: 109553
* ~40% faster vector shl <4 x i32> on SSE 4.1 Larger improvements for smaller ↵Nate Begeman2010-07-272-0/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | types coming in future patches. For: define <2 x i64> @shl(<4 x i32> %r, <4 x i32> %a) nounwind readnone ssp { entry: %shl = shl <4 x i32> %r, %a ; <<4 x i32>> [#uses=1] %tmp2 = bitcast <4 x i32> %shl to <2 x i64> ; <<2 x i64>> [#uses=1] ret <2 x i64> %tmp2 } We get: _shl: ## @shl pslld $23, %xmm1 paddd LCPI0_0, %xmm1 cvttps2dq %xmm1, %xmm1 pmulld %xmm1, %xmm0 ret Instead of: _shl: ## @shl pshufd $3, %xmm0, %xmm2 movd %xmm2, %eax pshufd $3, %xmm1, %xmm2 movd %xmm2, %ecx shll %cl, %eax movd %eax, %xmm2 pshufd $1, %xmm0, %xmm3 movd %xmm3, %eax pshufd $1, %xmm1, %xmm3 movd %xmm3, %ecx shll %cl, %eax movd %eax, %xmm3 punpckldq %xmm2, %xmm3 movd %xmm0, %eax movd %xmm1, %ecx shll %cl, %eax movd %eax, %xmm2 movhlps %xmm0, %xmm0 movd %xmm0, %eax movhlps %xmm1, %xmm1 movd %xmm1, %ecx shll %cl, %eax movd %eax, %xmm0 punpckldq %xmm0, %xmm2 movdqa %xmm2, %xmm0 punpckldq %xmm3, %xmm0 ret llvm-svn: 109549
* recommit simplification (originally r109504, backed out in r109508) now that ↵Gabor Greif2010-07-271-3/+2
| | | | | | problem in CallSiteBase is fixed llvm-svn: 109547
* It is FE's responsibility to emit proper directory name.Devang Patel2010-07-271-4/+1
| | | | llvm-svn: 109538
* GrammarJim Grosbach2010-07-271-3/+3
| | | | llvm-svn: 109525
* Fix a crash in the dag combiner caused by ↵Nate Begeman2010-07-271-2/+10
| | | | | | | | ConstantFoldBIT_CONVERTofBUILD_VECTOR calling itself recursively and returning a SCALAR_TO_VECTOR node, but assuming the input was always a BUILD_VECTOR. llvm-svn: 109519
* 80 columnJim Grosbach2010-07-271-4/+4
| | | | llvm-svn: 109513
* fix typoJim Grosbach2010-07-271-1/+1
| | | | llvm-svn: 109511
* recommit simplification (r109502, backed out r109509); seems to innocentGabor Greif2010-07-271-1/+1
| | | | llvm-svn: 109510
* back out this too to restore the botsGabor Greif2010-07-271-1/+1
| | | | llvm-svn: 109509
* back out r109504, breaks the botsGabor Greif2010-07-271-2/+3
| | | | llvm-svn: 109508
* simplify: CallSite::get --> CallSite constructorGabor Greif2010-07-271-4/+4
| | | | llvm-svn: 109506
* simplifyGabor Greif2010-07-271-3/+2
| | | | llvm-svn: 109504
* use ImmutableCallSite for const-corrgoodnessGabor Greif2010-07-271-4/+4
| | | | llvm-svn: 109503
* simplifyGabor Greif2010-07-271-1/+1
| | | | llvm-svn: 109502
* Fix silent failure with no input files.Mikhail Glushenkov2010-07-271-0/+7
| | | | llvm-svn: 109500
* Return -1 only on failure to execute a program.Mikhail Glushenkov2010-07-272-20/+22
| | | | | | Also fix some comments. llvm-svn: 109499
* RegionInfo: Add getMaxRegionExit()Tobias Grosser2010-07-271-0/+39
| | | | | | | getMaxRegionExit returns the exit of the maximal refined region starting at a specific basic block. llvm-svn: 109496
* After updating value handles for RAUW, check that no weak or tracking handlesDuncan Sands2010-07-271-1/+19
| | | | | | | | are still on the list. This might happen if a CallbackVH created some new value handles for the old value when doing RAUW. Barf if it occurs, since it is almost certainly a mistake. llvm-svn: 109495
* Make MC use Windows COFF on Windows and add tests.Michael J. Spencer2010-07-272-0/+23
| | | | llvm-svn: 109494
* Add function to query RegionInfo about loops.Tobias Grosser2010-07-271-0/+65
| | | | | | | * contains(Loop), * getOutermostLoop() * Improve getNameStr() to return a sensible name, if basic blocks are not named. llvm-svn: 109490
* The isLoadFromStackSlot and isStoreToStackSlot have no way of reportingJakob Stoklund Olesen2010-07-271-2/+3
| | | | | | | | | | | | | subregister operands like this: %reg1040:sub_32bit<def> = MOV32rm <fi#-2>, 1, %reg0, 0, %reg0, %reg1040<imp-def>; mem:LD4[FixedStack-2](align=8) Make them return false when subreg operands are present. VirtRegRewriter is making bad assumptions otherwise. This fixes PR7713. llvm-svn: 109489
* Add assertions that expose the PR7713 miscompilation: Accessing a stack slotJakob Stoklund Olesen2010-07-271-0/+4
| | | | | | with a too-big register class. llvm-svn: 109488
* It's better to have the arrays, which would trigger the creation of stackBill Wendling2010-07-273-3/+33
| | | | | | | | | protectors, to be near the stack protectors on the stack. Accomplish this by tagging the stack object with a predicate that indicates that it would trigger this. In the prolog-epilog inserter, assign these objects to the stack after the stack protector but before the other objects. llvm-svn: 109481
* Add SplitEditor to SplitKit. This class will be used to edit live intervals andJakob Stoklund Olesen2010-07-264-10/+305
| | | | | | | | rewrite instructions for live range splitting. Still work in progress. llvm-svn: 109469
* Fix a use-after-free.Dan Gohman2010-07-261-2/+0
| | | | llvm-svn: 109468
* Using llvm.eh.catch.all.value instead of .llvm.eh.catch.all.value.Bill Wendling2010-07-262-5/+5
| | | | llvm-svn: 109462
* And a bit more non-ASCII stuff.Eli Friedman2010-07-261-1/+1
| | | | llvm-svn: 109458
* Drop some non-ascii stuffAnton Korobeynikov2010-07-261-7/+7
| | | | llvm-svn: 109456
* Don't call __register_frame from the JIT on systems that use setjmp/longjmpBob Wilson2010-07-261-2/+2
| | | | | | | exception handling. Also fix an extra underscore typo in one instance of "__ARM_EABI__". Radar 8236264. llvm-svn: 109451
* On x86, f32 / f64 nodes share the same registers as 128-bit vector values.Evan Cheng2010-07-262-0/+30
| | | | llvm-svn: 109450
* The "excess register pressure" returned by HighRegPressure() is not accurate ↵Evan Cheng2010-07-261-41/+20
| | | | | | enough to factor into scheduling priority. Eliminate it and add early exits to speed up scheduling. llvm-svn: 109449
* Add a noteAnton Korobeynikov2010-07-261-0/+21
| | | | llvm-svn: 109448
* Temporary hack to let codegen assert or generate poor code in caseBruno Cardoso Lopes2010-07-261-8/+13
| | | | | | | | | we are using AVX and no AVX version of the desired intruction is present, this is better for incremental dev (without fallbacks it's easier to spot what's missing). Not sure this is the best hack thought (we can also disable all HasSSE* predicates by dinamically marking them 'false' if AVX is present) llvm-svn: 109434
* Add an initial implementation of LazyValueInfo updating for JumpThreading. ↵Owen Anderson2010-07-262-4/+92
| | | | | | Disabled for now. llvm-svn: 109424
* Currently EH lowering code expects typeinfo to be global only.Anton Korobeynikov2010-07-261-2/+11
| | | | | | | | This assumption is not satisfied due to global mergeing. Workaround the issue by temporary disablinge mergeing of const globals. Also, ignore LLVM "special" globals. This fixes PR7716 llvm-svn: 109423
* ARM fastisel isn't ready.Evan Cheng2010-07-261-1/+2
| | | | llvm-svn: 109421
* Fix SCEVExpander::visitAddRecExpr so that it remembers the induction variableDan Gohman2010-07-261-24/+21
| | | | | | | | it inserted rather than using LoopInfo::getCanonicalInductionVariable to rediscover it, since that doesn't work on non-canonical loops. This fixes infinite recurrsion on such loops; PR7562. llvm-svn: 109419
* Handle Values with no value in getCopyFromRegs.Dan Gohman2010-07-261-0/+4
| | | | llvm-svn: 109415
* Remove LCSSA's bogus dependence on LoopSimplify and LoopSimplify's bogusDan Gohman2010-07-264-19/+12
| | | | | | | | | | | | | | dependence on DominanceFrontier. Instead, add an explicit DominanceFrontier pass in StandardPasses.h to ensure that it gets scheduled at the right time. Declare that loop unrolling preserves ScalarEvolution, and shuffle some getAnalysisUsages. This eliminates one LoopSimplify and one LCCSA run in the standard compile opts sequence. llvm-svn: 109413
* Preserve ScalarEvolution in the loop unroller.Dan Gohman2010-07-261-0/+6
| | | | llvm-svn: 109412
* Fix (at least) quadratic worst-case complexity in DominanceFrontier::splitBlock:Dan Gohman2010-07-261-52/+64
| | | | | | | | | | | | | | don't visit all blocks in the function, and don't iterate over the split blocks' predecessor lists for each block visited. Also, remove the special-case test for the entry block. Splitting the entry block isn't common enough to make this worthwhile. This fixes a major compile-time bottleneck which is exposed now that LoopSimplify isn't being redundantly run both before and after DominanceFrontier. llvm-svn: 109408
* Avoid copying and recopying a std::set.Dan Gohman2010-07-261-6/+2
| | | | llvm-svn: 109405
* Exit a search loop when the search goal is found.Dan Gohman2010-07-261-1/+3
| | | | llvm-svn: 109404
* Fix formatting.Dan Gohman2010-07-261-2/+2
| | | | llvm-svn: 109403
* A block dominates itself, by definition.Dan Gohman2010-07-261-1/+1
| | | | llvm-svn: 109402
* Use DominatorTree::properlyDominates instead of dominates with anDan Gohman2010-07-261-1/+1
| | | | | | explicit inequality check. llvm-svn: 109401
OpenPOWER on IntegriCloud