Owen Anderson
6d0c25ec3a
Add support for fast isel of (integer) immediate materialization pattens, and use them to support
...
bitcast of constants in fast isel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55325 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-25 20:20:32 +00:00
Chris Lattner
edfb72c628
simplify PseudoSourceValue printing a bit. Unnest all of PseudoSourceValue.cpp from the llvm namespace.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55293 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-24 20:37:32 +00:00
Evan Cheng
40ab164d3a
Print PseudoSourceValue.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55291 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-24 18:51:20 +00:00
Chris Lattner
4238746230
we should use 'class' for non-pod types instead of 'struct' to
...
make it easier to deal with the VC++ struct/class bug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55290 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-24 18:38:56 +00:00
Cedric Venet
a3f343f4cd
Updating VC++ project.
...
Adding one include file and correct one declaration from class to struct in order to make llvm compile on VC2005.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55279 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-24 11:56:40 +00:00
Chris Lattner
62ca32540f
get MachineConstantPool off std::ostream, onto raw_ostream. It would be
...
really nice if someone converted MachineFunction::print to raw_ostream.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55268 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-23 22:53:13 +00:00
Chris Lattner
7353404303
remove dead method.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55266 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-23 22:43:21 +00:00
Chris Lattner
78a2812538
Add raw_stream adaptors that write into an std::string and SmallVector/SmallString.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55265 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-23 22:43:04 +00:00
Chris Lattner
944fac71e0
Switch the asmprinter (.ll) and all the stuff it requires over to
...
use raw_ostream instead of std::ostream. Among other goodness,
this speeds up llvm-dis of kc++ with a release build from 0.85s
to 0.49s (88% faster).
Other interesting changes:
1) This makes Value::print be non-virtual.
2) AP[S]Int and ConstantRange can no longer print to ostream directly,
use raw_ostream instead.
3) This fixes a bug in raw_os_ostream where it didn't flush itself
when destroyed.
4) This adds a new SDNode::print method, instead of only allowing "dump".
A lot of APIs have both std::ostream and raw_ostream versions, it would
be useful to go through and systematically anihilate the std::ostream
versions.
This passes dejagnu, but there may be minor fallout, plz let me know if
so and I'll fix it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55263 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-23 22:23:09 +00:00
Chris Lattner
b2560526d5
Split format() out to its own file, add support for formatting
...
up to three values in one call.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55251 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-23 19:48:00 +00:00
Chris Lattner
0958ab0fd1
conditionalize this to work on windows, untested but it should work
...
according to the intarnetz
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55248 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-23 19:27:03 +00:00
Chris Lattner
097af7fc8f
add a simple mechanism for formatted output. This gives raw_ostream's
...
all the power and risk of fprintf format strings. Use them like this:
OS << format("%10.4f", 42.0) << "\n" << format("%x", 42) << '\n';
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55246 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-23 19:23:10 +00:00
Chris Lattner
3793325cb3
Add a new trivial -inst-namer pass which makes it possible to diff the
...
before/after effects of a pass, crazy!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55230 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-23 06:07:02 +00:00
Dan Gohman
6ecf50908c
Make MBBMap a DenseMap instead of a std::map.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55220 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-23 02:44:46 +00:00
Dan Gohman
f350b277f3
Move the point at which FastISel taps into the SelectionDAGISel
...
process up to a higher level. This allows FastISel to leverage
more of SelectionDAGISel's infastructure, such as updating Machine
PHI nodes.
Also, implement transitioning from SDISel back to FastISel in
the middle of a block, so it's now possible to go back and
forth. This allows FastISel to hand individual CallInsts and other
complicated things off to SDISel to handle, while handling the rest
of the block itself.
To help support this, reorganize the SelectionDAG class so that it
is allocated once and reused throughout a function, instead of
being completely reallocated for each block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55219 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-23 02:25:05 +00:00
Dan Gohman
6f17966a80
Move SelectionDAG's constructor out of line.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55212 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-23 00:50:30 +00:00
Dan Gohman
535de1a8c1
Add a clear() method to FoldingSet.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55210 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-23 00:42:16 +00:00
Dan Gohman
3c8f36fd03
Reapply r55191 and r55192.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55205 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-22 21:28:19 +00:00
Bill Wendling
449416deb6
Reverting r55190, r55191, and r55192. They broke the build with this error message:
...
{standard input}:17:bad register name `%sil'
make[4]: *** [libgcc/./_addvsi3.o] Error 1
make[4]: *** Waiting for unfinished jobs....
{standard input}:23:bad register name `%dil'
{standard input}:28:bad register name `%dil'
make[4]: *** [libgcc/./_addvdi3.o] Error 1
{standard input}:18:bad register name `%sil'
make[4]: *** [libgcc/./_subvsi3.o] Error 1
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55200 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-22 20:51:05 +00:00
Dan Gohman
e0182ec0e4
Support non-fallthrough unconditional branches in FastISel.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55191 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-22 19:21:41 +00:00
Owen Anderson
a794ef7f5d
Fix typo.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55189 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-22 18:26:07 +00:00
Dale Johannesen
f87d6c02f5
Implement __sync_synchronize on ppc32. Patch by Gary Benson.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55186 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-22 17:20:54 +00:00
Dan Gohman
55beb6ded8
Add an empty() member to FoldingSet.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55182 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-22 16:14:23 +00:00
Dan Gohman
1501cdbf63
Fix SmallVector's size calculation so that a size of 0 is
...
handled correctly, and change a few SmallVector uses to use
size 0 to more clearly reflect their intent.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55181 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-22 16:07:55 +00:00
Nicolas Geoffray
f46dc79ac5
Also overload for char, since the "char" type depends on the host.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55173 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-22 08:44:47 +00:00
Owen Anderson
1f83b02c62
Overload for both signed and unsigned char.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55171 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-22 07:42:25 +00:00
Chris Lattner
2dba6a1bdb
consolidate DenseMapInfo implementations, and add one for std::pair.
...
Patch contributed by m-s.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55167 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-22 05:08:25 +00:00
Dan Gohman
22bb31103d
Factor out the predicate check code from DAGISelEmitter.cpp
...
and use it in FastISelEmitter.cpp, and make FastISel
subtarget aware. Among other things, this lets it work
properly on x86 targets that don't have SSE, where it
successfully selects x87 instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55156 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-22 00:20:26 +00:00
Owen Anderson
66b17ba0d2
Move non-trivial methods out of line to avoid code-size bloat.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55138 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 20:58:52 +00:00
Dan Gohman
2bb1e3eede
Add libcalls for the new rounding opcodes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55133 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 18:38:14 +00:00
Dan Gohman
8471ef5f4e
Fix a typo that Dale noticed.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55132 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 18:13:12 +00:00
Dan Gohman
509e84fa71
Add libm-oriented ISD opcodes for rounding operations.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55130 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 17:55:02 +00:00
Dan Gohman
ad3460c3c9
Simplify SelectRoot's interface, and factor out some common code
...
from all targets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55124 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 16:36:34 +00:00
Dan Gohman
815ffa24c4
SelectionDAGISel::SelectRootInit does not need to be virtual.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55122 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 16:06:51 +00:00
Dan Gohman
ec20183c35
Make HandleSDNode::getValue return an SDValue instead of
...
the full SDUse, which isn't needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55121 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 16:02:46 +00:00
Chris Lattner
55767f69c5
remove redundant include
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55116 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 06:41:07 +00:00
Chris Lattner
aac0513ed0
Fix the build with gcc 4.3 as the host, patch by Zhongxing Xu!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55115 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 06:25:28 +00:00
Owen Anderson
89a1a85913
Implement operator<< in terms of basic types rather than [u]int*_t, which is better for portability. There might be some way to factor this all with metaprogramming magic, but I'm not sure how offhand.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55114 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 06:20:47 +00:00
Nick Lewycky
cbd56db62b
Fix build on GCC 4.3.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55110 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 05:36:03 +00:00
Eli Friedman
afc802dc7d
Remove size_t operator; this unbreaks the build on Linux. Committing on
...
the suggestion of resistor.
If this breaks some other platform, please go ahead and back this out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55106 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 04:28:31 +00:00
Dan Gohman
d5fe57d2f9
Basic fast-isel support for instructions with constant int operands.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55099 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 01:41:07 +00:00
Dan Gohman
7f92ebddd2
Improve the doxygen comment for SelectInstructions::SelectInstructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55094 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 00:19:43 +00:00
Dan Gohman
c7f72de3b4
Begin making more use of the FastISelEmitter class.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55093 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 00:19:05 +00:00
Owen Anderson
cb37188323
Use raw_ostream throughout the AsmPrinter.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55092 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21 00:14:44 +00:00
Evan Cheng
83785c8096
First cut, un-optimized (and untested) fast isel lowering of GetElementPtrInst.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55085 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20 22:45:34 +00:00
Chris Lattner
b054bfd3ea
Add a new ConstantExpr::getWithOperands that takes any array of operands
...
instead of requiring an std::vector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55084 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20 22:27:40 +00:00
Dan Gohman
bb466331e7
Simplify FastISel's constructor argument list, make the FastISel
...
class hold a MachineRegisterInfo member, and make the
MachineBasicBlock be passed in to SelectInstructions rather
than the FastISel constructor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55076 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20 21:05:57 +00:00
Chris Lattner
98f8ccfad0
Move the fast-path (<=i64) cases of various APInt methods inline
...
and the slow-path cases out of line. This speeds up instcombine
a bit in real world cases. Patch contributed by m-s.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55063 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20 17:02:31 +00:00
Dan Gohman
a267651b7e
Disable DAGCombine's alignment inference in "fast" codegen mode.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55059 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20 16:30:28 +00:00
Dan Gohman
b8d2f550b8
Change the FoldingSetNodeID usage for objects which carry
...
alignment and volatility information, such as loads and
stores, to reduce the number of integer values added to
the FoldingSetNodeID.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55058 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20 15:58:01 +00:00