Anton Korobeynikov
61d88967b9
Align stack size to DWORD boundary
...
llvm-svn: 30964
2006-10-14 20:53:35 +00:00
Rafael Espindola
c426cede28
expand ISD::BRCOND
...
llvm-svn: 30963
2006-10-14 17:59:54 +00:00
Rafael Espindola
38c602f658
fix some fp condition codes
...
use non trapping comparison instructions
llvm-svn: 30962
2006-10-14 13:42:53 +00:00
Jim Laskey
1070dfefba
Tidy up after truncstore changes.
...
llvm-svn: 30961
2006-10-14 12:14:27 +00:00
Evan Cheng
078a38abd7
One cyclic dag a day is good for ya...
...
llvm-svn: 30960
2006-10-14 08:35:02 +00:00
Evan Cheng
bfd74c6d9c
Debug tweak.
...
llvm-svn: 30959
2006-10-14 08:34:06 +00:00
Evan Cheng
6c8de88f88
Corrected load folding check. We need to start from the root of the sub-dag
...
being matched and ensure there isn't a non-direct path to the load (i.e. a
path that goes out of the sub-dag.)
llvm-svn: 30958
2006-10-14 08:33:25 +00:00
Evan Cheng
c8b9d15614
Start checking from the root of the matched sub-tree.
...
llvm-svn: 30957
2006-10-14 08:30:53 +00:00
Evan Cheng
513dc7ed5f
When checking if a load can be folded, we check if there is any non-direct
...
way to reach the load via any nodes that would be folded. Start from the
root of the matched sub-tree.
llvm-svn: 30956
2006-10-14 08:30:15 +00:00
Chris Lattner
08aa96b824
Make sure that the node returned by SimplifySetCC is added to the worklist
...
so that it can be deleted if unused.
llvm-svn: 30955
2006-10-14 03:52:46 +00:00
Chris Lattner
3fbcd8519e
testcase for recent dag combiner patch. Before the entry bb was:
...
_test:
stwu r1, -80(r1)
stw r1, 76(r1)
mflr r11
stw r11, 88(r1)
rlwinm r2, r4, 0, 30, 31
cmplwi cr7, r2, 2
mfcr r2
rlwinm r2, r2, 30, 31, 31
cmplwi cr0, r2, 0
bne cr0, LBB1_2 ;UnifiedReturnBlock
after it is:
_test:
stwu r1, -80(r1)
stw r1, 76(r1)
mflr r11
stw r11, 88(r1)
rlwinm r2, r4, 0, 30, 31
cmplwi cr0, r2, 2
bgt cr0, LBB1_2 ;UnifiedReturnBlock
llvm-svn: 30954
2006-10-14 03:40:02 +00:00
Chris Lattner
a515f322f3
fold setcc of a setcc.
...
llvm-svn: 30953
2006-10-14 01:02:29 +00:00
Chris Lattner
25ad62d132
When SimplifySetCC was moved to the DAGCombiner, it was never removed from
...
SelectionDAG and it has since bitrotted. Remove the copy from SelectionDAG.
Next, remove the constant folding piece of DAGCombiner::SimplifySetCC into
a new FoldSetCC method which can be used by getNode() and SimplifySetCC.
This fixes obscure bugs.
llvm-svn: 30952
2006-10-14 00:41:01 +00:00
Chris Lattner
c4be6ee8b8
disable this pass for now, it's causing issues
...
llvm-svn: 30951
2006-10-14 00:30:06 +00:00
Chris Lattner
1c35d27fc4
falling off the end of a function is ok with an unreachable instruction.
...
llvm-svn: 30950
2006-10-14 00:21:48 +00:00
Chris Lattner
cfa6a33663
testcase for recent selectiondag patch
...
llvm-svn: 30949
2006-10-13 23:54:16 +00:00
Jim Laskey
bf50140aac
Reduce the workload by not adding chain users to work list.
...
llvm-svn: 30948
2006-10-13 23:32:28 +00:00
Chris Lattner
9b1878a28c
Fix a bug where we incorrectly turned '(X & 0) == 0' into '(X & 0) >> -1',
...
which is undefined. "0" isn't a power of 2.
llvm-svn: 30947
2006-10-13 22:46:18 +00:00
Chris Lattner
b90d66b7da
implement branch inspection/modification methods.
...
llvm-svn: 30946
2006-10-13 21:21:17 +00:00
Evan Cheng
fe5bb5dbe6
Merge ISD::TRUNCSTORE to ISD::STORE. Switch to using StoreSDNode.
...
llvm-svn: 30945
2006-10-13 21:14:26 +00:00
Chris Lattner
b441d8e8ce
it is easier to implement these when they are virtual
...
llvm-svn: 30944
2006-10-13 21:02:27 +00:00
Chris Lattner
520bf168f5
allow branch reversal to fail
...
llvm-svn: 30943
2006-10-13 20:59:31 +00:00
Bill Wendling
85f53a4427
Corrected formatting.
...
llvm-svn: 30942
2006-10-13 20:53:50 +00:00
Chris Lattner
87d16e0ed9
add the branch folding pass as a late cleanup pass for all targets. For now
...
it just deletes empty MBB's. Soon it will do more :)
llvm-svn: 30941
2006-10-13 20:45:56 +00:00
Chris Lattner
f8eaaded24
replace the existing branch inspection/modification APIs with something more
...
useful and general.
llvm-svn: 30940
2006-10-13 20:44:01 +00:00
Chris Lattner
ae19ea4b2a
disable some objectionable code, maybe we can bring this pass to life
...
llvm-svn: 30939
2006-10-13 20:43:10 +00:00
Chris Lattner
bea7a9de50
remove some dead code
...
llvm-svn: 30938
2006-10-13 20:40:42 +00:00
Chris Lattner
b22754853b
add note
...
llvm-svn: 30937
2006-10-13 20:20:58 +00:00
Chris Lattner
14f18d4896
set isBarrier correctly
...
llvm-svn: 30936
2006-10-13 19:10:34 +00:00
Chris Lattner
a3f4e611a4
Correctly handle instruction separators.
...
llvm-svn: 30935
2006-10-13 17:56:02 +00:00
Chris Lattner
63ec35db20
Expose method and ivars for measuring inline asm length properly.
...
llvm-svn: 30934
2006-10-13 17:50:07 +00:00
Andrew Lenharth
254a2fbcd0
Move some warnings to debug mode.
...
llvm-svn: 30933
2006-10-13 17:38:22 +00:00
Rafael Espindola
1f85e7a2a1
add FNEGS and FNEGD
...
llvm-svn: 30932
2006-10-13 17:37:35 +00:00
Chris Lattner
5cd4ac0a79
Fix another dtor issue. The function local statics in this function were
...
being destroyed at inconvenient times. Switch to using non-local ManagedStatic
objects, which actually also speeds up ConstRules::get.
llvm-svn: 30931
2006-10-13 17:22:21 +00:00
Rafael Espindola
042e61af25
add SBCS and SUBS
...
llvm-svn: 30930
2006-10-13 17:19:20 +00:00
Rafael Espindola
24d7976d1d
implement calls to functions that return long
...
llvm-svn: 30929
2006-10-13 16:47:22 +00:00
Rafael Espindola
bd50a4d757
implement unordered floating point compares
...
llvm-svn: 30928
2006-10-13 13:14:59 +00:00
Jim Laskey
a053c74b99
Workaround for templates
...
llvm-svn: 30927
2006-10-13 13:02:19 +00:00
Jim Laskey
20feec042a
Clean up dump.
...
llvm-svn: 30926
2006-10-13 13:01:34 +00:00
Chris Lattner
9476464f86
avoid a ctor/dtor issue with the ProgramName global.
...
llvm-svn: 30925
2006-10-13 00:06:24 +00:00
Chris Lattner
cf5bfb0e80
simplify trivial function
...
llvm-svn: 30924
2006-10-12 23:50:28 +00:00
Evan Cheng
c7283044d1
Really remove dead nodes from isel queue.
...
llvm-svn: 30923
2006-10-12 23:18:52 +00:00
Chris Lattner
f48558b3b6
shrink anon-ns and mark stuff static. No functionality changes
...
llvm-svn: 30922
2006-10-12 22:09:17 +00:00
Chris Lattner
9777da8fb7
add a note
...
llvm-svn: 30921
2006-10-12 22:01:26 +00:00
Chris Lattner
70444d5663
Lower X%C into X/C+stuff. This allows the 'division by a constant' logic to
...
apply to rems as well as divs. This fixes PR945 and speeds up ReedSolomon
from 14.57s to 10.90s (which is now faster than gcc).
It compiles CodeGen/X86/rem.ll into:
_test1:
subl $4, %esp
movl %esi, (%esp)
movl $2155905153, %ecx
movl 8(%esp), %esi
movl %esi, %eax
imull %ecx
addl %esi, %edx
movl %edx, %eax
shrl $31, %eax
sarl $7, %edx
addl %eax, %edx
imull $255, %edx, %eax
subl %eax, %esi
movl %esi, %eax
movl (%esp), %esi
addl $4, %esp
ret
_test2:
movl 4(%esp), %eax
movl %eax, %ecx
sarl $31, %ecx
shrl $24, %ecx
addl %eax, %ecx
andl $4294967040, %ecx
subl %ecx, %eax
ret
_test3:
subl $4, %esp
movl %esi, (%esp)
movl $2155905153, %ecx
movl 8(%esp), %esi
movl %esi, %eax
mull %ecx
shrl $7, %edx
imull $255, %edx, %eax
subl %eax, %esi
movl %esi, %eax
movl (%esp), %esi
addl $4, %esp
ret
instead of div/idiv instructions.
llvm-svn: 30920
2006-10-12 20:58:32 +00:00
Chris Lattner
ae912d4d65
new testcase
...
llvm-svn: 30919
2006-10-12 20:56:15 +00:00
Evan Cheng
cd6e1ecd4f
Add another cyclic dag test case.
...
llvm-svn: 30918
2006-10-12 20:38:45 +00:00
Evan Cheng
5ff49d9410
Use RemoveDeadNode to kill dead node.
...
llvm-svn: 30917
2006-10-12 20:35:19 +00:00
Evan Cheng
61afb767eb
Add RemoveDeadNode to remove a dead node and its (potentially) dead operands.
...
llvm-svn: 30916
2006-10-12 20:34:05 +00:00
Chris Lattner
e38ce54cc9
add a minor dag combine noticed when looking at PR945
...
llvm-svn: 30915
2006-10-12 20:23:19 +00:00