summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Another round of dag combiner changes. This fixes some missing XOR foldsNate Begeman2005-09-072-17/+48
| | | | | | as well as fixing how we replace old values with new values. llvm-svn: 23260
* Fix a bug that Tzu-Chien Chiu noticed: live interval analysis does NOTChris Lattner2005-09-071-1/+0
| | | | | | preserve livevar llvm-svn: 23259
* Implement a common missing fold, (add (add x, c1), c2) -> (add x, c1+c2).Nate Begeman2005-09-071-8/+14
| | | | | | | This restores all of stanford to being identical with and without the dag combiner with the add folding turned off in sd.cpp. llvm-svn: 23258
* On non-apple systems, when using -march=ppc32, do not print:Chris Lattner2005-09-071-1/+1
| | | | | | | | '' is not a recognized processor for this target (ignoring processor) Default to "generic" instead of "" for the default CPU. llvm-svn: 23257
* Print:Chris Lattner2005-09-071-4/+4
| | | | | | | | | | '' is not a recognized processor for this target (ignoring processor) instead of: is not a recognized processor for this target (ignoring processor) llvm-svn: 23256
* Fix a bug nate ran into with replacealluseswith. In the recursive cse case,Chris Lattner2005-09-071-15/+45
| | | | | | | | 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. llvm-svn: 23255
* Add an option to the DAG Combiner to enable it for beta runs, and turn onNate Begeman2005-09-072-5/+25
| | | | | | that option for PowerPC's beta. llvm-svn: 23253
* Implement i64<->fp using the fctidz/fcfid instructions on PowerPC when weNate Begeman2005-09-064-13/+69
| | | | | | | | | 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. llvm-svn: 23250
* Fix up the AssertXext problem, as well as adding it at callsAndrew Lenharth2005-09-062-14/+25
| | | | llvm-svn: 23246
* Add note about future optimization noted in the ppc compiler writer's guideNate Begeman2005-09-061-0/+4
| | | | llvm-svn: 23245
* Add accessor for 64bit flag, so that we can tell when it is safe toNate Begeman2005-09-062-1/+3
| | | | | | generate the fun in-register fp<->long instructions. llvm-svn: 23244
* Next round of DAGCombiner changes. This version now passes all the testsNate Begeman2005-09-061-236/+231
| | | | | | | I have run so far when run before Legalize. It still needs to pick up the SetCC folds, and nodes that use SetCC. llvm-svn: 23243
* revert part of the last change, should fix regressionsAndrew Lenharth2005-09-042-6/+11
| | | | llvm-svn: 23241
* explicitly specify an operands list for patterns with inputs (e.g. neg)Chris Lattner2005-09-031-8/+13
| | | | llvm-svn: 23240
* include the dag isel fragmentChris Lattner2005-09-031-0/+2
| | | | llvm-svn: 23239
* ask for a dag iselChris Lattner2005-09-031-1/+2
| | | | llvm-svn: 23238
* Fix a checking failure in gsChris Lattner2005-09-031-1/+1
| | | | llvm-svn: 23235
* Change the isel to not break out of the big giant switch. Instead, theChris Lattner2005-09-031-59/+61
| | | | | | switch should never be exited, so its bottom is now unreachable. llvm-svn: 23234
* rearrange logical ops to group them together more consistently.Chris Lattner2005-09-031-16/+42
| | | | | | | | Define the PatFrag class which can be used to define subpatterns to match things with. Define 'not', and use it to define the patterns for andc, nand, etc. llvm-svn: 23233
* Add AND/OR/XORChris Lattner2005-09-022-31/+65
| | | | llvm-svn: 23232
* Next round of DAG Combiner changes. Just need to support multiple returnNate Begeman2005-09-021-302/+325
| | | | | | values, and then we should be able to hook it up. llvm-svn: 23231
* Add some initial patterns to simple binary instructions, though theyChris Lattner2005-09-022-25/+43
| | | | | | | | | currently don't do anything. This elides patterns for binary operators that ping on the carry flag, since we don't model it yet. This patch also removes PPC::SUB, because it is dead. llvm-svn: 23230
* Clean up some code from the last checkinChris Lattner2005-09-021-24/+12
| | | | llvm-svn: 23229
* Fix a bug in legalize where it would emit two calls to libcalls that returnChris Lattner2005-09-021-10/+13
| | | | | | | | i64 values on targets that need that expanded to 32-bit registers. This fixes PowerPC/2005-09-02-LegalizeDuplicatesCalls.ll and speeds up 189.lucas from taking 122.72s to 81.96s on my desktop. llvm-svn: 23228
* turn on dag isel by defaultChris Lattner2005-09-021-3/+3
| | | | llvm-svn: 23226
* Make sure to auto-cse nullary opsChris Lattner2005-09-021-3/+9
| | | | llvm-svn: 23224
* Add help support for -mcpu and -mattr.Jim Laskey2005-09-023-24/+57
| | | | llvm-svn: 23222
* Fix some buggy logic where we would try to remove nodes with two operandsChris Lattner2005-09-021-34/+56
| | | | | | | | | | from the binary ops map, even if they had multiple results. This latent bug caused a few failures with the dag isel last night. To prevent stuff like this from happening in the future, add some really strict checking to make sure that the CSE maps always match up with reality! llvm-svn: 23221
* Pull out Lowering in preperation for multiple ISels. Oh, and get rid of ↵Andrew Lenharth2005-09-023-434/+435
| | | | | | some stuff llvm-svn: 23220
* Don't create zero sized stack objects even for array allocas with a zeroChris Lattner2005-09-021-1/+2
| | | | | | number of elements. llvm-svn: 23219
* Decouple fsqrt from gpul optimizations, implementing fsqrt.ll.Chris Lattner2005-09-023-8/+8
| | | | | | Remove the -enable-gpopt option which is subsumed by feature flags. llvm-svn: 23218
* Fix the release build, noticed by Eric van Riet PaapChris Lattner2005-09-022-2/+2
| | | | llvm-svn: 23215
* Fix a problem that Dan Berlin noticed, where reassociation would not succeedChris Lattner2005-09-021-0/+6
| | | | | | | | | | | | | | | | | | in building maximal expressions before simplifying them. In particular, i cases like this: X-(A+B+X) the code would consider A+B+X to be a maximal expression (not understanding that the single use '-' would be turned into a + later), simplify it (a noop) then later get simplified again. Each of these simplify steps is where the cost of reassociation comes from, so this patch should speed up the already fast pass a bit. Thanks to Dan for noticing this! llvm-svn: 23214
* Avoid creating garbage instructions, just move the old add instructionChris Lattner2005-09-021-9/+11
| | | | | | to where we need it when converting -(A+B+C) -> -A + -B + -C. llvm-svn: 23213
* add some assertions and fix problems where reassociate could access theChris Lattner2005-09-021-2/+11
| | | | | | Ops vector out of range llvm-svn: 23211
* Fix VC++ build errorsJeff Cohen2005-09-021-1/+1
| | | | llvm-svn: 23210
* Restore this patch now that the latent bug has been fixedChris Lattner2005-09-021-2/+16
| | | | llvm-svn: 23209
* Make sure to legalize assert[zs]ext's operand correctlyChris Lattner2005-09-021-2/+7
| | | | llvm-svn: 23208
* Revert the previous patch which causes a mysterious regression in toast.Chris Lattner2005-09-021-16/+2
| | | | llvm-svn: 23207
* Teach live intervals to not crash on dead livein regsChris Lattner2005-09-022-7/+13
| | | | llvm-svn: 23206
* For values that are live across basic blocks and need promotion, use ANY_EXTENDChris Lattner2005-09-021-10/+5
| | | | | | | | instead of ZERO_EXTEND to eliminate extraneous extensions. This eliminates dead zero extensions on formal arguments and other cases on PPC, implementing the newly tightened up test/Regression/CodeGen/PowerPC/small-arguments.ll test. llvm-svn: 23205
* legalize ANY_EXTEND appropriatelyChris Lattner2005-09-021-6/+26
| | | | llvm-svn: 23204
* Add support for ANY_EXTEND and add a few minor folds for itChris Lattner2005-09-021-1/+11
| | | | llvm-svn: 23203
* Handle any_extend like zextChris Lattner2005-09-021-0/+1
| | | | llvm-svn: 23202
* Handle ANY_EXTEND like ZERO_EXTEND. Simplify the extend/truncate code onChris Lattner2005-09-021-59/+23
| | | | | | the observation that it only has to handle i1 -> i64 and i64 -> i1. llvm-svn: 23201
* Implement small-arguments.ll:test3 by teaching the DAG optimizer thatChris Lattner2005-09-011-2/+16
| | | | | | | the results of calls to functions returning small values are properly sign/zero extended. llvm-svn: 23198
* Fix some code in the current node combining code, spotted when it was movedNate Begeman2005-09-011-11/+3
| | | | | | | | | | over to DAGCombiner.cpp 1. Don't assume that SetCC returns i1 when folding (xor (setcc) constant) 2. Don't duplicate code in folding AND with AssertZext that is handled by MaskedValueIsZero llvm-svn: 23196
* Implement first round of feedback from chris (there's still a couple thingsNate Begeman2005-09-011-201/+137
| | | | | | left to do). llvm-svn: 23195
* Align functions to 16-byte boundaries, to eliminate noise in performance ↵Chris Lattner2005-09-011-1/+1
| | | | | | | | measurements. This improves the performance of 'treeadd' by about 20% with the dag isel, restoring it to the pattern-isel level (which happens to get the alignment right). llvm-svn: 23194
* Local labels on darwin apparently start with just 'L', not .L like otherChris Lattner2005-09-011-2/+2
| | | | | | | platforms. This reduces executable size and makes shark realize the actual bounds of functions instead of showing each MBB as a function :) llvm-svn: 23193
OpenPOWER on IntegriCloud