oota-llvm.git
18 years agoSimplifySelectCC is dead
Nate Begeman [Thu, 13 Oct 2005 03:10:46 +0000 (03:10 +0000)]
SimplifySelectCC is dead

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23705 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix a potential bug with two combine-to's back to back that chris pointed
Nate Begeman [Wed, 12 Oct 2005 23:18:53 +0000 (23:18 +0000)]
Fix a potential bug with two combine-to's back to back that chris pointed
out, where after the first CombineTo() call, the node the second CombineTo
wishes to replace may no longer exist.

Fix a very real bug with the truncated load optimization on little endian
targets, which do not need a byte offset added to the load.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23704 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMore cool stuff for the dag combiner. We can now finally handle things
Nate Begeman [Wed, 12 Oct 2005 20:40:40 +0000 (20:40 +0000)]
More cool stuff for the dag combiner.  We can now finally handle things
like turning:

_foo:
        fctiwz f0, f1
        stfd f0, -8(r1)
        lwz r2, -4(r1)
        rlwinm r3, r2, 0, 16, 31
        blr

into
_foo:
        fctiwz f0,f1
        stfd f0,-8(r1)
        lhz r3,-2(r1)
        blr

Also removed an unncessary constraint from sra -> srl conversion, which
should take care of hte only reason we would ever need to handle sra in
MaskedValueIsZero, AFAIK.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23703 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFinally committing to the new scheduler. Still -sched=none by default.
Jim Laskey [Wed, 12 Oct 2005 18:29:35 +0000 (18:29 +0000)]
Finally committing to the new scheduler.  Still -sched=none by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23702 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdded graphviz/gv support for MF.
Jim Laskey [Wed, 12 Oct 2005 12:09:05 +0000 (12:09 +0000)]
Added graphviz/gv support for MF.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23700 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agothis passes with the change in predicate
Chris Lattner [Tue, 11 Oct 2005 18:42:26 +0000 (18:42 +0000)]
this passes with the change in predicate

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23699 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix (hopefully the last) issue where LSR is nondeterminstic. When pulling
Chris Lattner [Tue, 11 Oct 2005 18:41:04 +0000 (18:41 +0000)]
Fix (hopefully the last) issue where LSR is nondeterminstic.  When pulling
out CSE's of base expressions it could build a result whose order was
nondet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23698 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix another problem where LSR was being nondeterminstic. Also remove elements
Chris Lattner [Tue, 11 Oct 2005 18:30:57 +0000 (18:30 +0000)]
Fix another problem where LSR was being nondeterminstic.  Also remove elements
from the end of a vector instead of the beginning

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23697 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agolsr doesn't emit gep instructions anymore
Chris Lattner [Tue, 11 Oct 2005 18:28:48 +0000 (18:28 +0000)]
lsr doesn't emit gep instructions anymore

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23696 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix another lsr-is-nondeterministic case
Chris Lattner [Tue, 11 Oct 2005 18:17:57 +0000 (18:17 +0000)]
Fix another lsr-is-nondeterministic case

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23695 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix a powerpc crash on CodeGen/Generic/llvm-ct-intrinsics.ll
Chris Lattner [Tue, 11 Oct 2005 17:56:34 +0000 (17:56 +0000)]
Fix a powerpc crash on CodeGen/Generic/llvm-ct-intrinsics.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23694 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd a canonicalization that got lost, fixing PowerPC/fold-li.ll:SUB
Chris Lattner [Tue, 11 Oct 2005 06:07:15 +0000 (06:07 +0000)]
Add a canonicalization that got lost, fixing PowerPC/fold-li.ll:SUB

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23693 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoclean up some corner cases
Chris Lattner [Mon, 10 Oct 2005 23:00:08 +0000 (23:00 +0000)]
clean up some corner cases

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23692 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoImplement trivial DSE. If two stores are neighbors and store to the same
Chris Lattner [Mon, 10 Oct 2005 22:31:19 +0000 (22:31 +0000)]
Implement trivial DSE.  If two stores are neighbors and store to the same
location, replace them with a new store of the last value.  This occurs
in the same neighborhood in 197.parser, speeding it up about 1.5%

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23691 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd support for CombineTo, allowing the dag combiner to replace nodes with
Chris Lattner [Mon, 10 Oct 2005 22:04:48 +0000 (22:04 +0000)]
Add support for CombineTo, allowing the dag combiner to replace nodes with
multiple results.

Use this support to implement trivial store->load forwarding, implementing
CodeGen/PowerPC/store-load-fwd.ll.  Though this is the most simple case and
can be extended in the future, it is still useful.  For example, it speeds
up 197.parser by 6.2% by avoiding an LSU reject in xalloc:

        stw r6, lo16(l5_end_of_array)(r2)
        addi r2, r5, -4
        stwx r5, r4, r2
-       lwzx r5, r4, r2
-       rlwinm r5, r5, 0, 0, 30
        stwx r5, r4, r2
        lwz r2, -4(r4)
        ori r2, r2, 1

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23690 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agonew testcase
Chris Lattner [Mon, 10 Oct 2005 21:57:37 +0000 (21:57 +0000)]
new testcase

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23689 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoTeach the DAGCombiner several new tricks, teaching it how to turn
Nate Begeman [Mon, 10 Oct 2005 21:26:48 +0000 (21:26 +0000)]
Teach the DAGCombiner several new tricks, teaching it how to turn
sext_inreg into zext_inreg based on the signbit (fires a lot), srem into
urem, etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23688 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoA testcase sitting in my tree
Chris Lattner [Mon, 10 Oct 2005 21:21:36 +0000 (21:21 +0000)]
A testcase sitting in my tree

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23687 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix comment
Chris Lattner [Mon, 10 Oct 2005 16:52:03 +0000 (16:52 +0000)]
Fix comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23686 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd ISD::ADD to MaskedValueIsZero
Chris Lattner [Mon, 10 Oct 2005 16:51:40 +0000 (16:51 +0000)]
Add ISD::ADD to MaskedValueIsZero

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23685 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoThis function is now dead
Chris Lattner [Mon, 10 Oct 2005 16:49:22 +0000 (16:49 +0000)]
This function is now dead

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23684 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoEnable Nate's excellent DAG combiner work by default. This allows the
Chris Lattner [Mon, 10 Oct 2005 16:47:10 +0000 (16:47 +0000)]
Enable Nate's excellent DAG combiner work by default.  This allows the
removal of a bunch of ad-hoc and crufty code from SelectionDAG.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23682 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoThese definitions have been moved to common code.
Chris Lattner [Mon, 10 Oct 2005 06:01:00 +0000 (06:01 +0000)]
These definitions have been moved to common code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23681 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoPull DAG ISel generation nodes out of the PowerPC backend to where they
Chris Lattner [Mon, 10 Oct 2005 06:00:30 +0000 (06:00 +0000)]
Pull DAG ISel generation nodes out of the PowerPC backend to where they
can be used by other targets.  For those targets that want to use it,
have at.  :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23680 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoadd a todo for something I noticed
Chris Lattner [Sun, 9 Oct 2005 22:59:08 +0000 (22:59 +0000)]
add a todo for something I noticed

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23679 91177308-0d34-0410-b5e6-96231b3b80d8

18 years ago(X & Y) & C == 0 if either X&C or Y&C are zero
Chris Lattner [Sun, 9 Oct 2005 22:12:36 +0000 (22:12 +0000)]
(X & Y) & C == 0 if either X&C or Y&C are zero

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23678 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMake MaskedValueIsZero a bit more aggressive
Chris Lattner [Sun, 9 Oct 2005 22:08:50 +0000 (22:08 +0000)]
Make MaskedValueIsZero a bit more aggressive

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23677 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoThis seems useful from the original patch that added the function. If there is a...
Andrew Lenharth [Sun, 9 Oct 2005 20:11:35 +0000 (20:11 +0000)]
This seems useful from the original patch that added the function.  If there is a reason it is not useful on a RISC type target, let me know and I will pull it out

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23676 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix funky xcode indentation
Chris Lattner [Sun, 9 Oct 2005 06:36:35 +0000 (06:36 +0000)]
Fix funky xcode indentation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23674 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoHrm, you didn't see this.
Chris Lattner [Sun, 9 Oct 2005 06:24:02 +0000 (06:24 +0000)]
Hrm, you didn't see this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23673 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix a source of non-determinism in the backend: the order of processing
Chris Lattner [Sun, 9 Oct 2005 06:20:55 +0000 (06:20 +0000)]
Fix a source of non-determinism in the backend: the order of processing
IV strides dependend on the pointer order of the strides in memory.
Non-determinism is bad.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23672 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoWhen emiting a CopyFromReg and the source is already a vreg, do not bother
Chris Lattner [Sun, 9 Oct 2005 05:58:56 +0000 (05:58 +0000)]
When emiting a CopyFromReg and the source is already a vreg, do not bother
creating a new vreg and inserting a copy: just use the input vreg directly.

This speeds up the compile (e.g. about 5% on mesa with a debug build of llc)
by not adding a bunch of copies and vregs to be coallesced away.  On mesa,
for example, this reduces the number of intervals from 168601 to 129040
going into the coallescer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23671 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoDisable formation of rlwinm instructions from SRA bases. This fixes
Chris Lattner [Sun, 9 Oct 2005 05:36:17 +0000 (05:36 +0000)]
Disable formation of rlwinm instructions from SRA bases.  This fixes
the 177.mesa failure from last night, and fixes the
CodeGen/PowerPC/2005-10-08-ArithmeticRotate.ll regression test I added.
If this code cannot be fixed, it should be removed for good, but I'll leave
it to Nate to decide its fate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23670 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoTestcase that is miscompiled by the ppc backend
Chris Lattner [Sun, 9 Oct 2005 05:31:47 +0000 (05:31 +0000)]
Testcase that is miscompiled by the ppc backend

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23669 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove another unused file. Preparing for the great "enable i64 on ppc32"
Nate Begeman [Sat, 8 Oct 2005 01:32:34 +0000 (01:32 +0000)]
Remove another unused file.  Preparing for the great "enable i64 on ppc32"
merge, and using subtarget info for ptr size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23668 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoremove a comma to compile with pedantic gcc
Chris Lattner [Sat, 8 Oct 2005 01:24:19 +0000 (01:24 +0000)]
remove a comma to compile with pedantic gcc

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23667 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove a file that is no longer used
Nate Begeman [Sat, 8 Oct 2005 01:21:27 +0000 (01:21 +0000)]
Remove a file that is no longer used

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23666 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoLo and behold, the last bits of SelectionDAG.cpp have been moved over.
Nate Begeman [Sat, 8 Oct 2005 00:29:44 +0000 (00:29 +0000)]
Lo and behold, the last bits of SelectionDAG.cpp have been moved over.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23665 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoWhen preselecting, favor things that have low depth to select first. This
Chris Lattner [Fri, 7 Oct 2005 22:10:27 +0000 (22:10 +0000)]
When preselecting, favor things that have low depth to select first.  This
is faster and uses less stack space.  This reduces our stack requirement
enough to compile sixtrack, and though it's a hack, should be enough until
we switch to iterative isel

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23664 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoremove debugging code
Chris Lattner [Fri, 7 Oct 2005 15:31:26 +0000 (15:31 +0000)]
remove debugging code

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23663 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoimplement CodeGen/PowerPC/div-2.ll:test2-4 by propagating zero bits through
Chris Lattner [Fri, 7 Oct 2005 15:30:32 +0000 (15:30 +0000)]
implement CodeGen/PowerPC/div-2.ll:test2-4 by propagating zero bits through
C-X's

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23662 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoThese don't need to be sdivs.
Chris Lattner [Fri, 7 Oct 2005 15:27:12 +0000 (15:27 +0000)]
These don't need to be sdivs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23661 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agofix indentation
Chris Lattner [Fri, 7 Oct 2005 06:37:02 +0000 (06:37 +0000)]
fix indentation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23660 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoTurn sdivs into udivs when we can prove the sign bits are clear. This
Chris Lattner [Fri, 7 Oct 2005 06:10:46 +0000 (06:10 +0000)]
Turn sdivs into udivs when we can prove the sign bits are clear.  This
implements CodeGen/PowerPC/div-2.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23659 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoNew testcase, should turn into a ushr
Chris Lattner [Fri, 7 Oct 2005 06:10:03 +0000 (06:10 +0000)]
New testcase, should turn into a ushr

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23658 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove prolific source of VC++ truncation warnings.
Jeff Cohen [Fri, 7 Oct 2005 05:29:25 +0000 (05:29 +0000)]
Remove prolific source of VC++ truncation warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23657 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove useless variable.
Jeff Cohen [Fri, 7 Oct 2005 05:28:29 +0000 (05:28 +0000)]
Remove useless variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23656 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoadd a hack to work around broken VC++ scoping rules. Thx to JeffC for pointing
Chris Lattner [Fri, 7 Oct 2005 05:23:36 +0000 (05:23 +0000)]
add a hack to work around broken VC++ scoping rules.  Thx to JeffC for pointing
this out to me

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23655 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix a CQ regression from my patch to split F32/F64 into seperate register
Chris Lattner [Fri, 7 Oct 2005 05:00:52 +0000 (05:00 +0000)]
Fix a CQ regression from my patch to split F32/F64 into seperate register
classes on PPC.  We were emitting fmr instructions to do fp extensions, which
weren't getting coallesced.  This fixes Regression/CodeGen/PowerPC/fpcopy.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23654 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agodouble to float casts should nto result in an fmr
Chris Lattner [Fri, 7 Oct 2005 04:59:41 +0000 (04:59 +0000)]
double to float casts should nto result in an fmr

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23653 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix CodeGen/Generic/bool-to-double.ll
Chris Lattner [Fri, 7 Oct 2005 04:50:48 +0000 (04:50 +0000)]
Fix CodeGen/Generic/bool-to-double.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23652 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agotest broken in the IA64 backend.
Chris Lattner [Fri, 7 Oct 2005 04:49:00 +0000 (04:49 +0000)]
test broken in the IA64 backend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23651 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoPull out Call, reducing stack frame size from 6032 bytes to 5184 bytes.
Chris Lattner [Thu, 6 Oct 2005 19:07:45 +0000 (19:07 +0000)]
Pull out Call, reducing stack frame size from 6032 bytes to 5184 bytes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23650 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoPull out setcc, this reduces stack frame size from 7520 to 6032 bytes
Chris Lattner [Thu, 6 Oct 2005 19:03:35 +0000 (19:03 +0000)]
Pull out setcc, this reduces stack frame size from 7520 to 6032 bytes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23649 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoPull two more methods out, reducing stack frame size from 8224 -> 7520 bytes
Chris Lattner [Thu, 6 Oct 2005 18:56:10 +0000 (18:56 +0000)]
Pull two more methods out, reducing stack frame size from 8224 -> 7520 bytes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23648 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd a recursive-iterative hybrid stage to attempt to reduce stack space, this
Chris Lattner [Thu, 6 Oct 2005 18:45:51 +0000 (18:45 +0000)]
Add a recursive-iterative hybrid stage to attempt to reduce stack space, this
helps but not enough.

Start pulling cases out of PPC32DAGToDAGISel::Select.  With GCC 4, this function
required 8512 bytes of stack space for each invocation (GCC 3 required less
than 700 bytes).  Pulling this first function out gets us down to 8224.  More
to come :(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23647 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agosilence a bogus GCC warning
Chris Lattner [Thu, 6 Oct 2005 17:39:10 +0000 (17:39 +0000)]
silence a bogus GCC warning

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23646 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix the LLC regressions on X86 last night. In particular, when undoing
Chris Lattner [Thu, 6 Oct 2005 17:19:06 +0000 (17:19 +0000)]
Fix the LLC regressions on X86 last night.  In particular, when undoing
previous copy elisions and we discover we need to reload a register, make
sure to use the regclass of the original register for the reload, not the
class of the current register.  This avoid using 16-bit loads to reload 32-bit
values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23645 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoThis is suppose to work now
Andrew Lenharth [Thu, 6 Oct 2005 16:54:29 +0000 (16:54 +0000)]
This is suppose to work now

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23644 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoremove VAX compatibility instruction, we will never use this
Andrew Lenharth [Thu, 6 Oct 2005 16:53:32 +0000 (16:53 +0000)]
remove VAX compatibility instruction, we will never use this

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23643 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMake the legalizer completely non-recursive
Chris Lattner [Thu, 6 Oct 2005 01:20:27 +0000 (01:20 +0000)]
Make the legalizer completely non-recursive

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23642 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoLet the combiner handle more cases
Nate Begeman [Wed, 5 Oct 2005 21:44:43 +0000 (21:44 +0000)]
Let the combiner handle more cases

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23641 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove some bad code from Legalize
Nate Begeman [Wed, 5 Oct 2005 21:44:10 +0000 (21:44 +0000)]
Remove some bad code from Legalize

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23640 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoCheck in some more DAGCombiner pieces
Nate Begeman [Wed, 5 Oct 2005 21:43:42 +0000 (21:43 +0000)]
Check in some more DAGCombiner pieces

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23639 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix a bug in the local spiller, where we could take code like this:
Chris Lattner [Wed, 5 Oct 2005 18:30:19 +0000 (18:30 +0000)]
Fix a bug in the local spiller, where we could take code like this:

  store r12 -> [ss#2]
  R3 = load [ss#1]
  use R3
  R3 = load [ss#2]
  R4 = load [ss#1]

and turn it into this code:

  store R12 -> [ss#2]
  R3 = load [ss#1]
  use R3
  R3 = R12
  R4 = R3    <- oops!

The problem was that promoting R3 = load[ss#2] to a copy missed the fact that
the instruction invalidated R3 at that point.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23638 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agosilence some warnings
Chris Lattner [Wed, 5 Oct 2005 17:15:09 +0000 (17:15 +0000)]
silence some warnings

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23637 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoimplement visitBR_CC so that PowerPC/inverted-bool-compares.ll passes
Chris Lattner [Wed, 5 Oct 2005 06:47:48 +0000 (06:47 +0000)]
implement visitBR_CC so that PowerPC/inverted-bool-compares.ll passes
with the dag combiner.  This speeds up espresso by 8%, reaching performance
parity with the dag-combiner-disabled llc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23636 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agofix some pastos
Chris Lattner [Wed, 5 Oct 2005 06:37:22 +0000 (06:37 +0000)]
fix some pastos

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23635 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd a new HandleNode class, which is used to handle (haha) cases in the
Chris Lattner [Wed, 5 Oct 2005 06:35:28 +0000 (06:35 +0000)]
Add a new HandleNode class, which is used to handle (haha) cases in the
dead node elim and dag combiner passes where the root is potentially updated.
This fixes a fixme in the dag combiner.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23634 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoadd a helper class
Chris Lattner [Wed, 5 Oct 2005 06:34:34 +0000 (06:34 +0000)]
add a helper class

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23633 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoImplement the code for PowerPC/inverted-bool-compares.ll, even though it
Chris Lattner [Wed, 5 Oct 2005 06:11:08 +0000 (06:11 +0000)]
Implement the code for PowerPC/inverted-bool-compares.ll, even though it
that testcase still does not pass with the dag combiner.  This is because
not all forms of br* are folded yet.

Also, when we combine a node into another one, delete the node immediately
instead of waiting for the node to potentially come up in the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23632 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agomake sure that -view-isel-dags is the input to the isel, not the input to
Chris Lattner [Wed, 5 Oct 2005 06:09:10 +0000 (06:09 +0000)]
make sure that -view-isel-dags is the input to the isel, not the input to
the second phase of dag combining

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23631 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix a crash compiling Olden/tsp
Chris Lattner [Wed, 5 Oct 2005 04:45:43 +0000 (04:45 +0000)]
Fix a crash compiling Olden/tsp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23630 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd some rules for building preprocessed files
Chris Lattner [Wed, 5 Oct 2005 00:28:41 +0000 (00:28 +0000)]
Add some rules for building preprocessed files

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23629 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agorefactor a bit of code.
Chris Lattner [Tue, 4 Oct 2005 21:35:50 +0000 (21:35 +0000)]
refactor a bit of code.

When moving constant entries in 'Map' if the entry is the representative
constant for the abstractypemap, make sure to update it as well.  This
fixes the bcreader failures from last night on several C++ apps.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23628 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMinor speedup to avoid array searches given a Use*. This speeds up bc reading
Chris Lattner [Tue, 4 Oct 2005 18:47:09 +0000 (18:47 +0000)]
Minor speedup to avoid array searches given a Use*.  This speeds up bc reading
of the python test from 1:00 to 54s.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23627 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoChange the signature of replaceUsesOfWithOnConstant. The bool was always
Chris Lattner [Tue, 4 Oct 2005 18:13:04 +0000 (18:13 +0000)]
Change the signature of replaceUsesOfWithOnConstant.  The bool was always
true dynamically.  Finally, pass the Use* that replaceAllUsesWith has into
the method for future use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23626 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoChange the signature of replaceUsesOfWithOnConstant to take a Use* and not
Chris Lattner [Tue, 4 Oct 2005 18:12:13 +0000 (18:12 +0000)]
Change the signature of replaceUsesOfWithOnConstant to take a Use* and not
take the bool.  The bool is always true dynamically.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23625 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFor large constants (e.g. arrays and structs with many elements) just
Chris Lattner [Tue, 4 Oct 2005 17:48:46 +0000 (17:48 +0000)]
For large constants (e.g. arrays and structs with many elements) just
creating the keys and doing comparisons to index into 'Map' takes a lot
of time.  For these large constants, keep an inverse map so that 'remove'
and move operations are much faster.

This speeds up a release build of the bc reader on Eric's nasty python
bytecode file from 1:39 to 1:00s.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23624 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agominor cleanup/fastpath for the bcreader. This speeds up the bcreader
Chris Lattner [Tue, 4 Oct 2005 16:52:46 +0000 (16:52 +0000)]
minor cleanup/fastpath for the bcreader.  This speeds up the bcreader
from 1:41 -> 1:39 on the large python .bc file in a release build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23623 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoReverting to version - until problem isolated.
Jim Laskey [Tue, 4 Oct 2005 16:41:51 +0000 (16:41 +0000)]
Reverting to version - until problem isolated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23622 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd a forward def
Chris Lattner [Tue, 4 Oct 2005 05:09:20 +0000 (05:09 +0000)]
Add a forward def

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23621 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix some faulty logic in the libcall inserter.
Nate Begeman [Tue, 4 Oct 2005 02:10:55 +0000 (02:10 +0000)]
Fix some faulty logic in the libcall inserter.

Since calls return more than one value, don't bail if one of their uses
happens to be a node that's not an MVT::Other when following the chain
from CALLSEQ_START to CALLSEQ_END.

Once we've found a CALLSEQ_START, we can just return; there's no need to
tail-recurse further up the graph.

Most importantly, just because something only has one use doesn't mean we
should use it's one use to follow from start to end.  This faulty logic
caused us to follow a chain of one-use FP operations back to a much earlier
call, putting a cycle in the graph from a later start to an earlier end.

This is a better fix that reverting to the workaround committed earlier
today.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23620 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoimplement the struct version of the array speedup, speeding up the
Chris Lattner [Tue, 4 Oct 2005 01:17:50 +0000 (01:17 +0000)]
implement the struct version of the array speedup, speeding up the
testcase a bit more from 1:48 -> 1.40.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23619 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix DemoteRegToStack on an invoke. This fixes PR634.
Chris Lattner [Tue, 4 Oct 2005 00:44:01 +0000 (00:44 +0000)]
Fix DemoteRegToStack on an invoke.  This fixes PR634.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23618 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd back a workaround that fixes some breakages from chris's last change.
Nate Begeman [Tue, 4 Oct 2005 00:37:37 +0000 (00:37 +0000)]
Add back a workaround that fixes some breakages from chris's last change.
Neither of us have yet figured out why this code is necessary, but stuff
breaks if its not there.  Still tracking this down...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23617 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoClean up the code a bit. Use isInstructionTriviallyDead to be more aggressive
Chris Lattner [Mon, 3 Oct 2005 23:43:43 +0000 (23:43 +0000)]
Clean up the code a bit.  Use isInstructionTriviallyDead to be more aggressive
and more correct than use_empty().  This fixes PR635 and
SimplifyCFG/2005-10-02-InvokeSimplify.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23616 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agonew testcase for PR635
Chris Lattner [Mon, 3 Oct 2005 23:42:54 +0000 (23:42 +0000)]
new testcase for PR635

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23615 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoChange ConstantArray::replaceUsesOfWithOnConstant to attempt to update
Chris Lattner [Mon, 3 Oct 2005 22:51:37 +0000 (22:51 +0000)]
Change ConstantArray::replaceUsesOfWithOnConstant to attempt to update
constant arrays in place instead of reallocating them and replaceAllUsesOf'ing
the result.  This speeds up a release build of the bcreader from:

136.987u 120.866s 4:24.38
to
49.790u 49.890s 1:40.14

... a 2.6x speedup parsing a large python bc file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23614 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agomove some methods, no other changes
Chris Lattner [Mon, 3 Oct 2005 21:58:36 +0000 (21:58 +0000)]
move some methods, no other changes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23613 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agominor microoptimizations
Chris Lattner [Mon, 3 Oct 2005 21:56:24 +0000 (21:56 +0000)]
minor microoptimizations

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23612 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoUse a map to cache the ModuleType information, so we can do logarithmic
Chris Lattner [Mon, 3 Oct 2005 21:26:53 +0000 (21:26 +0000)]
Use a map to cache the ModuleType information, so we can do logarithmic
lookups instead of linear time lookups.  This speeds up bc parsing of a
large file from

137.834u 118.256s 4:27.96
to
132.611u 114.436s 4:08.53

with a release build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23611 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRefactor gathering node info and emission.
Jim Laskey [Mon, 3 Oct 2005 12:30:32 +0000 (12:30 +0000)]
Refactor gathering node info and emission.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23610 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoclean up this code a bit, no functionality change
Chris Lattner [Mon, 3 Oct 2005 07:22:07 +0000 (07:22 +0000)]
clean up this code a bit, no functionality change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23609 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoSpeed up the asm printer a lot by not printing formatted LLVM asm output
Chris Lattner [Mon, 3 Oct 2005 07:08:36 +0000 (07:08 +0000)]
Speed up the asm printer a lot by not printing formatted LLVM asm output
for globals

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23608 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoBreak the body of the loop out into a new method
Chris Lattner [Mon, 3 Oct 2005 04:47:08 +0000 (04:47 +0000)]
Break the body of the loop out into a new method

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23606 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix case of path
Chris Lattner [Mon, 3 Oct 2005 03:32:39 +0000 (03:32 +0000)]
Fix case of path

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23605 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMake IVUseShouldUsePostIncValue more aggressive when the use is a PHI. In
Chris Lattner [Mon, 3 Oct 2005 02:50:05 +0000 (02:50 +0000)]
Make IVUseShouldUsePostIncValue more aggressive when the use is a PHI.  In
particular, it should realize that phi's use their values in the pred block
not the phi block itself.  This change turns our em3d loop from this:

_test:
        cmpwi cr0, r4, 0
        bgt cr0, LBB_test_2     ; entry.no_exit_crit_edge
LBB_test_1:     ; entry.loopexit_crit_edge
        li r2, 0
        b LBB_test_6    ; loopexit
LBB_test_2:     ; entry.no_exit_crit_edge
        li r6, 0
LBB_test_3:     ; no_exit
        or r2, r6, r6
        lwz r6, 0(r3)
        cmpw cr0, r6, r5
        beq cr0, LBB_test_6     ; loopexit
LBB_test_4:     ; endif
        addi r3, r3, 4
        addi r6, r2, 1
        cmpw cr0, r6, r4
        blt cr0, LBB_test_3     ; no_exit
LBB_test_5:     ; endif.loopexit.loopexit_crit_edge
        addi r3, r2, 1
        blr
LBB_test_6:     ; loopexit
        or r3, r2, r2
        blr

into:

_test:
        cmpwi cr0, r4, 0
        bgt cr0, LBB_test_2     ; entry.no_exit_crit_edge
LBB_test_1:     ; entry.loopexit_crit_edge
        li r2, 0
        b LBB_test_5    ; loopexit
LBB_test_2:     ; entry.no_exit_crit_edge
        li r6, 0
LBB_test_3:     ; no_exit
        lwz r2, 0(r3)
        cmpw cr0, r2, r5
        or r2, r6, r6
        beq cr0, LBB_test_5     ; loopexit
LBB_test_4:     ; endif
        addi r3, r3, 4
        addi r6, r6, 1
        cmpw cr0, r6, r4
        or r2, r6, r6
        blt cr0, LBB_test_3     ; no_exit
LBB_test_5:     ; loopexit
        or r3, r2, r2
        blr

Unfortunately, this is actually worse code, because the register coallescer
is getting confused somehow.  If it were doing its job right, it could turn the
code into this:

_test:
        cmpwi cr0, r4, 0
        bgt cr0, LBB_test_2     ; entry.no_exit_crit_edge
LBB_test_1:     ; entry.loopexit_crit_edge
        li r6, 0
        b LBB_test_5    ; loopexit
LBB_test_2:     ; entry.no_exit_crit_edge
        li r6, 0
LBB_test_3:     ; no_exit
        lwz r2, 0(r3)
        cmpw cr0, r2, r5
        beq cr0, LBB_test_5     ; loopexit
LBB_test_4:     ; endif
        addi r3, r3, 4
        addi r6, r6, 1
        cmpw cr0, r6, r4
        blt cr0, LBB_test_3     ; no_exit
LBB_test_5:     ; loopexit
        or r3, r6, r6
        blr

... which I'll work on next. :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23604 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRefactor some code into a function
Chris Lattner [Mon, 3 Oct 2005 01:04:44 +0000 (01:04 +0000)]
Refactor some code into a function

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23603 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoThis break is bogus and I have no idea why it was there. Basically it prevents
Chris Lattner [Mon, 3 Oct 2005 00:37:33 +0000 (00:37 +0000)]
This break is bogus and I have no idea why it was there.  Basically it prevents
memoizing code when IV's are used by phinodes outside of loops.  In a simple
example, we were getting this code before (note that r6 and r7 are isomorphic
IV's):

        li r6, 0
        or r7, r6, r6
LBB_test_3:     ; no_exit
        lwz r2, 0(r3)
        cmpw cr0, r2, r5
        or r2, r7, r7
        beq cr0, LBB_test_5     ; loopexit
LBB_test_4:     ; endif
        addi r2, r7, 1
        addi r7, r7, 1
        addi r3, r3, 4
        addi r6, r6, 1
        cmpw cr0, r6, r4
        blt cr0, LBB_test_3     ; no_exit

Now we get:

        li r6, 0
LBB_test_3:     ; no_exit
        or r2, r6, r6
        lwz r6, 0(r3)
        cmpw cr0, r6, r5
        beq cr0, LBB_test_6     ; loopexit
LBB_test_4:     ; endif
        addi r3, r3, 4
        addi r6, r2, 1
        cmpw cr0, r6, r4
        blt cr0, LBB_test_3     ; no_exit

this was noticed in em3d.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23602 91177308-0d34-0410-b5e6-96231b3b80d8