Dan Gohman
3aab10b932
Add minimal support for disambiguating memory references. Currently
...
the main thing this covers is spills to distinct spill slots.
llvm-svn: 60517
2008-12-04 01:35:46 +00:00
Dan Gohman
84efaf6a63
Rewrite the liveness bookkeeping code to fix a bunch of
...
issues with subreg operands and tied operands.
llvm-svn: 60510
2008-12-03 23:07:27 +00:00
Dan Gohman
ee1cd1781a
Have PseudoSourceValue override Value::dump, so that it works
...
on PseudoSourceValue values. This also fixes a FIXME in
lib/VMCode/AsmWriter.cpp.
llvm-svn: 60507
2008-12-03 21:37:21 +00:00
Dan Gohman
0c91a5f56c
Fix an inconsistency in a comment.
...
llvm-svn: 60500
2008-12-03 19:38:38 +00:00
Dan Gohman
434a3ca8e9
Don't charge the full latency for anti and output dependencies. This is
...
an area where eventually it would be good to use target-dependent
information.
llvm-svn: 60498
2008-12-03 19:37:34 +00:00
Dan Gohman
444baea236
When looking for anti-dependences on the critical path, don't bother
...
examining non-anti-dependence edges.
llvm-svn: 60496
2008-12-03 19:32:26 +00:00
Dan Gohman
1a32dda4aa
Add a comment about callee-saved registers.
...
llvm-svn: 60495
2008-12-03 19:30:13 +00:00
Dan Gohman
3f86b51333
Split foldMemoryOperand into public non-virtual and protected virtual
...
parts, and add target-independent code to add/preserve
MachineMemOperands.
llvm-svn: 60488
2008-12-03 18:43:12 +00:00
Dan Gohman
69cc2cbbff
Rename isSimpleLoad to canFoldAsLoad, to better reflect its meaning.
...
llvm-svn: 60487
2008-12-03 18:15:48 +00:00
Duncan Sands
f52e518d05
Only check that the result of the mapping was not
...
a new node if the node was actually remapped.
llvm-svn: 60482
2008-12-03 12:36:16 +00:00
Rafael Espindola
cda011b5ad
Fix bug 3140.
...
Print a single parameter .file directive if we have an ELF target.
llvm-svn: 60480
2008-12-03 11:01:37 +00:00
Dan Gohman
ae3ba45eb2
Add a sanity-check to tablegen to catch the case where isSimpleLoad
...
is set but mayLoad is not set. Fix all the problems this turned up.
Change code to not use isSimpleLoad instead of mayLoad unless it
really wants isSimpleLoad.
llvm-svn: 60459
2008-12-03 02:30:17 +00:00
Evan Cheng
e62150cae4
Remove a (what appears to be) overly strict assertion. Here is what happened:
...
1. ppcf128 select is expanded to f64 select's.
2. f64 select operand 0 is an i1 truncate, it's promoted to i32 zero_extend.
3. f64 select is updated. It's changed back to a "NewNode" and being re-analyzed.
4. f64 select operands are being processed. Operand 0 is a "NewNode". It's being expunged out of ReplacedValues map.
5. ExpungeNode tries to remap f64 select and notice it's a "NewNode" and assert.
Duncan, please take a look. Thanks.
llvm-svn: 60443
2008-12-02 21:57:09 +00:00
Scott Michel
9b0b28e021
Non-functional change: make custom lowering for truncate stylistically
...
consistent with the way it's generally done in other places.
llvm-svn: 60439
2008-12-02 19:55:08 +00:00
Dan Gohman
7e9daef644
Fix a typo in a comment.
...
llvm-svn: 60434
2008-12-02 19:27:20 +00:00
Owen Anderson
ecd5b5f2b2
Add support for folding spills into preceding defs when doing pre-alloc splitting.
...
llvm-svn: 60433
2008-12-02 18:53:47 +00:00
Dale Johannesen
54bdec238a
One more transformation.
...
llvm-svn: 60432
2008-12-02 18:40:40 +00:00
Tilmann Scheller
318ccb0e62
make it possible to custom lower TRUNCATE (needed for the CellSPU target)
...
llvm-svn: 60409
2008-12-02 12:12:25 +00:00
Mon P Wang
6e1c6ad127
Removed some unnecessary code in widening.
...
llvm-svn: 60406
2008-12-02 07:35:08 +00:00
Evan Cheng
1718fd4375
Fix PR3124: overly strict assert.
...
llvm-svn: 60392
2008-12-02 02:15:36 +00:00
Dale Johannesen
8c76670b5a
Add a few more transformations.
...
llvm-svn: 60391
2008-12-02 01:30:54 +00:00
Bill Wendling
2d59863d06
Expand getVTList, getNodeValueTypes, and SelectNodeTo to handle more value types.
...
llvm-svn: 60381
2008-12-01 23:28:22 +00:00
Duncan Sands
3d960941b1
There are no longer any places that require a
...
MERGE_VALUES node with only one operand, so get
rid of special code that only existed to handle
that possibility.
llvm-svn: 60349
2008-12-01 11:41:29 +00:00
Duncan Sands
6ed40141f7
Change the interface to the type legalization method
...
ReplaceNodeResults: rather than returning a node which
must have the same number of results as the original
node (which means mucking around with MERGE_VALUES,
and which is also easy to get wrong since SelectionDAG
folding may mean you don't get the node you expect),
return the results in a vector.
llvm-svn: 60348
2008-12-01 11:39:25 +00:00
Eli Friedman
c8228d263b
Followup to r60283: optimize arbitrary width signed divisions as well
...
as unsigned divisions. Same caveats as before.
llvm-svn: 60284
2008-11-30 06:35:39 +00:00
Eli Friedman
1b7fc154a5
Fix for PR2164: allow transforming arbitrary-width unsigned divides into
...
multiplies.
Some more cleverness would be nice, though. It would be nice if we
could do this transformation on illegal types. Also, we would
prefer a narrower constant when possible so that we can use a narrower
multiply, which can be cheaper.
llvm-svn: 60283
2008-11-30 06:02:26 +00:00
Eli Friedman
bd0f57821a
APIntify a test which is potentially unsafe otherwise, and fix the
...
nearby FIXME.
I'm not sure what the right way to fix the Cell test was; if the
approach I used isn't okay, please let me know.
llvm-svn: 60277
2008-11-30 04:59:26 +00:00
Nick Lewycky
2c96bdd8d6
Silence a warning.
...
Despite changing the order of evaluation, this doesn't actually change the
meaning of the statement.
llvm-svn: 60177
2008-11-27 17:29:52 +00:00
Sanjiv Gupta
7ae1a84465
Removing redundant semicolons. No functionality change.
...
llvm-svn: 60149
2008-11-27 05:58:04 +00:00
Evan Cheng
3761143755
Avoid inserting noop's in the middle of a loop.
...
llvm-svn: 60141
2008-11-27 01:16:00 +00:00
Dale Johannesen
73bc0ba4c9
Add a missing case in visitADD.
...
llvm-svn: 60137
2008-11-27 00:43:21 +00:00
Sanjiv Gupta
80810f8c6b
Allow custom lowering of ADDE/ADDC/SUBE/SUBC operations.
...
llvm-svn: 60102
2008-11-26 11:19:00 +00:00
Dan Gohman
3336b1f06b
LiveRanges are represented as half-open ranges. Fix the findLiveInMBBs code
...
and the LiveInterval.h top-level comment and accordingly. This fixes blocks
having spurious live-in registers in boundary cases.
llvm-svn: 60092
2008-11-26 05:50:31 +00:00
Bill Wendling
b4ff5322c1
A simplification for checking whether the signs of the operands and sum differ. Thanks, Duncan.
...
llvm-svn: 60043
2008-11-25 19:40:17 +00:00
Dan Gohman
bb1298e6d4
Suppress warnings.
...
llvm-svn: 60041
2008-11-25 18:53:54 +00:00
Bill Wendling
bf592fccd4
Now with the correct type for the 0.
...
llvm-svn: 60016
2008-11-25 08:19:22 +00:00
Bill Wendling
d06c625b95
Get rid of unused variable.
...
llvm-svn: 60015
2008-11-25 08:13:20 +00:00
Bill Wendling
4498b47677
Hacker's Delight says, "Signed integer overflow of addition occurs if and only
...
if the operands have the same sign and the sum has sign opposite to that of the
operands."
llvm-svn: 60014
2008-11-25 08:12:19 +00:00
Dan Gohman
ad2134d45d
Initial support for anti-dependence breaking. Currently this code does not
...
introduce any new spilling; it just uses unused registers.
Refactor the SUnit topological sort code out of the RRList scheduler and
make use of it to help with the post-pass scheduler.
llvm-svn: 59999
2008-11-25 00:52:40 +00:00
Bill Wendling
66835479d7
- Make lowering of "add with overflow" customizable by back-ends.
...
- Mark "add with overflow" as having a custom lowering for X86. Give it a null
lowering representation for now.
llvm-svn: 59971
2008-11-24 19:21:46 +00:00
Dan Gohman
5cc12a8e31
Check in the rest of this change. The isAntiDep flag needs to be passed
...
to removePred because an SUnit can both data-depend and anti-depend
on the same SUnit.
llvm-svn: 59969
2008-11-24 17:33:52 +00:00
Dan Gohman
d2b10368ed
Pass the isAntiDep argument.
...
llvm-svn: 59968
2008-11-24 17:24:27 +00:00
Dan Gohman
11e4be3717
Run post-RA scheduling after branch folding, as it tends to
...
obscure tail-merging opportunities.
llvm-svn: 59967
2008-11-24 17:22:52 +00:00
Matthijs Kooijman
1dc8363d95
Minor fix debug for register allocation debug output.
...
llvm-svn: 59961
2008-11-24 16:01:21 +00:00
Duncan Sands
dc2dac181a
If the type legalizer actually legalized anything
...
(this doesn't happen that often, since most code
does not use illegal types) then follow it by a
DAG combiner run that is allowed to generate
illegal operations but not illegal types. I didn't
modify the target combiner code to distinguish like
this between illegal operations and illegal types,
so it will not produce illegal operations as well
as not producing illegal types.
llvm-svn: 59960
2008-11-24 14:53:14 +00:00
Evan Cheng
a8fd1f2c8e
Eliminate some unused variable compile time warnings.
...
llvm-svn: 59952
2008-11-24 07:09:49 +00:00
Bill Wendling
2278f8f5e1
Add support for llvm.uadd.with.overflow.
...
llvm-svn: 59926
2008-11-24 01:38:29 +00:00
Duncan Sands
8d6e2e13d5
Rename SetCCResultContents to BooleanContents. In
...
practice these booleans are mostly produced by SetCC,
however the concept is more general.
llvm-svn: 59911
2008-11-23 15:47:28 +00:00
Mon P Wang
2967480f54
Added check to avoid generating extract subvector beyond the end of the vector when normalizing vector shuffles.
...
llvm-svn: 59900
2008-11-23 04:35:05 +00:00
Anton Korobeynikov
bff4b37af5
Make a convenient helper for printing offsets.
...
llvm-svn: 59872
2008-11-22 16:15:34 +00:00