Chris Lattner
28369b8d7d
Make getNodeValueTypes methods public.
...
llvm-svn: 29688
2006-08-14 23:54:24 +00:00
Chris Lattner
8e8d9a3358
Add a new getNode() method that takes a pointer to an already-intern'd list
...
of value-type nodes. This avoids having to do mallocs for std::vectors of
valuetypes when a node returns more than one type.
llvm-svn: 29685
2006-08-14 23:31:51 +00:00
Chris Lattner
9ff7eb17e0
remove SelectionDAG::InsertISelMapEntry, it is dead
...
llvm-svn: 29677
2006-08-14 22:24:39 +00:00
Chris Lattner
fe1fd00ce8
Add code to resize the CSEMap hash table. This doesn't speedup codegen of
...
kimwitu, but seems like a good idea from a "avoid performance cliffs" standpoint :)
llvm-svn: 29675
2006-08-14 22:19:25 +00:00
Nate Begeman
0e92042770
Emit .set directives for jump table entries when possible, which reduces
...
the number of relocations in object files, shrinkifying them.
llvm-svn: 29650
2006-08-12 21:29:52 +00:00
Chris Lattner
7d59e9d16c
Track # nodes in a CSEMap.
...
llvm-svn: 29643
2006-08-12 01:07:51 +00:00
Chris Lattner
5510fa4ac5
Switch NodeID to track 32-bit chunks instead of 8-bit chunks, for a 2.5%
...
speedup in isel time.
llvm-svn: 29640
2006-08-11 23:55:53 +00:00
Chris Lattner
a271f8f58c
Remove 8 more std::map's.
...
llvm-svn: 29631
2006-08-11 21:55:30 +00:00
Chris Lattner
173c5fb3f3
remove old piece of the V9 backend.
...
llvm-svn: 29628
2006-08-11 21:11:35 +00:00
Chris Lattner
c3f78d1407
Start moving leaf nodes over to the CSEMap.
...
llvm-svn: 29625
2006-08-11 21:00:46 +00:00
Chris Lattner
c3def8c8f4
new method for adding ints
...
llvm-svn: 29622
2006-08-11 18:53:44 +00:00
Chris Lattner
3c504c013b
eliminate the NullaryOps map, use CSEMap instead.
...
llvm-svn: 29621
2006-08-11 18:38:11 +00:00
Chris Lattner
d154649343
Change one ReplaceAllUsesWith method to take an array of operands to replaceinstead of a vector of operands.
...
llvm-svn: 29617
2006-08-11 17:46:44 +00:00
Chris Lattner
cc742c4155
Remove now-dead method.
...
llvm-svn: 29615
2006-08-11 17:40:26 +00:00
Chris Lattner
587718e305
remove a (now) unused getNode method.
...
llvm-svn: 29613
2006-08-11 17:25:05 +00:00
Chris Lattner
7b1362fa52
Start eliminating temporary vectors used to create DAG nodes. Instead, pass
...
in the start of an array and a count of operands where applicable. In many
cases, the number of operands is known, so this static array can be allocated
on the stack, avoiding the heap. In many other cases, a SmallVector can be
used, which has the same benefit in the common cases.
I updated a lot of code calling getNode that takes a vector, but ran out of
time. The rest of the code should be updated, and these methods should be
removed.
We should also do the same thing to eliminate the methods that take a
vector of MVT::ValueTypes.
It would be extra nice to convert the dagiselemitter to avoid creating vectors
for operands when calling getTargetNode.
llvm-svn: 29566
2006-08-08 02:23:42 +00:00
Chris Lattner
be2fc7b875
Eliminate some malloc traffic by allocating vectors on the stack. Change some
...
method that took std::vector<SDOperand> to take a pointer to a first operand
and #operands.
This speeds up isel on kc++ by about 3%.
llvm-svn: 29561
2006-08-08 01:09:31 +00:00
Chris Lattner
8058dae7a7
New CSEMap datastructure impl
...
llvm-svn: 29555
2006-08-07 23:31:24 +00:00
Chris Lattner
1661ffa2eb
Revamp the "CSEMap" datastructure used in the SelectionDAG class. This
...
eliminates a bunch of std::map's in the SelectionDAG, replacing them with a
home-grown hashtable.
This is still a work in progress: not all the maps have been moved over and the
hashtable never resizes. That said, this still speeds up llc 20% on kimwitu++
with -fast -regalloc=local using a release build.
llvm-svn: 29550
2006-08-07 23:03:03 +00:00
Evan Cheng
a42653b7ae
Move DAGSize to SelectionDAGISel; it's used in tablegen'd isel code.
...
llvm-svn: 29547
2006-08-07 22:16:08 +00:00
Chris Lattner
154ffd3c8f
Make SelectionDAG::RemoveDeadNodes iterative instead of recursive, which
...
also make it simpler.
llvm-svn: 29524
2006-08-04 17:45:20 +00:00
Evan Cheng
7bdbdf9ae7
AssignTopologicalOrder now returns the vector of SDNode* by reference to
...
avoid the expensive operation of copying a vector.
It also returns a maximum id by value.
llvm-svn: 29478
2006-08-02 21:58:44 +00:00
Jim Laskey
6d121090d3
Final polish on machine pass registries.
...
llvm-svn: 29471
2006-08-02 12:30:23 +00:00
Jim Laskey
f850832788
Breaking out specialized classes.
...
llvm-svn: 29470
2006-08-02 12:27:50 +00:00
Jim Laskey
f9f462bc5e
Now that the ISel is available, it's possible to create a default instruction
...
scheduler creator.
llvm-svn: 29452
2006-08-01 19:14:14 +00:00
Jim Laskey
f5e160063e
1. Change use of "Cache" to "Default".
...
2. Added argument to instruction scheduler creators so the creators can do
special things.
3. Repaired target hazard code.
4. Misc.
More to follow.
llvm-svn: 29450
2006-08-01 18:29:48 +00:00
Jim Laskey
29880272a9
Forgot the added files for plugable machine passes.
...
llvm-svn: 29436
2006-08-01 16:31:08 +00:00
Jim Laskey
b92b14f422
Introducing plugable register allocators and instruction schedulers.
...
llvm-svn: 29434
2006-08-01 14:21:23 +00:00
Evan Cheng
e4fdb294ae
Added AssignTopologicalOrder() to assign each node an unique id based on their topological order.
...
llvm-svn: 29431
2006-08-01 08:20:41 +00:00
Evan Cheng
5f0e94c299
Rename IsFoldableBy to CanBeFoldedleBy
...
llvm-svn: 29376
2006-07-28 01:03:48 +00:00
Evan Cheng
3b5f1c6248
Remove InFlightSet hack. No longer needed.
...
llvm-svn: 29373
2006-07-28 00:47:19 +00:00
Evan Cheng
60d02d04dd
Add basic block machine relocation.
...
llvm-svn: 29349
2006-07-27 18:18:13 +00:00
Evan Cheng
bdb2562804
AssignNodeIds should return unsigned.
...
llvm-svn: 29343
2006-07-27 07:36:47 +00:00
Evan Cheng
a8e15977aa
Remove NodeDepth; Add NodeId which is a unique id per node per DAG. It can only be set by SelectionDAG.
...
llvm-svn: 29336
2006-07-27 06:38:21 +00:00
Evan Cheng
1e640aeee8
Let each target specific isel provide routine to check if a chain producing node is foldable by another.
...
llvm-svn: 29335
2006-07-27 06:36:49 +00:00
Nate Begeman
3d5f5b4e8b
Support jump tables when in PIC relocation model
...
llvm-svn: 29318
2006-07-27 01:13:04 +00:00
Chris Lattner
2d0f9f0d59
Move MVT::getVectorType out of line, it is large and shouldn't be inlined.
...
llvm-svn: 29195
2006-07-19 00:40:45 +00:00
Chris Lattner
3415e20ae6
Add an out-of-line virtual method for the sdnode class to give it a home.
...
llvm-svn: 29192
2006-07-19 00:00:37 +00:00
Chris Lattner
ac585b37b1
Add an out-of-line virtual function to home class.
...
llvm-svn: 29154
2006-07-14 23:08:47 +00:00
Jim Laskey
6fe083c694
1. Support for c++ mangled names.
...
2. Support for private/protected class members.
llvm-svn: 29104
2006-07-11 15:58:09 +00:00
Evan Cheng
90a25bcd6f
Ugly hack! Add helper functions InsertInFlightSetEntry and
...
RemoveInFlightSetEntry. They are used in place of direct set operators to
reduce instruction selection function stack size.
llvm-svn: 28987
2006-06-29 23:57:05 +00:00
Evan Cheng
6ec6e10b48
Add support to print 4-, 8-, and 16- byte constant literals in special
...
sections. e.g. On Darwin that would be .literal4 and .literal8.
llvm-svn: 28977
2006-06-29 00:26:09 +00:00
Evan Cheng
6572fa9869
Allow EmitConstantPool to be redefined by derived classes.
...
llvm-svn: 28952
2006-06-28 00:52:32 +00:00
Jim Laskey
a8284f65e1
Add and sort "sections" in debug lines. This always stepping through
...
code in sections other than ".text", including weak sections like ctors and
dtors.
llvm-svn: 28909
2006-06-23 12:51:53 +00:00
Evan Cheng
2db138d4b0
Added jump table address relocation.
...
llvm-svn: 28908
2006-06-23 01:02:37 +00:00
Evan Cheng
72794862e1
Fix non-64-bit clean code.
...
llvm-svn: 28891
2006-06-21 00:29:14 +00:00
Jim Laskey
120281ddcf
1. Revise vector debug support.
...
2. Update docs for vector debug support and new version control.
3. Simplify serialization of DebugDescInfo subclasses.
llvm-svn: 28816
2006-06-16 13:14:03 +00:00
Jim Laskey
849c76e55c
1. Support standard dwarf format (was bootstrapping in Apple format.)
...
2. Add vector support.
llvm-svn: 28807
2006-06-15 20:51:43 +00:00
Jim Laskey
bd680a03fd
Change versioning to per debug info descriptor (merged with tag.)
...
llvm-svn: 28782
2006-06-14 14:45:39 +00:00
Jim Laskey
69d5018a05
Place dwarf headers at earliest possible point. Well behaved when skipping
...
functions.
llvm-svn: 28781
2006-06-14 11:35:03 +00:00