1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 04:32:44 +01:00
Commit Graph

684 Commits

Author SHA1 Message Date
Chris Lattner
bfa198b9f1 add support for .asciz, and enable it by default. If your target assembler
doesn't support .asciz, just set AscizDirective to null in your asmprinter.

This compiles C strings to:

l1__2E_str_1:                           ; '.str_1'
        .asciz  "foo"

instead of:

l1__2E_str_1:                           ; '.str_1'
        .ascii  "foo\000"

llvm-svn: 24271
2005-11-10 18:05:57 +00:00
Chris Lattner
ce6f7839fe Switch the allnodes list from a vector of pointers to an ilist of nodes.
This eliminates the vector, allows constant time removal of a node from
a graph, and makes iteration over the all nodes list stable when adding
nodes to the graph.

llvm-svn: 24262
2005-11-09 23:46:43 +00:00
Chris Lattner
e1cf681dee Change the ValueList array for each node to be shared instead of individually
allocated.  Further, in the common case where a node has a single value, just
reference an element from a small array.  This is a small compile-time wi.

llvm-svn: 24250
2005-11-08 23:30:11 +00:00
Chris Lattner
12686ba20f Switch the operandlist/valuelist from being vectors to being just an array.
This saves 12 bytes from SDNode, but doesn't speed things up substantially
(our graphs apparently already fit within the cache on my g5).  In any case
this reduces memory usage.

llvm-svn: 24248
2005-11-08 22:06:23 +00:00
Chris Lattner
32dee7201b adjust itf
llvm-svn: 24242
2005-11-08 18:52:57 +00:00
Chris Lattner
f0f5449612 Change a comment slightly
llvm-svn: 24226
2005-11-06 17:40:18 +00:00
Nate Begeman
aecebc076b Add the necessary support to the ISel to allow targets to codegen the new
alignment information appropriately.  Includes code for PowerPC to support
fixed-size allocas with alignment larger than the stack.  Support for
arbitrarily aligned dynamic allocas coming soon.

llvm-svn: 24224
2005-11-06 09:00:38 +00:00
Chris Lattner
4ab26b20b7 Add a method
llvm-svn: 23989
2005-10-25 21:02:21 +00:00
Chris Lattner
1245463d22 Remove a prototype
llvm-svn: 23951
2005-10-24 04:13:21 +00:00
Andrew Lenharth
9fad56d2d2 add TargetExternalSymbol
llvm-svn: 23886
2005-10-23 03:40:17 +00:00
Chris Lattner
610724aedd add missing prototype
llvm-svn: 23867
2005-10-21 15:49:28 +00:00
Chris Lattner
ca5f516c08 add a new method
llvm-svn: 23840
2005-10-20 07:37:59 +00:00
Nate Begeman
b49e7aa166 SimplifySelectCC is dead
llvm-svn: 23705
2005-10-13 03:10:46 +00:00
Chris Lattner
bc5ae03dea add a helper class
llvm-svn: 23633
2005-10-05 06:34:34 +00:00
Jim Laskey
1c928ba21a Added allnodes_size for scheduling support.
llvm-svn: 23567
2005-09-30 19:27:01 +00:00
Chris Lattner
9a2fb006e4 Add FP versions of the binary operators, keeping the int and fp worlds seperate.
llvm-svn: 23506
2005-09-28 22:29:58 +00:00
Chris Lattner
288e5b0a7d Expose the LiveInterval interfaces as public headers.
llvm-svn: 23400
2005-09-21 04:19:09 +00:00
Chris Lattner
b68c833b48 Add a new argument to ReplaceAllUsesWith to keep track of nodes deleted by
this method

llvm-svn: 23254
2005-09-07 05:36:18 +00:00
Chris Lattner
7862cff120 add a map for nullary ops
llvm-svn: 23223
2005-09-02 19:35:42 +00:00
Chris Lattner
a0ac88861d Add a new ANY_EXTEND node, which operates like an extension but has undefined
top bits.

llvm-svn: 23200
2005-09-02 00:14:40 +00:00
Nate Begeman
be2fa8f86f First pass at the DAG Combiner. It isn't used anywhere yet, but it should
be mostly functional.  It currently has all folds from SelectionDAG.cpp
that do not involve a condition code.

llvm-svn: 23184
2005-09-01 00:19:25 +00:00
Chris Lattner
ed58907fa3 remove an inappropriate comment
llvm-svn: 23182
2005-08-31 22:49:51 +00:00
Chris Lattner
b06ce2e026 Allow physregs to occur in the dag with multiple types. Though I don't like
this, it is a requirement on PPC, which can have an f32 value in r3 at one
point in a function and a f64 value in r3 at another point.  :(

llvm-svn: 23160
2005-08-30 22:38:05 +00:00
Nate Begeman
f279937fd9 Add AssertSext, AssertZext nodes for targets that pass arguments in
registers, and the incoming values have already been zero or sign extended
from the appopriate type to the register width.

llvm-svn: 23146
2005-08-30 02:39:32 +00:00
Chris Lattner
d6753aa388 add some method variants
llvm-svn: 23142
2005-08-30 01:56:13 +00:00
Chris Lattner
1a17dba9d1 improve comment
llvm-svn: 23134
2005-08-29 22:48:32 +00:00
Chris Lattner
05f6bb1b68 Add a new API for nate
llvm-svn: 23132
2005-08-29 22:00:00 +00:00
Reid Spencer
71966308fc Fix a typo.
llvm-svn: 23117
2005-08-27 19:06:05 +00:00
Chris Lattner
25b6e62a46 Add a new version of ReplaceAllUsesWith, make the comments more useful.
llvm-svn: 23086
2005-08-26 18:35:58 +00:00
Chris Lattner
a31708e6b3 Change ConstantPoolSDNode to actually hold the Constant itself instead of
putting it into the constant pool.  This allows the isel machinery to
create constants that it will end up deciding are not needed, without them
ending up in the resultant function constant pool.

llvm-svn: 23081
2005-08-26 17:15:30 +00:00
Chris Lattner
929c00e9e9 Fix a huge annoyance: SelectNodeTo took types before the opcode unlike
every other SD API.  Fix it to take the opcode before the types.

llvm-svn: 23079
2005-08-26 16:36:26 +00:00
Chris Lattner
70cc927742 add a method
llvm-svn: 23049
2005-08-25 17:24:09 +00:00
Chris Lattner
713643bc71 add an enum value
llvm-svn: 23048
2005-08-25 17:07:09 +00:00
Chris Lattner
165fcbcd64 Fix a problem Duraid noticed, where we weren't removing values from the kills
list when doing two-address and phi node lowering during register allocation.

llvm-svn: 23043
2005-08-25 05:45:31 +00:00
Chris Lattner
70cb011425 Add support for TargetConstantPool node
llvm-svn: 23040
2005-08-25 05:02:41 +00:00
Chris Lattner
813f6ddaf8 add a new TargetFrameIndex node
llvm-svn: 23035
2005-08-25 00:43:01 +00:00
Chris Lattner
22c6c99e5d add a method
llvm-svn: 23027
2005-08-24 23:00:29 +00:00
Chris Lattner
79191b194f add two new methods
llvm-svn: 23024
2005-08-24 22:43:53 +00:00
Chris Lattner
180f2050d0 Keep the killed/dead sets sorted, so that "KillsRegister" can do a quick
binary search to test for membership.  This speeds up LLC a bit more on KC++,
e.g. on itanium from 16.6974s to 14.8272s, PPC from 11.4926s to 10.7089s and
X86 from 10.8128s to 9.7943s, with no difference in generated code (like all
of the RA patches).

With these changes, isel is the slowest pass for PPC/X86, but linscan+live
intervals is still > 50% of the compile time for itanium.  More work could
be done, but this is the last for now.

llvm-svn: 22993
2005-08-24 00:09:02 +00:00
Chris Lattner
3bb878f134 Change live variables from using multimaps to using maps of vectors and
rearrange some of the accessors to be more efficient.

This makes it much more efficient to iterate over all of the things with the
same value.  This speeds up liveintervals analysis from 8.63s to 3.79s with
a release build of llc on kc++ with -march=ia64.  This also speeds up live
var from 1.66s -> 0.87s as well, reducing total llc time from 20.1s->15.2s.

This also speeds up other targets slightly, e.g. llc time on X86 from 16.84
-> 16.45s, and PPC from 17.64->17.03s.

llvm-svn: 22990
2005-08-23 23:40:41 +00:00
Chris Lattner
f91a79a306 Add RegisterDefIsDead to correspond to KillsRegister, mark both const
llvm-svn: 22987
2005-08-23 22:43:24 +00:00
Chris Lattner
a51be5a84c add a method
llvm-svn: 22958
2005-08-21 22:30:42 +00:00
Chris Lattner
5c82be2ffc ADd a method
llvm-svn: 22954
2005-08-21 19:48:53 +00:00
Chris Lattner
d76cf28d13 Add 5-operand version of SelectNodeTo
llvm-svn: 22950
2005-08-21 18:49:58 +00:00
Chris Lattner
0c4565bf91 ADd support for TargetGlobalAddress nodes
llvm-svn: 22939
2005-08-19 22:31:34 +00:00
Nate Begeman
0966f7d0b9 Add support for target nodes with more than 3 operands, required by ppc
llvm-svn: 22894
2005-08-19 00:56:28 +00:00
Chris Lattner
2e3f21c27f add a method
llvm-svn: 22867
2005-08-18 18:44:33 +00:00
Nate Begeman
474ec3c02d Add support for target DAG nodes that take 4 operands, such as PowerPC's
rlwinm.

llvm-svn: 22856
2005-08-18 07:30:15 +00:00
Nate Begeman
50efb750b6 Add two new methods isTargetOpcode() which returns true if the node type
is greater than the range of building selection dag node types, and
getTargetOpcode(), which returns the node opcode less the value of
isd::builtin_op_end, which specifies the end of the builtin types.

llvm-svn: 22844
2005-08-17 23:44:54 +00:00
Jim Laskey
d761e8859d Move the code dependency for MathExtras.h from SelectionDAGNodes.h.
Added some class dividers in SelectionDAG.cpp.

llvm-svn: 22841
2005-08-17 20:08:02 +00:00