Dan Gohman
9a6ea54d94
Make SCEVCallbackVH::allUsesReplacedWith unconditionally delete
...
the old value.
llvm-svn: 109567
2010-07-28 00:28:25 +00:00
Nate Begeman
133820e806
Implement a vectorized algorithm for <16 x i8> << <16 x i8>
...
This is about 4x faster and smaller than the existing scalarization.
llvm-svn: 109566
2010-07-28 00:21:48 +00:00
Owen Anderson
2d39891e91
Rearrange several datastructures in LazyValueInfo to improve compile time.
...
This is still not perfect, but better than it was before.
llvm-svn: 109563
2010-07-27 23:58:11 +00:00
Gabor Greif
ec0c7b2427
reintroduce original (asserting) semantics of CallSite(Instruction *II)
...
add instead a CallSite(Value* V) constructor that is consistent with ImmutableCallSize
and use that one in client code
llvm-svn: 109553
2010-07-27 22:53:28 +00:00
Nate Begeman
068e932975
~40% faster vector shl <4 x i32> on SSE 4.1 Larger improvements for smaller 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
2010-07-27 22:37:06 +00:00
Gabor Greif
8c197e5dbb
recommit simplification (originally r109504, backed out in r109508) now that problem in CallSiteBase is fixed
...
llvm-svn: 109547
2010-07-27 22:02:00 +00:00
Devang Patel
38a7221118
It is FE's responsibility to emit proper directory name.
...
llvm-svn: 109538
2010-07-27 20:51:15 +00:00
Jim Grosbach
2f4adcee5f
Grammar
...
llvm-svn: 109525
2010-07-27 18:36:27 +00:00
Nate Begeman
15fe179ecb
Fix a crash in the dag combiner caused by 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
2010-07-27 18:02:18 +00:00
Jim Grosbach
4d81e796cb
80 column
...
llvm-svn: 109513
2010-07-27 17:38:47 +00:00
Jim Grosbach
7e561eb81c
fix typo
...
llvm-svn: 109511
2010-07-27 17:14:29 +00:00
Gabor Greif
2778a21978
recommit simplification (r109502, backed out r109509); seems to innocent
...
llvm-svn: 109510
2010-07-27 16:44:23 +00:00
Gabor Greif
c95e84ab61
back out this too to restore the bots
...
llvm-svn: 109509
2010-07-27 15:56:07 +00:00
Gabor Greif
981f3d3a31
back out r109504, breaks the bots
...
llvm-svn: 109508
2010-07-27 15:18:11 +00:00
Gabor Greif
394841cea8
simplify: CallSite::get --> CallSite constructor
...
llvm-svn: 109506
2010-07-27 15:02:37 +00:00
Gabor Greif
90a627cfaa
simplify
...
llvm-svn: 109504
2010-07-27 14:38:38 +00:00
Gabor Greif
aaf68e2e5a
use ImmutableCallSite for const-corrgoodness
...
llvm-svn: 109503
2010-07-27 14:15:29 +00:00
Gabor Greif
ee90e05139
simplify
...
llvm-svn: 109502
2010-07-27 13:31:22 +00:00
Mikhail Glushenkov
61338a536b
Fix silent failure with no input files.
...
llvm-svn: 109500
2010-07-27 11:19:40 +00:00
Mikhail Glushenkov
33c561c22c
Return -1 only on failure to execute a program.
...
Also fix some comments.
llvm-svn: 109499
2010-07-27 11:19:36 +00:00
Tobias Grosser
ebc6c0cf50
RegionInfo: Add getMaxRegionExit()
...
getMaxRegionExit returns the exit of the maximal refined region starting
at a specific basic block.
llvm-svn: 109496
2010-07-27 08:39:43 +00:00
Duncan Sands
816457c7f3
After updating value handles for RAUW, check that no weak or tracking handles
...
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
2010-07-27 06:53:14 +00:00
Michael J. Spencer
33ac353ce4
Make MC use Windows COFF on Windows and add tests.
...
llvm-svn: 109494
2010-07-27 06:46:15 +00:00
Tobias Grosser
16789d79fe
Add function to query RegionInfo about loops.
...
* contains(Loop), * getOutermostLoop()
* Improve getNameStr() to return a sensible name, if basic blocks are not named.
llvm-svn: 109490
2010-07-27 04:17:13 +00:00
Jakob Stoklund Olesen
b056152ccf
The isLoadFromStackSlot and isStoreToStackSlot have no way of reporting
...
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
2010-07-27 04:17:01 +00:00
Jakob Stoklund Olesen
fa4bcde9d9
Add assertions that expose the PR7713 miscompilation: Accessing a stack slot
...
with a too-big register class.
llvm-svn: 109488
2010-07-27 04:16:58 +00:00
Bill Wendling
bb2398331b
It's better to have the arrays, which would trigger the creation of stack
...
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
2010-07-27 01:55:19 +00:00
Jakob Stoklund Olesen
2b379c4339
Add SplitEditor to SplitKit. This class will be used to edit live intervals and
...
rewrite instructions for live range splitting.
Still work in progress.
llvm-svn: 109469
2010-07-26 23:44:11 +00:00
Dan Gohman
64157c1919
Fix a use-after-free.
...
llvm-svn: 109468
2010-07-26 23:40:24 +00:00
Bill Wendling
efed27734e
Using llvm.eh.catch.all.value instead of .llvm.eh.catch.all.value.
...
llvm-svn: 109462
2010-07-26 22:36:52 +00:00
Eli Friedman
94c9f00dd6
And a bit more non-ASCII stuff.
...
llvm-svn: 109458
2010-07-26 22:28:18 +00:00
Anton Korobeynikov
b71ee4ebbb
Drop some non-ascii stuff
...
llvm-svn: 109456
2010-07-26 22:23:07 +00:00
Bob Wilson
73936af25b
Don't call __register_frame from the JIT on systems that use setjmp/longjmp
...
exception handling. Also fix an extra underscore typo in one instance of
"__ARM_EABI__". Radar 8236264.
llvm-svn: 109451
2010-07-26 21:58:00 +00:00
Evan Cheng
4cee8136a7
On x86, f32 / f64 nodes share the same registers as 128-bit vector values.
...
llvm-svn: 109450
2010-07-26 21:50:05 +00:00
Evan Cheng
e5f7eaf10c
The "excess register pressure" returned by HighRegPressure() is not accurate enough to factor into scheduling priority. Eliminate it and add early exits to speed up scheduling.
...
llvm-svn: 109449
2010-07-26 21:49:07 +00:00
Anton Korobeynikov
5e1e95aed9
Add a note
...
llvm-svn: 109448
2010-07-26 21:48:35 +00:00
Bruno Cardoso Lopes
cb0f921ca4
Temporary hack to let codegen assert or generate poor code in case
...
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
2010-07-26 21:01:18 +00:00
Owen Anderson
12ab6162bf
Add an initial implementation of LazyValueInfo updating for JumpThreading. Disabled for now.
...
llvm-svn: 109424
2010-07-26 18:48:03 +00:00
Anton Korobeynikov
5e3d50ec58
Currently EH lowering code expects typeinfo to be global only.
...
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
2010-07-26 18:45:39 +00:00
Evan Cheng
1566171daa
ARM fastisel isn't ready.
...
llvm-svn: 109421
2010-07-26 18:32:55 +00:00
Dan Gohman
9e0ae022d2
Fix SCEVExpander::visitAddRecExpr so that it remembers the induction variable
...
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
2010-07-26 18:28:14 +00:00
Dan Gohman
52e662a7f7
Handle Values with no value in getCopyFromRegs.
...
llvm-svn: 109415
2010-07-26 18:15:41 +00:00
Dan Gohman
23a6a1bdc5
Remove LCSSA's bogus dependence on LoopSimplify and LoopSimplify's bogus
...
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
2010-07-26 18:11:16 +00:00
Dan Gohman
7d588b7dec
Preserve ScalarEvolution in the loop unroller.
...
llvm-svn: 109412
2010-07-26 18:02:06 +00:00
Dan Gohman
e191a19b69
Fix (at least) quadratic worst-case complexity in DominanceFrontier::splitBlock:
...
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
2010-07-26 17:55:15 +00:00
Dan Gohman
c90f474e23
Avoid copying and recopying a std::set.
...
llvm-svn: 109405
2010-07-26 17:45:33 +00:00
Dan Gohman
8babd895c7
Exit a search loop when the search goal is found.
...
llvm-svn: 109404
2010-07-26 17:41:45 +00:00
Dan Gohman
014eec6389
Fix formatting.
...
llvm-svn: 109403
2010-07-26 17:39:33 +00:00
Dan Gohman
8f7e88352a
A block dominates itself, by definition.
...
llvm-svn: 109402
2010-07-26 17:38:15 +00:00
Dan Gohman
32010a6c96
Use DominatorTree::properlyDominates instead of dominates with an
...
explicit inequality check.
llvm-svn: 109401
2010-07-26 17:37:36 +00:00