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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Chris Lattner [Mon, 3 Oct 2005 00:31:52 +0000 (00:31 +0000)]
when checking if we should move a split edge block outside of a loop,
check the presplit pred, not the post-split pred. This was causing us
to make the wrong decision in some cases, leaving the critical edge block
in the loop.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23601
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 3 Oct 2005 00:21:25 +0000 (00:21 +0000)]
This member can be const too
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23600
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 2 Oct 2005 21:51:38 +0000 (21:51 +0000)]
put the right labels on the data
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23599
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 2 Oct 2005 17:49:46 +0000 (17:49 +0000)]
Fix a problem where the legalizer would run out of stack space on extremely
large basic blocks because it was purely recursive. This switches it to an
iterative/recursive hybrid.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23596
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 2 Oct 2005 16:30:51 +0000 (16:30 +0000)]
silence a bogus warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23595
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 2 Oct 2005 16:29:36 +0000 (16:29 +0000)]
silence some warnings
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23594
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 2 Oct 2005 16:27:59 +0000 (16:27 +0000)]
silence a warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23593
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 2 Oct 2005 07:46:28 +0000 (07:46 +0000)]
add patterns for float binops and fma ops
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23592
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 2 Oct 2005 07:13:52 +0000 (07:13 +0000)]
Sort the cpu and features table, so that the alpha backend doesn't fail EVERY
compile with an assertion that the tables are not sorted!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23591
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 2 Oct 2005 07:10:55 +0000 (07:10 +0000)]
Add assertions to the trivial scheduler to check that the value types match
up between defs and uses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23590
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 2 Oct 2005 07:07:49 +0000 (07:07 +0000)]
another solution to the fsel issue. Instead of having 4 variants, just force
the comparison to be 64-bits. This is fine because extensions from float
to double are free.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23589
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 2 Oct 2005 06:58:23 +0000 (06:58 +0000)]
fsel can take a different FP type for the comparison and for the result. As such
split the FSEL family into 4 things instead of just two.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23588
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 2 Oct 2005 06:37:13 +0000 (06:37 +0000)]
fix an f32/f64 type mismatch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23587
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 2 Oct 2005 06:34:16 +0000 (06:34 +0000)]
Codegen CopyFromReg using the regclass that matches the valuetype of the
destination vreg.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23586
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 2 Oct 2005 06:23:51 +0000 (06:23 +0000)]
Adjust to change in ctor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23585
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 2 Oct 2005 06:23:37 +0000 (06:23 +0000)]
Emit the value type for each register class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23584
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 2 Oct 2005 06:23:19 +0000 (06:23 +0000)]
Expose the actual valuetype of each register class
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23583
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 1 Oct 2005 23:06:26 +0000 (23:06 +0000)]
Minor tweak to the branch selector. When emitting a two-way branch, and if
we're in a single-mbb loop, make sure to emit the backwards branch as the
conditional branch instead of the uncond branch. For example, emit this:
LBBl29_z__44:
stw r9, 0(r15)
stw r9, 4(r15)
stw r9, 8(r15)
stw r9, 12(r15)
addi r15, r15, 16
addi r8, r8, 1
cmpw cr0, r8, r28
ble cr0, LBBl29_z__44
b LBBl29_z__48 *** NOT PART OF LOOP
Instead of:
LBBl29_z__44:
stw r9, 0(r15)
stw r9, 4(r15)
stw r9, 8(r15)
stw r9, 12(r15)
addi r15, r15, 16
addi r8, r8, 1
cmpw cr0, r8, r28
bgt cr0, LBBl29_z__48 *** PART OF LOOP!
b LBBl29_z__44
The former sequence has one fewer dispatch group for the loop body.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23582
91177308-0d34-0410-b5e6-
96231b3b80d8