summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG
Commit message (Collapse)AuthorAgeFilesLines
* Tidy up after truncstore changes.Jim Laskey2006-10-141-46/+9
| | | | llvm-svn: 30961
* Debug tweak.Evan Cheng2006-10-142-4/+4
| | | | llvm-svn: 30959
* Make sure that the node returned by SimplifySetCC is added to the worklistChris Lattner2006-10-141-0/+5
| | | | | | so that it can be deleted if unused. llvm-svn: 30955
* fold setcc of a setcc.Chris Lattner2006-10-141-24/+40
| | | | llvm-svn: 30953
* When SimplifySetCC was moved to the DAGCombiner, it was never removed fromChris Lattner2006-10-142-194/+25
| | | | | | | | | | 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
* Reduce the workload by not adding chain users to work list.Jim Laskey2006-10-131-13/+29
| | | | llvm-svn: 30948
* Fix a bug where we incorrectly turned '(X & 0) == 0' into '(X & 0) >> -1',Chris Lattner2006-10-131-2/+2
| | | | | | which is undefined. "0" isn't a power of 2. llvm-svn: 30947
* Merge ISD::TRUNCSTORE to ISD::STORE. Switch to using StoreSDNode.Evan Cheng2006-10-135-223/+252
| | | | llvm-svn: 30945
* Lower X%C into X/C+stuff. This allows the 'division by a constant' logic toChris Lattner2006-10-121-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Add RemoveDeadNode to remove a dead node and its (potentially) dead operands.Evan Cheng2006-10-121-0/+33
| | | | llvm-svn: 30916
* add a minor dag combine noticed when looking at PR945Chris Lattner2006-10-121-0/+7
| | | | llvm-svn: 30915
* D'oh - need to use the rigth kind of store.Jim Laskey2006-10-121-3/+6
| | | | llvm-svn: 30903
* Alias analysis of TRUNCSTORE.Jim Laskey2006-10-111-1/+28
| | | | llvm-svn: 30889
* TypoJim Laskey2006-10-111-1/+1
| | | | llvm-svn: 30884
* Handle aliasing of loadext.Jim Laskey2006-10-111-15/+19
| | | | llvm-svn: 30883
* Fix regression in combiner alias analysis.Jim Laskey2006-10-111-22/+33
| | | | llvm-svn: 30880
* Naming consistency.Evan Cheng2006-10-115-20/+20
| | | | llvm-svn: 30878
* Jimptables working again on alpha.Andrew Lenharth2006-10-113-13/+7
| | | | | | As a bonus, use the GOT node instead of the AlphaISD::GOT for internal stuff. llvm-svn: 30873
* add two helper methods.Chris Lattner2006-10-111-1/+90
| | | | llvm-svn: 30869
* FindModifiedNodeSlot needs to add LoadSDNode ivars to create proper ↵Evan Cheng2006-10-111-0/+9
| | | | | | SelectionDAGCSEMap ID. llvm-svn: 30866
* Also update getNodeLabel for LoadSDNode.Evan Cheng2006-10-101-0/+21
| | | | llvm-svn: 30861
* SDNode::dump should also print out extension type and VT.Evan Cheng2006-10-101-0/+21
| | | | llvm-svn: 30860
* Fix another bug in extload promotion.Chris Lattner2006-10-101-1/+2
| | | | llvm-svn: 30857
* Fix a bug introduced by my LOAD/LOADX changes.Evan Cheng2006-10-101-2/+4
| | | | llvm-svn: 30853
* Reflects ISD::LOAD / ISD::LOADX / LoadSDNode changes.Evan Cheng2006-10-095-369/+401
| | | | llvm-svn: 30844
* Eliminate more token factors by taking advantage of transitivity:Chris Lattner2006-10-081-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | if TF depends on A and B, and A depends on B, TF just needs to depend on A. With Jim's alias-analysis stuff enabled, this compiles the testcase in PR892 into: __Z4test3Val: subl $44, %esp call L__Z3foov$stub movl %edx, 28(%esp) movl %eax, 32(%esp) movl %eax, 24(%esp) movl %edx, 36(%esp) movl 52(%esp), %ecx movl %ecx, 4(%esp) movl %eax, 8(%esp) movl %edx, 12(%esp) movl 48(%esp), %eax movl %eax, (%esp) call L__Z3bar3ValS_$stub addl $44, %esp ret instead of: __Z4test3Val: subl $44, %esp call L__Z3foov$stub movl %eax, 24(%esp) movl %edx, 28(%esp) movl 24(%esp), %eax movl %eax, 32(%esp) movl 28(%esp), %eax movl %eax, 36(%esp) movl 32(%esp), %eax movl 36(%esp), %ecx movl 52(%esp), %edx movl %edx, 4(%esp) movl %eax, 8(%esp) movl %ecx, 12(%esp) movl 48(%esp), %eax movl %eax, (%esp) call L__Z3bar3ValS_$stub addl $44, %esp ret llvm-svn: 30821
* Combiner alias analysis passes Multisource (release-asserts.)Jim Laskey2006-10-071-88/+71
| | | | llvm-svn: 30818
* Fix a bug legalizing zero-extending i64 loads into 32-bit loads. The bottomChris Lattner2006-10-071-3/+2
| | | | | | part was always forced to be sextload, even when we needed an zextload. llvm-svn: 30782
* initialize ivarChris Lattner2006-10-061-0/+1
| | | | llvm-svn: 30780
* jump tables handle picChris Lattner2006-10-061-5/+0
| | | | llvm-svn: 30776
* Fix a miscompilation of:Chris Lattner2006-10-061-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | long long foo(long long X) { return (long long)(signed char)(int)X; } Instead of: _foo: extsb r2, r4 srawi r3, r4, 31 mr r4, r2 blr we now produce: _foo: extsb r4, r4 srawi r3, r4, 31 blr This fixes a miscompilation in ConstantFolding.cpp. llvm-svn: 30768
* Make use of getStore().Evan Cheng2006-10-053-52/+36
| | | | llvm-svn: 30759
* Add getStore() helper function to create ISD::STORE nodes.Evan Cheng2006-10-051-1/+16
| | | | llvm-svn: 30758
* Alias analysis code clean ups.Jim Laskey2006-10-051-163/+146
| | | | llvm-svn: 30753
* Fix some typos that can cause a flag value to have more than one use.Evan Cheng2006-10-041-2/+2
| | | | llvm-svn: 30727
* More extensive alias analysis.Jim Laskey2006-10-041-201/+203
| | | | llvm-svn: 30721
* Combine ISD::EXTLOAD, ISD::SEXTLOAD, ISD::ZEXTLOAD into ISD::LOADX. Add anEvan Cheng2006-10-044-118/+102
| | | | | | extra operand to LOADX to specify the exact value extension type. llvm-svn: 30714
* Fix an obvious typo.Evan Cheng2006-10-031-1/+1
| | | | llvm-svn: 30711
* Debugging kruftJim Laskey2006-10-021-3/+0
| | | | llvm-svn: 30688
* Add ability to annotate (color) nodes in a viewGraph.Jim Laskey2006-10-021-1/+69
| | | | llvm-svn: 30686
* refactor critical edge breaking out into the SplitCritEdgesForPHIConstants ↵Chris Lattner2006-09-281-9/+20
| | | | | | | | method. This is a baby step towards fixing PR925. llvm-svn: 30643
* Comments on JumpTablenessAndrew Lenharth2006-09-262-0/+4
| | | | llvm-svn: 30615
* Load chain check is not neededJim Laskey2006-09-261-24/+1
| | | | llvm-svn: 30613
* Chain can be any operandJim Laskey2006-09-261-11/+9
| | | | llvm-svn: 30611
* Wrong size for loadJim Laskey2006-09-261-2/+8
| | | | llvm-svn: 30610
* Can't move a load node if it's chain is not used.Jim Laskey2006-09-261-1/+22
| | | | llvm-svn: 30609
* Accidental enable of bad codeJim Laskey2006-09-251-1/+1
| | | | llvm-svn: 30601
* Fix chain dropping in load and drop unused stores in ret blocks.Jim Laskey2006-09-251-7/+14
| | | | llvm-svn: 30600
* Core antialiasing for load and store.Jim Laskey2006-09-251-53/+282
| | | | llvm-svn: 30597
* Add support for other relocation bases to jump tables, as well as custom asm ↵Andrew Lenharth2006-09-242-1/+13
| | | | | | directives llvm-svn: 30593
OpenPOWER on IntegriCloud