summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG
Commit message (Collapse)AuthorAgeFilesLines
* Make flag and chain edges visually distinguishable from value edges in DOTChris Lattner2006-10-201-1/+16
| | | | | | output. llvm-svn: 31067
* For PR950:Reid Spencer2006-10-202-37/+39
| | | | | | | | This patch implements the first increment for the Signless Types feature. All changes pertain to removing the ConstantSInt and ConstantUInt classes in favor of just using ConstantInt. llvm-svn: 31063
* Partially in response to PR926: insert the newly created machine basicBill Wendling2006-10-191-8/+17
| | | | | | | | blocks into the basic block list when lowering the switch inst. into a binary tree of if-then statements. This allows the "visitSwitchCase" func to allow for fall-through behavior. llvm-svn: 31057
* Add option for controlling inclusion of global AA.Jim Laskey2006-10-181-6/+12
| | | | llvm-svn: 31040
* Use global info for alias analysis.Jim Laskey2006-10-181-9/+38
| | | | llvm-svn: 31035
* Trivial patch to speed up legalizing common i64 constants.Chris Lattner2006-10-171-0/+7
| | | | llvm-svn: 31020
* Fix CodeGen/PowerPC/2006-10-17-brcc-miscompile.llChris Lattner2006-10-171-1/+1
| | | | llvm-svn: 31019
* Fix printer for StoreSDNode.Evan Cheng2006-10-171-4/+5
| | | | llvm-svn: 31017
* Reflect MemOpAddrMode change; added a helper to create pre-indexed load.Evan Cheng2006-10-171-4/+68
| | | | llvm-svn: 31016
* Make it simplier to dump DAGs while in DAGCombiner. Remove a nasty ↵Jim Laskey2006-10-173-10/+7
| | | | | | optimization. llvm-svn: 31009
* Make sure operand does have size and element type operands.Evan Cheng2006-10-171-1/+2
| | | | llvm-svn: 30999
* Be careful when looking through a vbit_convert. Optimizing this:Evan Cheng2006-10-161-2/+11
| | | | | | | | | | | (vector_shuffle (vbitconvert (vbuildvector (copyfromreg v4f32), 1, v4f32), 4, f32), (undef, undef, undef, undef), (0, 0, 0, 0), 4, f32) to the vbitconvert is a very bad idea. llvm-svn: 30989
* Pass AliasAnalysis thru to DAGCombiner.Jim Laskey2006-10-162-6/+18
| | | | llvm-svn: 30984
* 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
OpenPOWER on IntegriCloud