Duncan Sands
1315f80ea8
Reapply r59464, this time using the correct type
...
when softening FNEG.
llvm-svn: 59513
2008-11-18 09:15:03 +00:00
Bill Wendling
7235002bd1
Remove the stackprotector_check intrinsic. Use a volatile load instead.
...
llvm-svn: 59504
2008-11-18 07:30:57 +00:00
Bill Wendling
eeb0415980
- Use "moveAfter" instead of "remove/insert" of a basic block.
...
- Use less indentation in coding.
- Shorten description.
- Update comments.
- Move code around
llvm-svn: 59496
2008-11-18 05:32:11 +00:00
Dan Gohman
fe1748da07
Fix a typo in a comment.
...
llvm-svn: 59489
2008-11-18 02:50:01 +00:00
Dan Gohman
22d07b14bc
Change SUnit's dump method to take a ScheduleDAG* instead of
...
a SelectionDAG*.
llvm-svn: 59488
2008-11-18 02:06:40 +00:00
Bill Wendling
e0d5e67c98
Revert r59464. It was causing this failure:
...
Running /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/XCore/dg.exp ...
FAIL: /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/XCore/fneg.ll
Failed with signal(SIGABRT) at line 1
while running: llvm-as < /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/XCore/fneg.ll | llc -march=xcore > fneg.ll.tmp1.s
Assertion failed: (VT.isFloatingPoint() && "Cannot create integer FP constant!"), function getConstantFP, file /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/lib/CodeGen/SelectionDAG/SelectionDAG.cpp, line 913.
0 llc 0x0092115c _ZN4llvm3sys18RemoveFileOnSignalERKNS0_4PathEPSs + 844
1 libSystem.B.dylib 0x9217809b _sigtramp + 43
2 ??? 0xffffffff 0x0 + 4294967295
3 libSystem.B.dylib 0x921f0ec2 raise + 26
4 libSystem.B.dylib 0x9220047f abort + 73
5 libSystem.B.dylib 0x921f2063 __assert_rtn + 101
6 llc 0x005a5b0a _ZN4llvm12SelectionDAG13getConmake[1]: *** [check-local] Error 1
make: *** [check] Error 2
llvm-svn: 59487
2008-11-18 01:49:24 +00:00
Dan Gohman
5ebdb98a6e
Avoid using a loop in ReleasePred and ReleaseSucc methods to compute the
...
new CycleBound value. Instead, just update CycleBound on each call.
Also, make ReleasePred and ReleaseSucc methods more consistent accross
the various schedulers.
This also happens to make ScheduleDAGRRList's CycleBound computation
somewhat more interesting, though it still doesn't have any noticeable
effect, because no current targets that use the register-pressure
reduction scheduler provide pipeline models.
llvm-svn: 59475
2008-11-18 00:38:59 +00:00
Dan Gohman
92a36d7a78
Eliminate some trivial differences between the ScheduleNodeTopDown
...
functions in these two schedulers.
llvm-svn: 59465
2008-11-17 21:31:02 +00:00
Duncan Sands
f046b50ecd
Add soft float support for a bunch more operations. Original
...
patch by Richard Osborne, tweaked and extended by your humble
servant.
llvm-svn: 59464
2008-11-17 20:52:38 +00:00
Dan Gohman
4f474b092e
Don't bother doing latency calculations in the "fast" scheduler.
...
llvm-svn: 59461
2008-11-17 19:52:36 +00:00
Dan Gohman
a687fd8339
Use SUnit's CycleBound field instead of duplicating it in
...
a side-car datastructure
llvm-svn: 59458
2008-11-17 19:45:19 +00:00
Richard Osborne
6751b4a604
Don't produce ADDC/ADDE when expanding SHL unless they are legal
...
for the target. This fixes PR3080.
llvm-svn: 59450
2008-11-17 17:34:31 +00:00
Dan Gohman
17c226b8ca
Don't use the isPending flag to mean what the isAvailable flag means.
...
llvm-svn: 59445
2008-11-17 16:37:30 +00:00
Mon P Wang
4964368e0d
Fixed legalization of CONVERT_RNDSAT for integers.
...
llvm-svn: 59432
2008-11-17 00:41:12 +00:00
Lang Hames
49ab8bc67d
Big PBQP allocator update. Adds coalescing support, stack slot coloring, several bug-fixes.
...
llvm-svn: 59414
2008-11-16 12:12:54 +00:00
Mon P Wang
7a82474387
Improved shuffle normalization to avoid using extract/build when we
...
can extract using different indexes for two vectors. Added a few tests
for vector shuffles.
llvm-svn: 59399
2008-11-16 05:06:27 +00:00
Duncan Sands
da8d2873ed
When splitting a SHUFFLE_VECTOR, try to have the result
...
use SHUFFLE_VECTOR instead. If not practical, fall back
to the old scheme of building the split result by hand
using a BUILD_VECTOR.
llvm-svn: 59361
2008-11-15 09:25:38 +00:00
Mon P Wang
f414cbc1fd
Add missing widen operations, fixed widening for extracting a subvector,
...
and when loading/storing a widen vector, make sure that they are loaded
and stored in consecutive order.
llvm-svn: 59357
2008-11-15 06:05:52 +00:00
Dan Gohman
68294c06fe
Correct a comment.
...
llvm-svn: 59341
2008-11-15 00:24:23 +00:00
Dan Gohman
d2760c0473
Move ScheduleDAGList's LatencyPriorityQueue class out to a separate file.
...
llvm-svn: 59340
2008-11-15 00:23:40 +00:00
Dan Gohman
1472955eab
Add support for building a ScheduleDAG from MachineInstrs. This is currently
...
fairly conservative; it doesn't do alias-analysis queries and it doesn't
attempt to break anti-dependencies.
llvm-svn: 59324
2008-11-14 21:47:58 +00:00
Lang Hames
9a91bd82c5
Test commit.
...
llvm-svn: 59293
2008-11-14 06:51:35 +00:00
Dan Gohman
db8b95a4fa
For post-regalloc scheduling, remove the instructions from the block
...
before re-inserting them.
llvm-svn: 59281
2008-11-14 00:33:17 +00:00
Dan Gohman
1a21ab6925
Check in the correct version of the patch in r59279.
...
llvm-svn: 59280
2008-11-14 00:32:34 +00:00
Dan Gohman
8f973f157d
Debug printing for SUnits that carry MachineInstrs.
...
llvm-svn: 59279
2008-11-14 00:28:56 +00:00
Dan Gohman
ee8273e52f
Initial support for carrying MachineInstrs in SUnits.
...
llvm-svn: 59278
2008-11-14 00:06:09 +00:00
Dan Gohman
a2cbbaa41f
Change DOTGraphTraits<ScheduleDAG*>::getGraphName how to find the name of
...
the current function on its own, rather than relying on the SelectionDAG.
llvm-svn: 59277
2008-11-13 23:45:55 +00:00
Dan Gohman
072734ebd6
Remove the FlaggedNodes member from SUnit. Instead of requiring each SUnit
...
to carry a SmallVector of flagged nodes, just calculate the flagged nodes
dynamically when they are needed.
The local-liveness change is due to a trivial scheduling change where
the scheduler arbitrary decision differently.
llvm-svn: 59273
2008-11-13 23:24:17 +00:00
Owen Anderson
d36b4c1bf8
Don't allow the restore point to be placed after terminators. With this change,
...
MultiSource/Applications is clean with the prealloc splitter. Some failures
remain in SPEC.
llvm-svn: 59267
2008-11-13 21:53:14 +00:00
Dan Gohman
1ddfcba5be
Make the Node member of SUnit private, and add accessors.
...
llvm-svn: 59264
2008-11-13 21:36:12 +00:00
Dan Gohman
5a390b974c
Change ScheduleDAG's DAG member from a reference to a pointer, to prepare
...
for the possibility of scheduling without a SelectionDAG being present.
llvm-svn: 59263
2008-11-13 21:21:28 +00:00
Dan Gohman
8fed4ce0b8
Use find_first/find_next to iterate through all the set bits in a
...
BitVector, instead of manually testing each bit.
llvm-svn: 59246
2008-11-13 16:31:27 +00:00
Bill Wendling
ccb67a3d85
Implement stack protectors as function attributes: "ssp" and "sspreq".
...
llvm-svn: 59202
2008-11-13 01:02:14 +00:00
Dan Gohman
88ba5f0b96
Move the code that inserts X87 FP_REG_KILL instructions from a
...
special-purpose hook to a new pass. Also, add check to see if any
x87 virtual registers are used, to avoid doing any work in the
common case that no x87 code is needed.
llvm-svn: 59190
2008-11-12 22:55:05 +00:00
Dale Johannesen
6467858be1
Fix unsigned char->ppcf128 conversion.
...
llvm-svn: 59150
2008-11-12 18:38:44 +00:00
Dan Gohman
0df957e09d
Do the LiveVariables update before printing the instruction in
...
the debug output, so that the updated liveness flags are
reflected in the debug output.
llvm-svn: 59147
2008-11-12 17:15:19 +00:00
Dan Gohman
5efcb61337
Remove some debugging code made redundant by the change to do
...
coalescing as a separate pass rather than inside of
LiveIntervalAnalysis.
llvm-svn: 59146
2008-11-12 17:09:23 +00:00
Duncan Sands
2907b0085c
Simplify SplitVecRes_EXTRACT_SUBVECTOR. This means
...
that it no longer handles non-power-of-two vectors.
However it previously only handled them sometimes,
depending on obscure numerical relationships between
the index and vector type. For example, for a vector
of length 6, it would succeed if and only if the
index was an even multiple of 6. I consider this
more confusing than useful.
llvm-svn: 59122
2008-11-12 08:37:57 +00:00
Duncan Sands
aa7060c885
Correct some thinkos in the expansion of ADD/SUB
...
when the target does not support ADDC/SUBC. This
fixes PR3044.
llvm-svn: 59120
2008-11-12 08:23:26 +00:00
Dale Johannesen
ffc67df2aa
Fix the testb optimization so x86 also bootstraps.
...
Reenable test.
llvm-svn: 59101
2008-11-12 02:00:35 +00:00
Owen Anderson
fd395eb801
Don't walk into predecessors in which the vreg is not live when doing shrinkwrapping.
...
This lets several failing tests get farther along, but doesn't completely fix any of them.
llvm-svn: 59086
2008-11-11 22:11:27 +00:00
Dan Gohman
e52e0897e2
In ScheduleDAGRRList::CopyAndMoveSuccessors, create the SUnit for the load
...
before creating the SUnit for the operation that it was unfolded from. This
allows each SUnit to have all of its predecessor SUnits available at the time
it is created. I don't know yet if this will be absolutely required, but it
is a little tidier to do it this way.
llvm-svn: 59083
2008-11-11 21:34:44 +00:00
Dan Gohman
fb78ef9fd3
Avoid relying on the SelectionDAG for initializing the MachineFunction and
...
TargetLoweringInfo variables for the scheduler.
llvm-svn: 59082
2008-11-11 21:31:56 +00:00
Dan Gohman
5499e89d06
Change the scheduler accessor methods to accept an explicit TargetMachine
...
argument instead of taking the SelectionDAG's TargetMachine. This is
needed for some upcoming scheduler changes.
llvm-svn: 59055
2008-11-11 17:50:47 +00:00
Bill Wendling
49a5ce863e
Fix for PR3040:
...
The CC was changed, but wasn't checked to see if it was legal if the DAG
combiner was being run after legalization. Threw in a couple of checks just to
make sure that it's okay. As far as the PR is concerned, no back-end target
actually exhibited this problem, so there isn't an associated testcase.
llvm-svn: 59035
2008-11-11 08:25:46 +00:00
Mon P Wang
774e9ac433
Cleaned up and fix bugs in convert_rndsat node
...
llvm-svn: 59025
2008-11-11 05:40:06 +00:00
Bill Wendling
cfa3e287bb
Small simplification. Use the iterator already present as the insertion point.
...
llvm-svn: 59008
2008-11-10 23:38:59 +00:00
Bill Wendling
b85755c829
Temporarily revert r58979 and related patch. It's causing a failure in X86 bootstrap:
...
Comparing stages 2 and 3
warning: ./cc1-checksum.o differs
warning: ./cc1obj-checksum.o differs
warning: ./cc1objplus-checksum.o differs
warning: ./cc1plus-checksum.o differs
Bootstrap comparison failure!
./alias.o differs
./alloc-pool.o differs
./attribs.o differs
./bb-reorder.o differs
./bitmap.o differs
./build/errors.o differs
./build/genattrtab.o differs
./build/genautomata.o differs
./build/genemit.o differs
./build/genextract.o differs
...
-bw
llvm-svn: 59003
2008-11-10 21:22:06 +00:00
Bill Wendling
747f59f0f7
- Make sure that we don't over-increment the iterator when going through the
...
basic blocks.
- Minor code clean-up.
llvm-svn: 59002
2008-11-10 21:13:10 +00:00
Mon P Wang
58fb9135e2
Added CONVERT_RNDSAT (conversion with rounding and saturation) SDNode to
...
support targets that support these conversions. Users should avoid using
this node as the current targets don't generating code for it.
llvm-svn: 59001
2008-11-10 20:54:11 +00:00