Commit Graph

20724 Commits

Author SHA1 Message Date
Jim Laskey
8a0072ec92 1. Embed and not inherit vector for NodeGroup.
2. Iterate operands and not uses (performance.)

3. Some long pending comment changes.

llvm-svn: 24119
2005-10-31 12:49:09 +00:00
Duraid Madina
76abe0f46c add FP compares and implicit register defs to the dag isel
llvm-svn: 24118
2005-10-31 01:42:11 +00:00
Jeff Cohen
79280fa56e Update Getting Started for Visual Studio page.
llvm-svn: 24117
2005-10-30 21:00:24 +00:00
Chris Lattner
d7ef6d6774 Significantly simplify this code and make it more aggressive. Instead of having
a special case hack for X86, make the hack more general: if an incoming argument
register is not used in any block other than the entry block, don't copy it to
a vreg.  This helps us compile code like this:

%struct.foo = type { int, int, [0 x ubyte] }
int %test(%struct.foo* %X) {
        %tmp1 = getelementptr %struct.foo* %X, int 0, uint 2, int 100
        %tmp = load ubyte* %tmp1                ; <ubyte> [#uses=1]
        %tmp2 = cast ubyte %tmp to int          ; <int> [#uses=1]
        ret int %tmp2
}

to:

_test:
        lbz r3, 108(r3)
        blr

instead of:

_test:
        lbz r2, 108(r3)
        or r3, r2, r2
        blr

The (dead) copy emitted to copy r3 into a vreg for extra-block uses was
increasing the live range of r3 past the load, preventing the coallescing.

This implements CodeGen/PowerPC/reg-coallesce-simple.ll

llvm-svn: 24115
2005-10-30 19:42:35 +00:00
Chris Lattner
a3caadae77 new testcase
llvm-svn: 24112
2005-10-30 19:42:18 +00:00
Chris Lattner
b0c50d1b7d Reduce the number of copies emitted as machine instructions by
generating results in vregs that will need them.  In the case of something
like this:  CopyToReg((add X, Y), reg1024), we no longer emit code like
this:

   reg1025 = add X, Y
   reg1024 = reg 1025

Instead, we emit:

   reg1024 = add X, Y

Whoa! :)

llvm-svn: 24111
2005-10-30 18:54:27 +00:00
Chris Lattner
8ac3107a8b If the module has no t-t and the host is an alpha, default to using the Alpha BE
llvm-svn: 24110
2005-10-30 16:44:01 +00:00
Duraid Madina
5168a7dea5 fix some broken comparisons, this affected the Pattern isel too.
llvm-svn: 24109
2005-10-30 10:14:19 +00:00
Chris Lattner
83d5898377 The pass was removed, but the spirit lives on
llvm-svn: 24108
2005-10-30 07:22:15 +00:00
Chris Lattner
802e8d3a7e This is implemented
llvm-svn: 24107
2005-10-30 06:42:12 +00:00
Chris Lattner
26841f9e6b Codegen mul by negative power of two with a shift and negate.
This implements test/Regression/CodeGen/PowerPC/mul-neg-power-2.ll,
producing:

_foo:
        slwi r2, r3, 1
        subfic r3, r2, 63
        blr

instead of:

_foo:
        mulli r2, r3, -2
        addi r3, r2, 63
        blr

llvm-svn: 24106
2005-10-30 06:41:49 +00:00
Chris Lattner
acb8e66439 new testcase
llvm-svn: 24103
2005-10-30 06:37:33 +00:00
Chris Lattner
2724ebe02e Fix a problem that Nate noticed with LSR:
When inserting code for an addrec expression with a non-unit stride, be
more careful where we insert the multiply.  In particular, insert the multiply
in the outermost loop we can, instead of the requested insertion point.

This allows LSR to notice the mul in the right loop, reducing it when it gets
to it.  This allows it to reduce the multiply, where before it missed it.

This happens quite a bit in the test suite, for example, eliminating 2
multiplies in art, 3 in ammp, 4 in apsi, reducing from 1050 multiplies to
910 muls in galgel (!), from 877 to 859 in applu, and 36 to 30 in bzip2.

This speeds up galgel from 16.45s to 16.01s, applu from 14.21 to 13.94s and
fourinarow from 66.67s to 63.48s.

This implements Transforms/LoopStrengthReduce/nested-reduce.ll

llvm-svn: 24102
2005-10-30 06:24:33 +00:00
Chris Lattner
1ce35bf973 new testcase
llvm-svn: 24099
2005-10-30 05:14:02 +00:00
Chris Lattner
d420fe3bfa Revert an accidental commit.
llvm-svn: 24098
2005-10-29 17:01:41 +00:00
Jeff Cohen
ff78bc30c7 More files deleted.
llvm-svn: 24097
2005-10-29 16:51:48 +00:00
Chris Lattner
3415e2f278 Make -time-passes output prettier
llvm-svn: 24096
2005-10-29 16:45:02 +00:00
Chris Lattner
9fd7ba3c84 Make negative immediates in patterns work correctly, silence some warnings
building the itanium backend.

llvm-svn: 24095
2005-10-29 16:39:40 +00:00
Duraid Madina
9c1cbbe5d1 add some FP stuff, some mix.* stuff, and constant pool support to the
DAG instruction selector, which should be destroyed one day (in the pattern
isel also) since ia64 can pack any constant in the instruction stream

llvm-svn: 24094
2005-10-29 16:08:30 +00:00
Chris Lattner
681d539d6e Fix <> in html
llvm-svn: 24093
2005-10-29 07:08:19 +00:00
Chris Lattner
fae4ab5f93 First hack-and-slash on the release notes. Comments and improvements welcome
llvm-svn: 24092
2005-10-29 07:07:09 +00:00
Chris Lattner
90fbc12769 Remove the lowerconstantexprs pass
llvm-svn: 24091
2005-10-29 05:34:40 +00:00
Chris Lattner
bafe11a821 This pass is now obsolete since all targets have moved to the SelectionDAG
infrastructure and the simple isels have been removed.

llvm-svn: 24090
2005-10-29 05:33:46 +00:00
Chris Lattner
dae0aafea8 Remove the LowerConstantExpressionsPass pass
llvm-svn: 24089
2005-10-29 05:32:20 +00:00
Chris Lattner
74537db62e remove reference to this pass
llvm-svn: 24088
2005-10-29 05:28:34 +00:00
Chris Lattner
ff2508ed70 Basic updates
llvm-svn: 24087
2005-10-29 05:14:01 +00:00
Chris Lattner
6d9926bcf4 Buh bye Expression.(cpp|h)
llvm-svn: 24086
2005-10-29 04:55:57 +00:00
Chris Lattner
8a257558a0 remove a dead file
llvm-svn: 24085
2005-10-29 04:43:38 +00:00
Chris Lattner
3736ba002f remove a dead header
llvm-svn: 24084
2005-10-29 04:43:10 +00:00
Chris Lattner
4772d742a0 Remove dead #include
llvm-svn: 24083
2005-10-29 04:41:30 +00:00
Chris Lattner
20e1564bf0 Now that instcombine does this xform, remove it from the -raise pass
llvm-svn: 24082
2005-10-29 04:40:23 +00:00
Chris Lattner
2c6430d1a7 Pull some code out into a function, give it the ability to see through +.
This allows us to turn code like malloc(4*x+4) -> malloc int, (x+1)

llvm-svn: 24081
2005-10-29 04:36:15 +00:00
Duraid Madina
6280da9a88 add shladd
llvm-svn: 24080
2005-10-29 04:13:40 +00:00
Duraid Madina
5748cfa290 test for the formation of shladd
llvm-svn: 24077
2005-10-29 04:06:49 +00:00
Chris Lattner
b313b6d67f Remove a special case, allowing the general case to handle it. No functionality
change.

llvm-svn: 24076
2005-10-29 03:19:53 +00:00
Nate Begeman
da6888930d New case to handle someday
llvm-svn: 24075
2005-10-28 23:26:57 +00:00
Chris Lattner
d44a96088b Switch more code over to using getValueAsListOfDefs. Look at all the -'s. :)
llvm-svn: 24074
2005-10-28 22:59:53 +00:00
Chris Lattner
2338614087 Don't emit "32" for unordered comparison
llvm-svn: 24073
2005-10-28 22:58:07 +00:00
Chris Lattner
06c5e018ef Rename Record::getValueAsListDef to getValueAsListOfDefs, to more accurately
reflect what it is.
Convert some more code over to use it.

llvm-svn: 24072
2005-10-28 22:49:02 +00:00
Chris Lattner
dea00d4a37 Use the new interface Jim added
llvm-svn: 24071
2005-10-28 22:43:25 +00:00
Jim Laskey
b86d73937d Removed Mr. Smith from the code.
llvm-svn: 24070
2005-10-28 21:47:29 +00:00
Jim Laskey
7bfb35c1ef Added method to return a vector of records for a ListInit of Def field. This
simplifies using list of records.

llvm-svn: 24069
2005-10-28 21:46:31 +00:00
Chris Lattner
28552d8cc8 add a hack to get code with ordered comparisons working. This hack is
tracked as PR642

llvm-svn: 24068
2005-10-28 20:49:47 +00:00
Chris Lattner
379e078ee6 add support for branch on ordered/unordered.
llvm-svn: 24067
2005-10-28 20:32:44 +00:00
Chris Lattner
bbf8c885a5 add the xfail lines
llvm-svn: 24066
2005-10-28 19:57:55 +00:00
Chris Lattner
2015ee2afb New testcase. Probably many targets don't support this, so they should probably
add themselves as xfails until they do (at least for the release).

llvm-svn: 24065
2005-10-28 19:52:02 +00:00
Chris Lattner
c3f548dceb Do not globalize internal symbols
llvm-svn: 24064
2005-10-28 18:44:07 +00:00
Chris Lattner
0a69a4a837 These are autogenerated
llvm-svn: 24063
2005-10-28 18:26:52 +00:00
Duraid Madina
251185e626 DAG->DAG instruction selection for ia64! "hello world" works, not much else.
use -enable-ia64-dag-isel to turn this on

TODO: delete lowering stuff from the pattern isel
    : get operations on predicate bits working
    : get other bits of pseudocode going
    : use sampo's mulh/mull-using divide-by-constant magic
    : *so* many patterns ("extr", "tbit" and "dep" will be fun :)
    : add FP
    : add a JIT!
    : get it working 100%

in short: this'll be happier in a couple of weeks, but it's here now so
the tester can make me feel guilty sooner.

OTHER: there are a couple of fixes to the pattern isel, in particular
making the linker happy with big blobs of fun like pypy.

llvm-svn: 24058
2005-10-28 17:46:35 +00:00
Chris Lattner
f3945f73db The nightly tester report doesn't report JIT code size anymore, remove it
from the olden graph.

llvm-svn: 24057
2005-10-28 16:35:18 +00:00