Duraid Madina
c754478fbe
add support for int->FP and FP->int ops, and add ia64 patterns for these
...
llvm-svn: 24132
2005-11-01 03:07:25 +00:00
Duraid Madina
ba4b2d2a1b
add zeroextend predicate->integer
...
llvm-svn: 24131
2005-11-01 01:29:55 +00:00
Chris Lattner
dd58fcaf6b
Add a flag to enable a darwin linker optimization
...
llvm-svn: 24130
2005-11-01 00:12:36 +00:00
Chris Lattner
906dc8d0e5
Make constant pool entries use private labels. This is important when you're
...
not compiling a whole program at a time :)
llvm-svn: 24129
2005-10-31 22:12:06 +00:00
Andrew Lenharth
3145badb75
Updated alpha known problems.
...
llvm-svn: 24126
2005-10-31 19:07:29 +00:00
Chris Lattner
92d3dff7a6
Apparently these do pass on some alphas
...
llvm-svn: 24125
2005-10-31 19:06:13 +00:00
Chris Lattner
fd80437e76
Fix an iterator invalidation problem in code used by the -strip pass
...
llvm-svn: 24124
2005-10-31 18:42:37 +00:00
Chris Lattner
f8e14244c3
Limit the search depth of MaskedValueIsZero to 6 instructions, to avoid
...
bad cases. This fixes Markus's second testcase in PR639, and should
seal it for good.
llvm-svn: 24123
2005-10-31 18:35:52 +00:00
Jim Laskey
1c66d7fb02
Emit itinerary class in instruction info.
...
llvm-svn: 24122
2005-10-31 17:16:46 +00:00
Jim Laskey
d79749c8a5
Generate cpu to itinerary map.
...
llvm-svn: 24121
2005-10-31 17:16:01 +00:00
Chris Lattner
8972a3ed6d
these tests fail on alpha for some reason
...
llvm-svn: 24120
2005-10-31 16:15:49 +00:00
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