Evan Cheng [Tue, 2 Mar 2010 02:37:33 +0000 (02:37 +0000)]
Add count() and lookup() to ScopedHashTable. It might be useful to get information out of the hash table.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97542
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 2 Mar 2010 02:37:23 +0000 (02:37 +0000)]
Use the right induction variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97541
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 2 Mar 2010 02:22:10 +0000 (02:22 +0000)]
Rewrite chain handling validation and input TokenFactor handling
stuff now that we don't care about emulating the old broken
behavior of the old isel. This eliminates the
'CheckChainCompatible' check (along with IsChainCompatible) which
did an incorrect and inefficient scan *up* the chain nodes which
happened as the pattern was being formed and does the validation
at the end in HandleMergeInputChains when it forms a structural
pattern. This scans "down" the graph, which means that it is
quickly bounded by nodes already selected. This also handles
token factors that get "trapped" in the dag.
Removing the CheckChainCompatible nodes also shrinks the
generated tables by about 6K for X86 (down to 83K).
There are two pieces remaining before I can nuke PreprocessRMW:
1. I xfailed a test because we're now producing worse code in a
case that has nothing to do with the change: it turns out that
our use of MorphNodeTo will leave dead nodes in the graph
which (depending on how the graph is walked) end up causing
bogus uses of chains and blocking matches. This is really
bad for other reasons, so I'll fix this in a follow-up patch.
2. CheckFoldableChainNode needs to be improved to handle the TF.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97539
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 2 Mar 2010 02:14:38 +0000 (02:14 +0000)]
Fix several places to handle vector operands properly.
Based on a patch by Micah Villmow for PR6438.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97538
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 2 Mar 2010 01:59:21 +0000 (01:59 +0000)]
Non-affine post-inc SCEV expansions have more code which must be
emitted after the increment. Make sure the insert position
reflects this. This fixes PR6453.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97537
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 2 Mar 2010 01:55:18 +0000 (01:55 +0000)]
Remove dead parameter passing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97536
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 2 Mar 2010 01:26:20 +0000 (01:26 +0000)]
Constructors and operators for anonymous aggregates does not names. Do not force empty AT_name attribute in such cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97533
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 2 Mar 2010 01:11:08 +0000 (01:11 +0000)]
Floating-point add, sub, and mul are now spelled fadd, fsub, and fmul,
respectively.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97531
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 2 Mar 2010 01:08:11 +0000 (01:08 +0000)]
PerformTailCallOpt was renamed to GuaranteedTailCallOpt to
better reflect its meaning, now that tail call optimizations
are done by default in some cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97530
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 2 Mar 2010 00:40:26 +0000 (00:40 +0000)]
remove dead code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97529
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 2 Mar 2010 00:13:03 +0000 (00:13 +0000)]
add some missing \n's
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97527
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Tue, 2 Mar 2010 00:09:29 +0000 (00:09 +0000)]
Don't attempt load PRE when there is no real redundancy (i.e., the load is in
a loop and is itself the only dependency).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97526
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 2 Mar 2010 00:00:03 +0000 (00:00 +0000)]
refactor some code out of OPC_EmitMergeInputChains into a
new helper function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97525
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 23:40:33 +0000 (23:40 +0000)]
remove some functions that were only used by the
old isel generated code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97522
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Mon, 1 Mar 2010 23:37:32 +0000 (23:37 +0000)]
When GVN needs to split critical edges for load PRE, check all of the
predecessors before returning. Otherwise, if multiple predecessor edges need
splitting, we only get one of them per iteration. This makes a small but
measurable compile time improvement with -enable-full-load-pre.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97521
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 23:08:51 +0000 (23:08 +0000)]
fixme resolved.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97517
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 22:51:11 +0000 (22:51 +0000)]
remove a little hack I did for the old isel, not needed
now that it is gone.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97516
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 22:49:06 +0000 (22:49 +0000)]
resolve some fixmes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97515
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 22:46:42 +0000 (22:46 +0000)]
resolve a fixme and simplify code by moving insertion of the
EmitMergeInputChainsMatcher node up into EmitResultCode. This
doesn't have much of an effect on the generated code, the X86
table is exactly the same size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97514
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 22:29:19 +0000 (22:29 +0000)]
resolve a fixme by having the .td file parser reject thigns like
(set GPR, somecomplexpattern)
if somecomplexpattern doesn't declare what it can match.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97513
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 1 Mar 2010 22:23:12 +0000 (22:23 +0000)]
MemoryDepAnalysis is not used if redundant load processing is disabled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97512
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 22:20:05 +0000 (22:20 +0000)]
remove all but one version of SelectionDAG::MorphNodeTo
(the most general) the others are dead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97511
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 22:19:47 +0000 (22:19 +0000)]
remove dead code, simplify.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97510
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 22:09:11 +0000 (22:09 +0000)]
Fix PR2590 by making PatternSortingPredicate actually be
ordered correctly. Previously it would get in trouble when
two patterns were too similar and give them nondet ordering.
We force this by using the record ID order as a fallback.
The testsuite diff is due to alpha patterns being ordered
slightly differently, the change is a semantic noop afaict:
< lda $0,-100($16)
---
> subq $16,100,$0
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97509
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 22:04:33 +0000 (22:04 +0000)]
tolerate factoring the *last* node for CellSPU.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97508
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 1 Mar 2010 22:00:11 +0000 (22:00 +0000)]
Remove the optimize for code size limitation on r67917. Optimize 64-bit imul by constants into leas + shl regardless if optimizing for code size. The size saving from using imulq isn't worth it. Also, the lea and shl instructions may expose further optimization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97507
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 21:49:54 +0000 (21:49 +0000)]
optimize tblgen compile time by eliminating the old isel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97504
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 1 Mar 2010 21:45:21 +0000 (21:45 +0000)]
Make llc opt into the addPassesToEmitFile verify pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97502
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 21:20:46 +0000 (21:20 +0000)]
remove a terrible hack that disabled assertions from this file because of build time
problems. rdar://
7697850.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97500
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Mon, 1 Mar 2010 20:59:38 +0000 (20:59 +0000)]
Use methods to determine if a LiveInterval is spillable.
Don't accidentally produce unspillable intervals for deeply nested loops.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97496
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 1 Mar 2010 20:33:48 +0000 (20:33 +0000)]
Remove tests that checks @llvm.dbg.stoppoint handling.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97493
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 20:24:50 +0000 (20:24 +0000)]
stop using anders-aa
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97492
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 20:24:05 +0000 (20:24 +0000)]
stop using anders-aa
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97491
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 20:23:15 +0000 (20:23 +0000)]
remove andersen's tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97490
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 1 Mar 2010 19:46:08 +0000 (19:46 +0000)]
@llvm.dbg.stoppoint intrinsic is not used anymore.
Delete dead testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97489
91177308-0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Mon, 1 Mar 2010 19:42:47 +0000 (19:42 +0000)]
Update CMake build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97488
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 1 Mar 2010 19:41:26 +0000 (19:41 +0000)]
Update to use new debug info encoding scheme. As a bonus, now the test passes!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97487
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 19:39:15 +0000 (19:39 +0000)]
don't emit the old sdnodexform stuff for the new isel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97486
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 19:38:53 +0000 (19:38 +0000)]
stop using generated sdnodexforms.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97485
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 19:29:17 +0000 (19:29 +0000)]
note that andersaa was removed in 2.7
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97484
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 19:24:17 +0000 (19:24 +0000)]
remove anders-aa from mainline, it isn't maintained and is
tantalyzing enough that people keep trying to use it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97483
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Mon, 1 Mar 2010 19:22:00 +0000 (19:22 +0000)]
Added STRHT for disassembly only and fixed a bug in AI3sthpo class where the W
bit should be set to 0 instead of 1.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97481
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 1 Mar 2010 19:14:25 +0000 (19:14 +0000)]
Remove this test because it checks wheter optimizer handled @llvm.dbg.global_variable appropriately or not. LLVM does not use this scheme to encode debug info for global variables any more.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97480
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 1 Mar 2010 19:09:55 +0000 (19:09 +0000)]
Remove test to check bugfix in handing debug info for global variables using intrinsics. Now, debug info for global variable is encoded using metadata. The old code path is now history and there is no need to have a test to check a bug fix in old code path.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97477
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 19:05:25 +0000 (19:05 +0000)]
Turn on the new isel by default. Here are some fun numbers
with a release-asserts build on x86-64-darwin10:
LLC Size:
Old: 15,426,852
New: 12,759,140 (down 2.7M)
LLI Size:
Old: 9,926,876
New: 8,864,292 (down 1.1M)
X86ISelDAGToDAG.o size:
Old: 1,401,232
New: 162,868 (down 1.3M)
Time to build X86ISelDAGToDAG.o:
Old: 67.147u 2.060s 1:09.78
New: 4.234u 0.387s 0:04.77
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97475
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 1 Mar 2010 19:04:23 +0000 (19:04 +0000)]
Remove dead test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97474
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 1 Mar 2010 19:02:51 +0000 (19:02 +0000)]
Replace test case that uses @llvm.dbg.* intrinsic with a test that uses metadata.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97473
91177308-0d34-0410-b5e6-
96231b3b80d8
Torok Edwin [Mon, 1 Mar 2010 19:00:55 +0000 (19:00 +0000)]
Missed a \n in previous commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97472
91177308-0d34-0410-b5e6-
96231b3b80d8
Torok Edwin [Mon, 1 Mar 2010 18:49:10 +0000 (18:49 +0000)]
Add command-line flag to tblgen to turn off generating comments for the new
isel (defaults it to generate comments).
This reduces the size of the generated source file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97470
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 18:47:11 +0000 (18:47 +0000)]
Accelerate isel dispatch for tables that start with a top-level
OPC_SwitchOpcode to use a table lookup instead of having to go
through the interpreter for this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97469
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 1 Mar 2010 18:45:28 +0000 (18:45 +0000)]
These two tests check whether oprimizer safely ignores @llvm.dbg.stoppoint intrinsic or not. This intrinsic is not used anymore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97468
91177308-0d34-0410-b5e6-
96231b3b80d8
John McCall [Mon, 1 Mar 2010 18:38:45 +0000 (18:38 +0000)]
Don't potentially read past the end of the fill data when making a NaN from
an APInt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97467
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 1 Mar 2010 18:32:27 +0000 (18:32 +0000)]
This test checks whether LICM ignores @llvm.dbg.stoppoint intrinsics appropriately or not. Now, llvm does not use this intrinsic. Remove this test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97466
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 1 Mar 2010 18:30:58 +0000 (18:30 +0000)]
Rewrite test to test VLA using new debug info encoding scheme.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97465
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 1 Mar 2010 18:30:08 +0000 (18:30 +0000)]
Remove this generic debug info intrinsic test. LLVM does not use this llvm.dbg.stoppoint intrinsic anymore. There are tests to check new implementation, which attaches location information directly with an instruction using metadata.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97464
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 1 Mar 2010 17:59:21 +0000 (17:59 +0000)]
Fix optimization of ISD::TRUNCATE on vector operands. Based on a patch
by Micah Villmow for PR6335.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97461
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 1 Mar 2010 17:56:46 +0000 (17:56 +0000)]
Add explicit keywords.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97460
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 1 Mar 2010 17:56:04 +0000 (17:56 +0000)]
Add a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97459
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 1 Mar 2010 17:55:27 +0000 (17:55 +0000)]
Add some debug output to LoopSimplify.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97458
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 1 Mar 2010 17:53:39 +0000 (17:53 +0000)]
Add the alignstack keyword.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97457
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 1 Mar 2010 17:53:15 +0000 (17:53 +0000)]
LLVM instruction syntax doesn't have trailing semicolons.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97456
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 1 Mar 2010 17:52:16 +0000 (17:52 +0000)]
svn:ignore fixes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97455
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 1 Mar 2010 17:51:02 +0000 (17:51 +0000)]
Spelling fixes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97454
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 1 Mar 2010 17:49:51 +0000 (17:49 +0000)]
Spelling fixes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97453
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 1 Mar 2010 17:47:21 +0000 (17:47 +0000)]
Whitespace cleanups.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97452
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 1 Mar 2010 17:45:15 +0000 (17:45 +0000)]
Use Doxygen comment syntax.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97451
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 1 Mar 2010 17:43:57 +0000 (17:43 +0000)]
This is now done.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97450
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 1 Mar 2010 17:42:55 +0000 (17:42 +0000)]
Fix a missing newline in debug output.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97449
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 1 Mar 2010 17:42:17 +0000 (17:42 +0000)]
Prune #includes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97448
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 1 Mar 2010 17:41:39 +0000 (17:41 +0000)]
Fix spelling.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97447
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 1 Mar 2010 17:34:28 +0000 (17:34 +0000)]
Don't print "Modified" for passes which haven't modified anything.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97446
91177308-0d34-0410-b5e6-
96231b3b80d8
Nathan Keynes [Mon, 1 Mar 2010 10:40:41 +0000 (10:40 +0000)]
Add JIT support to the TODO list (test commit)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97443
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 07:54:59 +0000 (07:54 +0000)]
Emit type checks late instead of early, this encourages
structural matching code to be factored and shared this
shrinks the X86 isel table from 86537 to 83890 bytes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97442
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 07:43:08 +0000 (07:43 +0000)]
some trivial microoptimizations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97441
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 07:27:07 +0000 (07:27 +0000)]
Emit a redundant check for immediates at root context, e.g. (imm 0).
This allows formation of OpcodeSwitch for top level patterns, in
particular on X86. This saves about 1K of data space in the x86
table and makes the dispatch much more efficient.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97440
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 07:17:40 +0000 (07:17 +0000)]
eliminate the CheckMultiOpcodeMatcher code and have each
ComplexPattern at the root be generated multiple times, once
for each opcode they are part of. This encourages factoring
because the opcode checks get treated just like everything
else in the matcher.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97439
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 06:59:22 +0000 (06:59 +0000)]
add a new OPC_SwitchOpcode which is semantically equivalent
to a scope where every child starts with a CheckOpcode, but
executes more efficiently. Enhance DAGISelMatcherOpt to
form it.
This also fixes a bug in CheckOpcode: apparently the SDNodeInfo
objects are not pointer comparable, we have to compare the
enum name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97438
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 02:33:14 +0000 (02:33 +0000)]
pull MarkFlagResult out from between an EmitNode/CompleteMatch
pair. This encourages MorphNodeTo formation, this gets us 200
more MorphNodeTo's on X86 and shrinks the table a bit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97434
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 02:24:17 +0000 (02:24 +0000)]
enhance RecordNode and RecordChild comments to indicate what
slot they're recording into, no functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97433
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 02:15:34 +0000 (02:15 +0000)]
Emit redundant opcode checks for andimm and orimm tests at root
so that we get grouping at the top level.
Add an optimization to reorder type check & record nodes
after opcode checks. We prefer to expose tree shape
matching which improves grouping and will enhance the next
optimization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97432
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2010 01:54:19 +0000 (01:54 +0000)]
inline the node transforms and node predicates into the generated
dispatcher method. This eliminates the dependence of the new isel's
generated code on the old isel's predicates, however some random
hand written isel code still uses them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97431
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 28 Feb 2010 23:00:47 +0000 (23:00 +0000)]
simplify some code now that chain/flag results are not stored in
the vtlist for emitnode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97429
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 28 Feb 2010 22:57:03 +0000 (22:57 +0000)]
don't emit useless functions. These were producing
warnings in release-assert builds if there were no cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97428
91177308-0d34-0410-b5e6-
96231b3b80d8
Mikhail Glushenkov [Sun, 28 Feb 2010 22:54:30 +0000 (22:54 +0000)]
80-col violations/trailing whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97427
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 28 Feb 2010 22:38:43 +0000 (22:38 +0000)]
eliminate GetInt1/2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97426
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 28 Feb 2010 22:37:22 +0000 (22:37 +0000)]
hoist the new isel interpreter out of DAGISelHeader.h
(which gets #included into the middle of each
target's DAGISel class) into a .cpp file where it is
only compiled once.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97425
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 28 Feb 2010 22:14:32 +0000 (22:14 +0000)]
change a few opcodes to use VBRs instead of embedding
immediate sizes into the opcode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97423
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 28 Feb 2010 21:58:42 +0000 (21:58 +0000)]
move all the opcodes out of DAGISelHeader.h (which gets
#included into the middle of each isel class) into a real
header.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97421
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 28 Feb 2010 21:56:16 +0000 (21:56 +0000)]
resolve a fixme by using hte new flag.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97420
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 28 Feb 2010 21:53:42 +0000 (21:53 +0000)]
enhance the EmitNode/MorphNodeTo operands to take a bit that
specifies whether there is an output flag or not. Use this
instead of redundantly encoding the chain/flag results in the
output vtlist.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97419
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 28 Feb 2010 21:36:14 +0000 (21:36 +0000)]
enhance the new isel to handle the 'node already exists'
case of MorphNodeTo directly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97417
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 28 Feb 2010 20:55:18 +0000 (20:55 +0000)]
use MorphNodeTo instead of SelectNodeTo. SelectNodeTo
is just a silly wrapper around MorphNodeTo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97416
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 28 Feb 2010 20:49:53 +0000 (20:49 +0000)]
enhance the new isel to use SelectNodeTo for most patterns,
even some the old isel didn't. There are several parts of
this that make me feel dirty, but it's no worse than the
old isel. I'll clean up the parts I can do without ripping
out the old one next.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97415
91177308-0d34-0410-b5e6-
96231b3b80d8
Erick Tryzelaar [Sun, 28 Feb 2010 20:45:03 +0000 (20:45 +0000)]
Add support getting the operands of a User to ocaml.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97414
91177308-0d34-0410-b5e6-
96231b3b80d8
Erick Tryzelaar [Sun, 28 Feb 2010 20:44:58 +0000 (20:44 +0000)]
Add support for global aliases to ocaml.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97413
91177308-0d34-0410-b5e6-
96231b3b80d8
Erick Tryzelaar [Sun, 28 Feb 2010 20:44:53 +0000 (20:44 +0000)]
Add support for inserting inline asm to ocaml.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97412
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 28 Feb 2010 20:36:49 +0000 (20:36 +0000)]
add some random nounwinds.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97411
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 28 Feb 2010 18:57:59 +0000 (18:57 +0000)]
I'm removing andersaa after the branch is made.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97409
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 28 Feb 2010 18:53:13 +0000 (18:53 +0000)]
simplify this code, return only ever has zero or one operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97408
91177308-0d34-0410-b5e6-
96231b3b80d8
John McCall [Sun, 28 Feb 2010 12:49:50 +0000 (12:49 +0000)]
Properly clear all the extra bits in a significand when making a NaN from an
APInt. Be certain to set the integer bit in an x87 extended-precision
significand so that we don't accidentally make a pseudo-NaN.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97382
91177308-0d34-0410-b5e6-
96231b3b80d8