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
Chris Lattner [Sat, 1 Oct 2005 23:02:40 +0000 (23:02 +0000)]
like the comment says, enable this
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23581
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 1 Oct 2005 07:45:09 +0000 (07:45 +0000)]
Add some very paranoid checking for operand/result reg class matchup
For instructions that define multiple results, use the right regclass
to define the result, not always the rc of result #0
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23580
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Sat, 1 Oct 2005 03:57:14 +0000 (03:57 +0000)]
Fix VC++ warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23579
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 1 Oct 2005 02:51:36 +0000 (02:51 +0000)]
fix typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23578
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 1 Oct 2005 01:35:02 +0000 (01:35 +0000)]
Modify the ppc backend to use two register classes for FP: F8RC and F4RC.
These are used to represent float and double values, and the two regclasses
contain the same physical registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23577
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 1 Oct 2005 00:19:21 +0000 (00:19 +0000)]
Annotate nodes with their addresses if a graph requests it.
This is Jim's feature implemented so that graphs could 'opt-in' and get
this behavior. This is currently used by selection dags.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23576
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 1 Oct 2005 00:17:07 +0000 (00:17 +0000)]
add a method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23575
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Laskey [Sat, 1 Oct 2005 00:08:23 +0000 (00:08 +0000)]
typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23574
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Laskey [Sat, 1 Oct 2005 00:03:07 +0000 (00:03 +0000)]
1. Simplify the gathering of node groups.
2. Printing node groups when displaying nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23573
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Laskey [Fri, 30 Sep 2005 23:43:37 +0000 (23:43 +0000)]
Should be using flag and not chain.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23572
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Fri, 30 Sep 2005 21:28:27 +0000 (21:28 +0000)]
Remove some now-dead code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23571
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Fri, 30 Sep 2005 20:30:24 +0000 (20:30 +0000)]
more specific tests of subtarget stuff
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23570
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Fri, 30 Sep 2005 20:24:38 +0000 (20:24 +0000)]
subtarget support for CIX and FIX extentions (the only 2 I care about right now)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23569
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Laskey [Fri, 30 Sep 2005 19:33:41 +0000 (19:33 +0000)]
Reverting change moving to selection dag graph.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23568
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Laskey [Fri, 30 Sep 2005 19:27:01 +0000 (19:27 +0000)]
Added allnodes_size for scheduling support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23567
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Laskey [Fri, 30 Sep 2005 19:15:27 +0000 (19:15 +0000)]
1. Made things node-centric (from operand).
2. Added node groups to handle flagged nodes.
3. Started weaning simple scheduling off existing emitter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23566
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Laskey [Fri, 30 Sep 2005 19:11:53 +0000 (19:11 +0000)]
Add the node name (thus the address) to node label.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23565
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 17:49:27 +0000 (17:49 +0000)]
Rename MRegisterDesc -> TargetRegisterDesc for consistency
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23564
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 17:46:55 +0000 (17:46 +0000)]
Update the discussion of TargetRegisterDesc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23563
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 17:41:05 +0000 (17:41 +0000)]
remove some more initializers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23562
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 17:38:36 +0000 (17:38 +0000)]
trim down the target info structs now that we have a preferred spill register class for each callee save register
Why is V9 maintaining these tables manually? ugh!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23561
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 17:35:22 +0000 (17:35 +0000)]
trim down the target info structs now that we have a preferred spill register class for each callee save register
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23560
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 17:19:22 +0000 (17:19 +0000)]
now that we have a reg class to spill with, get this info from the regclass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23559
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 17:16:59 +0000 (17:16 +0000)]
constant fold these calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23558
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 17:12:38 +0000 (17:12 +0000)]
simplify this code using the new regclass info passed in
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23557
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 16:59:07 +0000 (16:59 +0000)]
Now that we have getCalleeSaveRegClasses() info, use it to pass the register
class into the spill/reload methods. Targets can now rely on that argument.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23556
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 07:06:37 +0000 (07:06 +0000)]
expose a new virtual method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23555
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 06:55:18 +0000 (06:55 +0000)]
stub out a virtual method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23554
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 06:44:45 +0000 (06:44 +0000)]
Compute a preferred spill register class for each callee-save register
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23553
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 06:43:58 +0000 (06:43 +0000)]
CR registers are not used by this "target"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23552
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 06:42:24 +0000 (06:42 +0000)]
these registers don't belong to any register classes, so don't mark them
as callee save. They can never be generated by the compiler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23551
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 06:09:50 +0000 (06:09 +0000)]
Fix a warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23550
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 04:53:25 +0000 (04:53 +0000)]
Regenerate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23549
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 04:53:04 +0000 (04:53 +0000)]
Refactor this a bit to move ParsingTemplateArgs to only apply to classes,
not defs.
Implement support for forward definitions of classes. This implements
TableGen/ForwardRef.td.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23548
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 04:52:43 +0000 (04:52 +0000)]
Add a test that you can forward ref a class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23547
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 04:42:56 +0000 (04:42 +0000)]
Regenerate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23546
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 04:42:31 +0000 (04:42 +0000)]
Generate a parse error instead of a checked exception if template args are
used on a def.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23545
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 04:13:23 +0000 (04:13 +0000)]
Now that self referential classes are supported, get rid of a work-around.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23544
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 04:11:27 +0000 (04:11 +0000)]
regenerate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23543
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 04:10:49 +0000 (04:10 +0000)]
Refactor the grammar a bit to implement TableGen/ForwardRef.td
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23542
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 04:10:17 +0000 (04:10 +0000)]
Check that we can refer to the same class we are defining.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23541
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 01:33:48 +0000 (01:33 +0000)]
allow regs to be in multiple reg classes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23540
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 01:31:52 +0000 (01:31 +0000)]
pass extra args
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23539
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 01:30:55 +0000 (01:30 +0000)]
these methods get extra args
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23538
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 01:29:42 +0000 (01:29 +0000)]
Pass extra regclasses into spilling code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23537
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 01:29:00 +0000 (01:29 +0000)]
Change this code ot pass register classes into the stack slot spiller/reloader
code. PrologEpilogInserter hasn't been updated yet though, so targets cannot
use this info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23536
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 01:28:14 +0000 (01:28 +0000)]
Change these methods to take RC's
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23535
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 00:05:05 +0000 (00:05 +0000)]
Use the 32-bit version for now
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23534
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 Sep 2005 23:34:24 +0000 (23:34 +0000)]
Add a bunch of patterns for F64 FP ops, add some more integer ops
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23533
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 Sep 2005 23:33:31 +0000 (23:33 +0000)]
Remove code for patterns that are autogenerated
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23532
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Thu, 29 Sep 2005 22:54:56 +0000 (22:54 +0000)]
begining alpha subtarget support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23531
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 Sep 2005 22:37:24 +0000 (22:37 +0000)]
tblgen autogens this pattern now
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23530
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 Sep 2005 22:36:54 +0000 (22:36 +0000)]
Teach tablegen to reassociate operators when possible. This allows it to
find all of teh pattern matches for EQV from one definition
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23529
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Thu, 29 Sep 2005 21:11:57 +0000 (21:11 +0000)]
copy and paste error
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23528
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 Sep 2005 19:29:15 +0000 (19:29 +0000)]
now that tblgen is smarter, this pattern is not needed. Also, tblgen
now inverts commuted versions of ANDC/ORC with the current .td file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23527
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 Sep 2005 19:28:10 +0000 (19:28 +0000)]
Teach tblgen to build permutations of instructions, so that the target author
doesn't have to specify them manually. It currently handles associativity,
e.g. knowing that (X*Y)+Z also matches X+(Y*Z) and will be extended in
the future.
It is smart enough to not introduce duplicate patterns or patterns that can
never match.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23526
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 Sep 2005 17:44:20 +0000 (17:44 +0000)]
Insert stores after phi nodes in the normal dest. This fixes
LowerInvoke/2005-08-03-InvokeWithPHI.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23525
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 Sep 2005 17:38:52 +0000 (17:38 +0000)]
consistency with other cases, no functionality change
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23524
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 Sep 2005 17:31:03 +0000 (17:31 +0000)]
Make the JIT default to the DAG isel instead of the pattern isel, like LLC.
The Pattern isel has some strange memory corruption issues going on. :(
This should have been converted over anyway, but it got forgotten somehow
when switching to the dag isel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23523
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 Sep 2005 06:44:39 +0000 (06:44 +0000)]
Fix two bugs in my patch earlier today that broke int->fp conversion on X86.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23522
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 Sep 2005 06:17:27 +0000 (06:17 +0000)]
Fold isascii into a simple comparison. This speeds up 197.parser by 7.4%,
bringing the LLC time down to the CBE time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23521
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 Sep 2005 06:16:37 +0000 (06:16 +0000)]
new testcase for isascii
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23520
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 Sep 2005 06:16:11 +0000 (06:16 +0000)]
remove a bunch of unneeded stuff, or self evident comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23519
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 Sep 2005 06:11:34 +0000 (06:11 +0000)]
add a new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23518
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 Sep 2005 04:54:20 +0000 (04:54 +0000)]
Implement a couple of memcmp folds from the todo list
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23517
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Thu, 29 Sep 2005 01:59:49 +0000 (01:59 +0000)]
Silence VC++ redeclaration warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23516
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 Sep 2005 00:59:32 +0000 (00:59 +0000)]
Never rely on ReplaceAllUsesWith when selecting, use CodeGenMap instead.
ReplaceAllUsesWith does not replace scalars SDOperand floating around on
the stack, permitting things to be selected multiple times.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23515
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 28 Sep 2005 23:07:13 +0000 (23:07 +0000)]
Codegen ADD X, IMM -> addis/addi if needed.
This implements PowerPC/fold-li.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23514
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 28 Sep 2005 23:03:11 +0000 (23:03 +0000)]
add a testcase for a feature we regressed on because noone wrote the test! :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23513
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 28 Sep 2005 22:53:16 +0000 (22:53 +0000)]
Autogen MUL, move FP cases together
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23512
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 28 Sep 2005 22:50:24 +0000 (22:50 +0000)]
disentangle FP from INT versions of div/mul
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23511
91177308-0d34-0410-b5e6-
96231b3b80d8