Chris Lattner
937790195e
now that loop passes don't use DomFrontier, there is no reason
...
for the unroller to pretend it supports updating it. It still
has a horrible hack for DomTree.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112444 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 17:21:35 +00:00
Dan Gohman
eaa40ff74e
Make IVUsers iterative instead of recursive.
...
This has the side effect of reversing the order of most of
IVUser's results.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112442 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 16:40:03 +00:00
Dan Gohman
4f7e18dee3
Optionally rerun dedicated-register filtering after applying
...
other filtering techniques, as those may allow it to filter
out more obviously unprofitable candidates.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112441 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 16:39:22 +00:00
Dan Gohman
25608f7f4b
Fix several areas in LSR to do a better job keeping the main
...
LSRInstance data structures up to date. This fixes some
pessimizations caused by stale data which will be exposed
in an upcoming change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112440 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 16:32:54 +00:00
Dan Gohman
4aa5c2e90f
Refactor the three main groups of code out of
...
NarrowSearchSpaceUsingHeuristics into separate functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112439 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 16:09:42 +00:00
Dan Gohman
e39a47c5b3
Delete a bogus check.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112438 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 15:30:29 +00:00
Dan Gohman
6a83271532
Add some comments.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112437 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 15:27:08 +00:00
Dan Gohman
3902f9fca8
Move this debug output into GenerateAllReuseFormula, to declutter
...
the high-level logic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112436 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 15:21:38 +00:00
Dan Gohman
a7d0d64b7a
Delete an unused declaration.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112435 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 15:19:11 +00:00
Dan Gohman
46fd7a6ef8
Do one lookup instead of two.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112434 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 15:18:49 +00:00
Dan Gohman
d578a40853
Restructure the {A,+,B}<L> * {C,+,D}<L> folding so that it folds
...
all applicable addrecs before recursing on getMulExpr, instead of
recursing on getMulExpr for each one.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112433 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 15:16:58 +00:00
Dan Gohman
b8fc62bc58
Batch up subtracts along with adds, when analyzing long chains of
...
operations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112432 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 15:10:06 +00:00
Dan Gohman
c6a8e99fb3
Micro-optimize GroupByComplexity.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112431 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 15:07:13 +00:00
Dan Gohman
0f32ae3aa7
Hold AddRec->getLoop() in a variable, to make the Mul code more consistent
...
with the Add code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112430 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 14:55:19 +00:00
Dan Gohman
30cbc860f8
Rename a variable, for consistency.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112429 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 14:53:34 +00:00
Dan Gohman
7e1fee7ece
Use iterators instead of indices.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112428 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 14:52:02 +00:00
Dan Gohman
8f49168c4c
Don't worry about union types.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112427 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 14:50:21 +00:00
Dan Gohman
2b5258c5f9
Make this test less dependent on register allocation choices.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112426 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 14:49:42 +00:00
Dan Gohman
05841638a7
Use exec.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112425 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 14:49:00 +00:00
Dan Gohman
c9fa2cd596
Delete an unused declaration.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112424 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 14:48:15 +00:00
Kalle Raiskila
bd887df8b9
Fix lowering of INSERT_VECTOR_ELT in SPU.
...
The IDX was treated as byte index, not element index.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112422 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 12:41:50 +00:00
Bill Wendling
10ce7f3116
Fix whitespaces. No functionality changes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112421 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 11:31:07 +00:00
Chris Lattner
8bfc4299c2
Stop explicitly scheduling domfrontier before the loop passes,
...
since none of them use it. With this, we now only run
domfrontier (an N^2 analysis) 3 times at clang -O3: once for
"early" per-function cleanup, once at the start of the
per-function pipeline to support SRoA, and once late because
the EHPrepare class uses it.
EHPrepare needs to stop using it, this is silly and wasteful.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112420 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 07:05:51 +00:00
Chris Lattner
e418ac832c
licm preserves the cfg, it doesn't have to explicitly say it
...
preserves domfrontier. It does preserve AA though.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112419 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 07:02:56 +00:00
Chris Lattner
44e2bd31f1
now that it doesn't use the PromoteMemToReg function, LICM doesn't
...
require DomFrontier. Dropping this doesn't actually save any runs
of the pass though.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112418 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 06:49:44 +00:00
Chris Lattner
e488064922
completely rewrite the memory promotion algorithm in LICM.
...
Among other things, this uses SSAUpdater instead of
PromoteMemToReg.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112417 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 06:43:52 +00:00
Bob Wilson
04d6c289ab
Remove NEON vaddl, vaddw, vsubl, and vsubw intrinsics. Instead, use llvm
...
IR add/sub operations with one or both operands sign- or zero-extended.
Auto-upgrade the old intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112416 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 05:57:34 +00:00
Chris Lattner
63a75c13b1
use getUniqueExitBlocks instead of a manual set.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112412 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 05:12:21 +00:00
Eli Friedman
5033f64694
A couple of small missed optimizations.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112411 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 05:07:40 +00:00
Chris Lattner
a6a36f59b4
reimplement LICM::sink to use SSAUpdater instead of PromoteMemToReg.
...
This leads to much simpler code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112410 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 04:55:06 +00:00
Chris Lattner
ffd9beefb8
implement SSAUpdater::RewriteUseAfterInsertions, a helpful form of RewriteUse.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112409 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 04:54:06 +00:00
Chris Lattner
abd2a75900
remove dead proto
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112408 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 04:53:24 +00:00
Chris Lattner
d7bc19dfee
reduce indentation in LICM::sink by using early exits, use
...
getUniqueExitBlocks instead of getExitBlocks and a manual
set to eliminate dupes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112405 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 04:28:20 +00:00
Chris Lattner
dc1ceb370a
modernize this pass a bit: use efficient set/map and reduce indentation.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112404 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 04:23:04 +00:00
Duncan Sands
6654ff2741
Flesh out the list of things I've worked on.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112403 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 04:22:35 +00:00
Chris Lattner
fedac7d9b0
when merging two alias sets, the result set is volatile if either
...
of the sets is volatile. We were dropping the volatile bit of the
merged in set, leading (luckily) to assertions in cases like
PR7535. I cannot produce a testcase that repros with opt, but this
is obviously correct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112402 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 04:14:47 +00:00
Chris Lattner
9476d746d6
more cleanup
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112401 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 04:13:43 +00:00
Chris Lattner
6e1f51099d
clean this up
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112400 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 04:06:55 +00:00
Bill Wendling
1f7bf0e1f5
- Add a parameter to T2I_bin_irs for those patterns which set the S bit.
...
- Create T2I_bin_sw_irs to be like T2I_bin_w_irs, but that it sets the S bit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112399 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 03:55:31 +00:00
Chris Lattner
82457d08f9
merge a bunch of shuffle tests into sse2.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112398 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 03:19:04 +00:00
Chris Lattner
4644a936dc
add a bunch more common shuffles to the instprinter.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112397 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 03:08:08 +00:00
Chris Lattner
c19b9477c9
add some nounwind's
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112396 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 03:07:47 +00:00
Bill Wendling
2c4b30ebca
Name ANDflag to ANDS, which is less stupid.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112395 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 03:06:09 +00:00
Bill Wendling
ac3b935362
File missing from last commit.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112394 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 03:02:28 +00:00
Bill Wendling
0b4aa7d11b
Create an ARMISD::AND node. This node is exactly like the "ARM::AND" node, but
...
it sets the CPSR register.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112393 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-29 03:02:11 +00:00
NAKAMURA Takumi
fedb34665a
Minor change.
...
This is test for git svn dcommit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112389 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-28 21:12:51 +00:00
Chris Lattner
6aa928d57a
I have manually decoded the imm field of an insertps one too many
...
times. This patch causes llc and llvm-mc (which both default to
verbose-asm) to print out comments after a few common shuffle
instructions which indicates the shuffle mask, e.g.:
insertps $113, %xmm3, %xmm0 ## xmm0 = zero,xmm0[1,2],xmm3[1]
unpcklps %xmm1, %xmm0 ## xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
pshufd $1, %xmm1, %xmm1 ## xmm1 = xmm1[1,0,0,0]
This is carefully factored to keep the information extraction (of the
shuffle mask) separate from the printing logic. I plan to move the
extraction part out somewhere else at some point for other parts of
the x86 backend that want to introspect on the behavior of shuffles.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112387 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-28 20:42:31 +00:00
Chris Lattner
a5729aae5d
fixme accomplished
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112386 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-28 20:40:28 +00:00
Chris Lattner
9a7346ca7e
tidy up
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112385 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-28 20:34:35 +00:00
NAKAMURA Takumi
48026f56e6
Add me to the "blame list"!
...
And it is my 1st test commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112384 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-28 20:24:43 +00:00