Chris Lattner [Wed, 14 Sep 2005 00:09:24 +0000 (00:09 +0000)]
start parsing instructions into patterns, start doing many more checks of
'set's.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23343
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Sep 2005 22:05:21 +0000 (22:05 +0000)]
we don't need this proto any longer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23342
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Sep 2005 22:05:02 +0000 (22:05 +0000)]
don't emit the namespace inside the class!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23341
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Sep 2005 22:03:37 +0000 (22:03 +0000)]
Emit code suitable for emission into the ISel class, allowing us to use/define
methods.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23340
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Sep 2005 22:03:06 +0000 (22:03 +0000)]
move the #include for the generated code into the isel class body so we
can use/define class methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23339
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Sep 2005 21:59:15 +0000 (21:59 +0000)]
continue xform function parsing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23338
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Sep 2005 21:51:00 +0000 (21:51 +0000)]
Start parsing node transformation information
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23337
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Sep 2005 21:44:28 +0000 (21:44 +0000)]
Add a new Record::getValueAsCode method to mirror the other getValueAs*
methods. Use it to simplify some code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23336
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Sep 2005 21:20:49 +0000 (21:20 +0000)]
completely eliminate TreePattern::PatternType
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23335
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Sep 2005 19:33:40 +0000 (19:33 +0000)]
Change the arg lowering code to use copyfromreg from vregs associated
with incoming arguments instead of the pregs themselves. This fixes
the scheduler from causing problems by moving a copyfromreg for an argument
to after a select_cc node (now it can, and bad things won't happen).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23334
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Sep 2005 19:32:18 +0000 (19:32 +0000)]
This has been moved to the target-indep code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23333
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Sep 2005 19:31:44 +0000 (19:31 +0000)]
This code is no longer needed, it is moved to the target-indep code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23332
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Sep 2005 19:30:54 +0000 (19:30 +0000)]
If a function has liveins, and if the target requested that they be plopped
into particular vregs, emit copies into the entry MBB.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23331
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Sep 2005 19:03:13 +0000 (19:03 +0000)]
Majik numbers are bad
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23330
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Sep 2005 18:47:49 +0000 (18:47 +0000)]
Remove some dead vectors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23329
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Sep 2005 18:36:04 +0000 (18:36 +0000)]
Add a simple xform to simplify array accesses with casts in the way.
This is useful for 178.galgel where resolution of dope vectors (by the
optimizer) causes the scales to become apparent.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23328
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Sep 2005 02:09:55 +0000 (02:09 +0000)]
Fix an issue where LSR would miss rewriting a use of an IV expression by a PHI node that is not the original PHI.
This fixes up a dot-product loop in galgel, speeding it up from 18.47s to
16.13s.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23327
91177308-0d34-0410-b5e6-
96231b3b80d8
Duraid Madina [Tue, 13 Sep 2005 01:03:53 +0000 (01:03 +0000)]
fails since linux-itanium headers are Different
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23326
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 13 Sep 2005 00:40:14 +0000 (00:40 +0000)]
Add a helper function, allowing us to simplify some code a bit, changing
indentation, no functionality change
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23325
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 12 Sep 2005 23:23:25 +0000 (23:23 +0000)]
Implement a simple xform to turn code like this:
if () { store A -> P; } else { store B -> P; }
into a PHI node with one store, in the most trival case. This implements
load.ll:test10.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23324
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 12 Sep 2005 23:22:17 +0000 (23:22 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23323
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 12 Sep 2005 22:21:03 +0000 (22:21 +0000)]
Another load-peephole optimization: do gcse when two loads are next to
each other. This implements InstCombine/load.ll:test9
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23322
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 12 Sep 2005 22:19:46 +0000 (22:19 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23321
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 12 Sep 2005 22:00:15 +0000 (22:00 +0000)]
Implement a trivial form of store->load forwarding where the store and the
load are exactly consequtive. This is picked up by other passes, but this
triggers thousands of times in fortran programs that use static locals
(and is thus a compile-time speedup).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23320
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 12 Sep 2005 21:59:22 +0000 (21:59 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23319
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 12 Sep 2005 17:11:27 +0000 (17:11 +0000)]
Fix a regression from last night, which caused this pass to create invalid
code for IV uses outside of loops that are not dominated by the latch block.
We should only convert these uses to use the post-inc value if they ARE
dominated by the latch block.
Also use a new LoopInfo method to simplify some code.
This fixes Transforms/LoopStrengthReduce/2005-09-12-UsesOutOutsideOfLoop.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23318
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 12 Sep 2005 17:09:40 +0000 (17:09 +0000)]
relax pattern match on name
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23317
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 12 Sep 2005 17:08:15 +0000 (17:08 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23316
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 12 Sep 2005 17:03:55 +0000 (17:03 +0000)]
Add a new getLoopLatch() method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23315
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 12 Sep 2005 17:03:16 +0000 (17:03 +0000)]
new method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23314
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 12 Sep 2005 06:04:47 +0000 (06:04 +0000)]
_test:
li r2, 0
LBB_test_1: ; no_exit.2
li r5, 0
stw r5, 0(r3)
addi r2, r2, 1
addi r3, r3, 4
cmpwi cr0, r2, 701
blt cr0, LBB_test_1 ; no_exit.2
LBB_test_2: ; loopexit.2.loopexit
addi r2, r2, 1
stw r2, 0(r4)
blr
[zion ~/llvm]$ cat > ~/xx
Uses of IV's outside of the loop should use hte post-incremented version
of the IV, not the preincremented version. This helps many loops (e.g. in sixtrack)
which used to generate code like this (this is the code from the
dont-hoist-simple-loop-constants.ll testcase):
_test:
li r2, 0 **** IV starts at 0
LBB_test_1: ; no_exit.2
or r5, r2, r2 **** Copy for loop exit
li r2, 0
stw r2, 0(r3)
addi r3, r3, 4
addi r2, r5, 1
addi r6, r5, 2 **** IV+2
cmpwi cr0, r6, 701
blt cr0, LBB_test_1 ; no_exit.2
LBB_test_2: ; loopexit.2.loopexit
addi r2, r5, 2 **** IV+2
stw r2, 0(r4)
blr
And now generated code like this:
_test:
li r2, 1 *** IV starts at 1
LBB_test_1: ; no_exit.2
li r5, 0
stw r5, 0(r3)
addi r2, r2, 1
addi r3, r3, 4
cmpwi cr0, r2, 701 *** IV.postinc + 0
blt cr0, LBB_test_1
LBB_test_2: ; loopexit.2.loopexit
stw r2, 0(r4) *** IV.postinc + 0
blr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23313
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 12 Sep 2005 05:50:15 +0000 (05:50 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23312
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 12 Sep 2005 05:30:06 +0000 (05:30 +0000)]
Regenerate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23311
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 12 Sep 2005 05:29:43 +0000 (05:29 +0000)]
Rearrange two rules, which apparently makes some versions of bison happier.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23310
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 11 Sep 2005 03:50:38 +0000 (03:50 +0000)]
Make sure to disable 64-bit extensions for this test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23309
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Sat, 10 Sep 2005 02:33:17 +0000 (02:33 +0000)]
Fix more Visual Studio build problems.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23308
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Sat, 10 Sep 2005 02:00:02 +0000 (02:00 +0000)]
Fix miscellaneous Visual Studio build problems.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23307
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 10 Sep 2005 01:18:45 +0000 (01:18 +0000)]
implement Transforms/LoopStrengthReduce/dont-hoist-simple-loop-constants.ll.
We used to emit this code for it:
_test:
li r2, 1 ;; Value tying up a register for the whole loop
li r5, 0
LBB_test_1: ; no_exit.2
or r6, r5, r5
li r5, 0
stw r5, 0(r3)
addi r5, r6, 1
addi r3, r3, 4
add r7, r2, r5 ;; should be addi r7, r5, 1
cmpwi cr0, r7, 701
blt cr0, LBB_test_1 ; no_exit.2
LBB_test_2: ; loopexit.2.loopexit
addi r2, r6, 2
stw r2, 0(r4)
blr
now we emit this:
_test:
li r2, 0
LBB_test_1: ; no_exit.2
or r5, r2, r2
li r2, 0
stw r2, 0(r3)
addi r3, r3, 4
addi r2, r5, 1
addi r6, r5, 2 ;; whoa, fold those adds!
cmpwi cr0, r6, 701
blt cr0, LBB_test_1 ; no_exit.2
LBB_test_2: ; loopexit.2.loopexit
addi r2, r5, 2
stw r2, 0(r4)
blr
more improvement coming.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23306
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 10 Sep 2005 01:14:37 +0000 (01:14 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23305
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 10 Sep 2005 00:21:06 +0000 (00:21 +0000)]
PowerPC cannot truncstore i1 natively
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23304
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 10 Sep 2005 00:20:18 +0000 (00:20 +0000)]
Allow targets to say they don't support truncstore i1 (which includes a mask
when storing to an 8-bit memory location), as most don't.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23303
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 9 Sep 2005 23:53:39 +0000 (23:53 +0000)]
Add a missing #include, patch courtesy of Baptiste Lepilleur.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23302
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 9 Sep 2005 23:00:07 +0000 (23:00 +0000)]
Fix a problem duraid encountered on itanium where this folding:
select (x < y), 1, 0 -> (x < y) incorrectly: the setcc returns i1 but the
select returned i32. Add the zero extend as needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23301
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 9 Sep 2005 22:35:03 +0000 (22:35 +0000)]
Fix a crash viewing dags that have target nodes in them
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23300
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 9 Sep 2005 21:59:44 +0000 (21:59 +0000)]
I forgot that we always spill fp values as 64-bits. Implement spill folding
for FP as well. This triggers a couple dozen times on 177.mesa (for example).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23299
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 9 Sep 2005 21:46:49 +0000 (21:46 +0000)]
Fix a problem that Nate noticed, where spill code was not getting coallesced
with copies, leading to code like this:
lwz r4, 380(r1)
or r10, r4, r4 ;; Last use of r4
By teaching the PPC backend how to fold spills into copies, we now get this
code:
lwz r10, 380(r1)
wow. :)
This reduces a testcase nate sent me from 1505 instructions to 1484.
Note that this could handle FP values but doesn't currently, for reasons
mentioned in the patch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23298
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 9 Sep 2005 20:51:08 +0000 (20:51 +0000)]
code cleanup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23297
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 9 Sep 2005 20:29:51 +0000 (20:29 +0000)]
Use continue in the use-processing loop to make it clear what the early exits
are, simplify logic, and cause things to not be nested as deeply. This also
uses MRI->areAliases instead of an explicit loop.
No functionality change, just code cleanup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23296
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Fri, 9 Sep 2005 19:49:52 +0000 (19:49 +0000)]
Last round of 2-node folds from SD.cpp. Will move on to 3 node ops such
as setcc and select next.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23295
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 9 Sep 2005 19:19:20 +0000 (19:19 +0000)]
remove debugging code *slaps head*
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23294
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 9 Sep 2005 19:17:47 +0000 (19:17 +0000)]
When spilling a live range that is used multiple times by one instruction,
only add a reload live range once for the instruction. This is one step
towards fixing a regalloc pessimization that Nate notice, but is later undone
by the spiller (so no code is changed).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23293
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 9 Sep 2005 18:17:41 +0000 (18:17 +0000)]
Teach the code generator that rlwimi is commutable if the rotate amount
is zero. This lets the register allocator elide some copies in some cases.
This implements CodeGen/PowerPC/rlwimi-commute.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23292
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Laskey [Fri, 9 Sep 2005 17:50:20 +0000 (17:50 +0000)]
Added targets to speed up build of llc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23291
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 9 Sep 2005 17:48:57 +0000 (17:48 +0000)]
New testcase, neither should require a register-register copy
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23290
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 9 Sep 2005 01:15:01 +0000 (01:15 +0000)]
add an accessor to provide more checking
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23289
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 9 Sep 2005 01:11:44 +0000 (01:11 +0000)]
use new accessors to simplify code. Add checking to make sure top-level instr
definitions are void
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23288
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 9 Sep 2005 01:11:17 +0000 (01:11 +0000)]
add some accessors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23287
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 9 Sep 2005 00:39:56 +0000 (00:39 +0000)]
Introduce two new concepts:
1. Add support for defining Pattern's, which can match expressions when there
is no instruction that directly implements something. Instructions usually
implicitly define patterns.
2. Add support for defining SDNodeXForm's, which are node transformations.
This seperates the concept of a node xform out from the existing predicate
support.
Using this new stuff, we add a few instruction patterns, one for testing, and
two for OR/XOR by an arbitrary immediate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23286
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 23:26:30 +0000 (23:26 +0000)]
Fix incorrect comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23285
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 23:22:48 +0000 (23:22 +0000)]
Implement a complete type inference system for dag patterns, based on the
constraints defined in the DAG node definitions in the .td files. This
allows us to infer (and check!) the types for all nodes in the current
ppc .td file. For example, instead of:
Inst pattern EQV: (set GPRC:i32:$rT, (xor (xor GPRC:i32:$rA, GPRC:i32:$rB), (imm)<<Predicate_immAllOnes>>))
we now fully infer:
Inst pattern EQV: (set:void GPRC:i32:$rT, (xor:i32 (xor:i32 GPRC:i32:$rA, GPRC:i32:$rB), (imm:i32)<<Predicate_immAllOnes>>))
from: (set GPRC:$rT, (not (xor GPRC:$rA, GPRC:$rB)))
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23284
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 23:17:26 +0000 (23:17 +0000)]
whitespace/comment changes, no functionality diffs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23283
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 21:43:21 +0000 (21:43 +0000)]
Compute the value types that are natively supported by a target.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23282
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 21:27:15 +0000 (21:27 +0000)]
Parse information about type constraints on SDNodes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23281
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 21:04:46 +0000 (21:04 +0000)]
use node info in the one place we currently use it
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23280
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 21:03:01 +0000 (21:03 +0000)]
start parsing SDNode info records
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23279
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Thu, 8 Sep 2005 20:18:10 +0000 (20:18 +0000)]
Move yet more folds over to the dag combiner from sd.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23278
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 19:50:41 +0000 (19:50 +0000)]
Add a bunch of stuff needed for node type inference. Move 'BLR' down with
the rest of the instructions, add comment markers to seperate portions of
the file into logical parts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23277
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 19:47:28 +0000 (19:47 +0000)]
Fix indentation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23276
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 18:48:47 +0000 (18:48 +0000)]
regenerate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23275
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 18:48:23 +0000 (18:48 +0000)]
Add support for automatically created anonymous definitions.
This implements Regression/TableGen/AnonDefinitionOnDemand.td
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23274
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 18:47:43 +0000 (18:47 +0000)]
x and X should be structurally identical
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23273
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 18:47:21 +0000 (18:47 +0000)]
new expression type
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23272
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 18:22:57 +0000 (18:22 +0000)]
regenerate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23271
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 18:22:35 +0000 (18:22 +0000)]
Tabs to spaces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23270
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 17:45:12 +0000 (17:45 +0000)]
Keep names even when inlining. This allows us to realize that ADDI is:
(set GPRC:i32:$rD, (add GPRC:i32:$rA, (imm)<<Predicate_immSExt16>>:$imm))
not:
(set GPRC:i32:$rD, (add GPRC:i32:$rA, (imm)<<Predicate_immSExt16>>))
(we keep the ":$imm")
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23269
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 17:40:49 +0000 (17:40 +0000)]
add patterns for x?oris?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23268
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 17:33:10 +0000 (17:33 +0000)]
add patterns to the addi/addis/mulli etc instructions. Define predicates
for matching signed 16-bit and shifted 16-bit ppc immediates
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23267
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 8 Sep 2005 17:01:54 +0000 (17:01 +0000)]
Add patterns for some new instructions, allowing the use of the ineg fragment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23266
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 7 Sep 2005 23:57:00 +0000 (23:57 +0000)]
add some missing PPC backend files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23265
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 7 Sep 2005 23:53:49 +0000 (23:53 +0000)]
Add tblgen fpcmp and the nightly tester to the utils folder
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23264
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 7 Sep 2005 23:47:44 +0000 (23:47 +0000)]
ignore generated files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23263
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 7 Sep 2005 23:45:15 +0000 (23:45 +0000)]
Remove some cases handled by the generated portion of the isel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23262
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 7 Sep 2005 23:44:43 +0000 (23:44 +0000)]
Initial cut of the dag isel generator. This is still very much a work in
progress. It correctly parses instructions and pattern fragments and glues
together pattern fragments into instructions.
The only code it generates currently is some boilerplate code for things
like the EntryNode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23261
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Wed, 7 Sep 2005 23:25:52 +0000 (23:25 +0000)]
Another round of dag combiner changes. This fixes some missing XOR folds
as well as fixing how we replace old values with new values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23260
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 7 Sep 2005 17:34:39 +0000 (17:34 +0000)]
Fix a bug that Tzu-Chien Chiu noticed: live interval analysis does NOT
preserve livevar
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23259
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Wed, 7 Sep 2005 16:09:19 +0000 (16:09 +0000)]
Implement a common missing fold, (add (add x, c1), c2) -> (add x, c1+c2).
This restores all of stanford to being identical with and without the dag
combiner with the add folding turned off in sd.cpp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23258
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 7 Sep 2005 05:45:33 +0000 (05:45 +0000)]
On non-apple systems, when using -march=ppc32, do not print:
'' is not a recognized processor for this target (ignoring processor)
Default to "generic" instead of "" for the default CPU.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23257
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 7 Sep 2005 05:44:14 +0000 (05:44 +0000)]
Print:
'' is not a recognized processor for this target (ignoring processor)
instead of:
is not a recognized processor for this target (ignoring processor)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23256
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 7 Sep 2005 05:37:01 +0000 (05:37 +0000)]
Fix a bug nate ran into with replacealluseswith. In the recursive cse case,
we were losing a node, causing an assertion to fail. Now we eagerly delete
discovered CSE's, and provide an optional vector to keep track of these
discovered equivalences.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23255
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 7 Sep 2005 05:36:18 +0000 (05:36 +0000)]
Add a new argument to ReplaceAllUsesWith to keep track of nodes deleted by
this method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23254
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Wed, 7 Sep 2005 00:15:36 +0000 (00:15 +0000)]
Add an option to the DAG Combiner to enable it for beta runs, and turn on
that option for PowerPC's beta.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23253
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 6 Sep 2005 22:51:34 +0000 (22:51 +0000)]
Rename a class. These files are being migrated to the new isel and I want to
reuse the names
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23252
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 6 Sep 2005 22:23:15 +0000 (22:23 +0000)]
Test the new 64bit i64<->fp functionality
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23251
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 6 Sep 2005 22:03:27 +0000 (22:03 +0000)]
Implement i64<->fp using the fctidz/fcfid instructions on PowerPC when we
are allowed to generate 64-bit-only PowerPC instructions for 32 bit hosts,
such as the PowerPC 970.
This speeds up 189.lucas from 81.99 to 32.64 seconds.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23250
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 6 Sep 2005 21:23:27 +0000 (21:23 +0000)]
regenerate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23249
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 6 Sep 2005 21:23:09 +0000 (21:23 +0000)]
Tighten up the specification to allow TableGen/nested-comment.td to pass
(fixing a bug where / in a /* */ comment would cause it to not close).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23248
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 6 Sep 2005 21:22:15 +0000 (21:22 +0000)]
new testcase: tblgen should grok this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23247
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Tue, 6 Sep 2005 17:00:23 +0000 (17:00 +0000)]
Fix up the AssertXext problem, as well as adding it at calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23246
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 6 Sep 2005 15:30:48 +0000 (15:30 +0000)]
Add note about future optimization noted in the ppc compiler writer's guide
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23245
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 6 Sep 2005 15:30:12 +0000 (15:30 +0000)]
Add accessor for 64bit flag, so that we can tell when it is safe to
generate the fun in-register fp<->long instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23244
91177308-0d34-0410-b5e6-
96231b3b80d8