Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Add a memset loop that LoopIdiomRecognize doesn't recognize. | Anders Carlsson | 2011-01-23 | 1 | -0/+8 | |
| | | | | llvm-svn: 124082 | |||||
* | add a note | Chris Lattner | 2011-01-18 | 1 | -0/+20 | |
| | | | | llvm-svn: 123752 | |||||
* | Update README.txt to remove the DAE enhancement. | Anders Carlsson | 2011-01-16 | 1 | -23/+0 | |
| | | | | llvm-svn: 123597 | |||||
* | add some commentary | Chris Lattner | 2011-01-16 | 1 | -1/+14 | |
| | | | | llvm-svn: 123572 | |||||
* | Simplify a README.txt entry significantly to expose the core issue. | Chandler Carruth | 2011-01-16 | 1 | -28/+26 | |
| | | | | llvm-svn: 123556 | |||||
* | typo | Chris Lattner | 2011-01-13 | 1 | -1/+1 | |
| | | | | llvm-svn: 123406 | |||||
* | memcpy + metadata = bliss :) | Chris Lattner | 2011-01-13 | 1 | -0/+48 | |
| | | | | llvm-svn: 123405 | |||||
* | Teach constant folding to perform conversions from constant floating | Chandler Carruth | 2011-01-11 | 1 | -55/+0 | |
| | | | | | | | | point values to their integer representation through the SSE intrinsic calls. This is the last part of a README.txt entry for which I have real world examples. llvm-svn: 123206 | |||||
* | Fix a random missed optimization by making InstCombine more aggressive when ↵ | Owen Anderson | 2011-01-11 | 1 | -15/+0 | |
| | | | | | | | | determining which bits are demanded by a comparison against a constant. llvm-svn: 123203 | |||||
* | +0.0 vs -0.0 differences can be handled by looking at the user of the | Chris Lattner | 2011-01-10 | 1 | -3/+19 | |
| | | | | | | operation in some cases. llvm-svn: 123190 | |||||
* | expand on a note | Chris Lattner | 2011-01-10 | 1 | -4/+9 | |
| | | | | llvm-svn: 123145 | |||||
* | typo | Chris Lattner | 2011-01-09 | 1 | -1/+1 | |
| | | | | llvm-svn: 123142 | |||||
* | xref a PR # | Chris Lattner | 2011-01-09 | 1 | -22/+2 | |
| | | | | llvm-svn: 123141 | |||||
* | Add a note about the inability to model FP -> int conversions which | Chandler Carruth | 2011-01-09 | 1 | -0/+55 | |
| | | | | | | | | perform rounding other than truncation in the IR. Common C code for this turns into really an LLVM intrinsic call that blocks a lot of further optimizations. llvm-svn: 123135 | |||||
* | Add a note about a missed FP optimization. | Chandler Carruth | 2011-01-09 | 1 | -0/+24 | |
| | | | | llvm-svn: 123126 | |||||
* | Another missed memset in std::vector initialization. | Chandler Carruth | 2011-01-09 | 1 | -0/+19 | |
| | | | | llvm-svn: 123116 | |||||
* | Fix a cut-paste-o so that the sample code is correct for my last note. | Chandler Carruth | 2011-01-09 | 1 | -2/+6 | |
| | | | | | | | Also, switch to a more clear 'sink' function with its declaration to avoid any confusion about 'g'. Thanks for the suggestion Frits. llvm-svn: 123113 | |||||
* | Another missed optimization of trivial vector code. | Chandler Carruth | 2011-01-09 | 1 | -0/+33 | |
| | | | | llvm-svn: 123112 | |||||
* | Add a note about vector's size-constructor producing dead stores. | Chandler Carruth | 2011-01-09 | 1 | -0/+55 | |
| | | | | llvm-svn: 123111 | |||||
* | Add a note about a missed memset optimization from std::fill. | Chandler Carruth | 2011-01-09 | 1 | -0/+30 | |
| | | | | llvm-svn: 123103 | |||||
* | Revert 122959, it needs more thought. Add it back to README.txt with ↵ | Benjamin Kramer | 2011-01-07 | 1 | -0/+22 | |
| | | | | | | additional notes. llvm-svn: 123030 | |||||
* | With Benjamin's recent amazing patches, we should be able to do even better ↵ | Chris Lattner | 2011-01-06 | 1 | -0/+13 | |
| | | | | | | things :) llvm-svn: 122978 | |||||
* | Add a note from llvmdev, this time with more info. | Benjamin Kramer | 2011-01-06 | 1 | -0/+26 | |
| | | | | llvm-svn: 122966 | |||||
* | EarlyCSE does this now (and GVN always did it). | Benjamin Kramer | 2011-01-06 | 1 | -11/+0 | |
| | | | | llvm-svn: 122960 | |||||
* | InstCombine: If we call llvm.objectsize on a malloc call we can replace it ↵ | Benjamin Kramer | 2011-01-06 | 1 | -23/+0 | |
| | | | | | | with the size passed to malloc. llvm-svn: 122959 | |||||
* | add a note about object size from drystone, add a poorly optimized loop from ↵ | Chris Lattner | 2011-01-06 | 1 | -0/+79 | |
| | | | | | | 179.art. llvm-svn: 122954 | |||||
* | add a trivial instcombine missed in Dhrystone | Chris Lattner | 2011-01-06 | 1 | -0/+37 | |
| | | | | llvm-svn: 122953 | |||||
* | update a bunch of entries. | Chris Lattner | 2011-01-02 | 1 | -137/+19 | |
| | | | | llvm-svn: 122700 | |||||
* | Allow loop-idiom to run on multiple BB loops, but still only scan the loop | Chris Lattner | 2011-01-02 | 1 | -8/+0 | |
| | | | | | | | | | | | | | | | | | | header for now for memset/memcpy opportunities. It turns out that loop-rotate is successfully rotating loops, but *DOESN'T MERGE THE BLOCKS*, turning "for loops" into 2 basic block loops that loop-idiom was ignoring. With this fix, we form many *many* more memcpy and memsets than before, including on the "history" loops in the viterbi benchmark, which look like this: for (j=0; j<MAX_history; ++j) { history_new[i][j+1] = history[2*i][j]; } Transforming these loops into memcpy's speeds up the viterbi benchmark from 11.98s to 3.55s on my machine. Woo. llvm-svn: 122685 | |||||
* | a missed __builtin_object_size case. | Chris Lattner | 2011-01-01 | 1 | -0/+17 | |
| | | | | llvm-svn: 122676 | |||||
* | various updates. | Chris Lattner | 2011-01-01 | 1 | -31/+29 | |
| | | | | llvm-svn: 122675 | |||||
* | Revert commit 122654 at the request of Chris, who reckons that instsimplify | Duncan Sands | 2011-01-01 | 1 | -0/+11 | |
| | | | | | | is the wrong hammer for this nail, and is probably right. llvm-svn: 122661 | |||||
* | Fix a README item by having InstructionSimplify do a mild form of value | Duncan Sands | 2011-01-01 | 1 | -11/+0 | |
| | | | | | | | | | | | numbering, in which it considers (for example) "%a = add i32 %x, %y" and "%b = add i32 %x, %y" to be equal because the operands are equal and the result of the instructions only depends on the values of the operands. This has almost no effect (it removes 4 instructions from gcc-as-one-file), and perhaps slows down compilation: I measured a 0.4% slowdown on the large gcc-as-one-file testcase, but it wasn't statistically significant. llvm-svn: 122654 | |||||
* | add a note from llvmdev | Chris Lattner | 2010-12-28 | 1 | -0/+11 | |
| | | | | llvm-svn: 122603 | |||||
* | Remove/fix invalid README entries. The well thought out strcpy function ↵ | Benjamin Kramer | 2010-12-23 | 1 | -21/+2 | |
| | | | | | | doesn't return a pointer to the end of the string. llvm-svn: 122496 | |||||
* | recognize an unsigned add with overflow idiom into uadd. | Chris Lattner | 2010-12-19 | 1 | -20/+1 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | This resolves a README entry and technically resolves PR4916, but we still get poor code for the testcase in that PR because GVN isn't CSE'ing uadd with add, filed as PR8817. Previously we got: _test7: ## @test7 addq %rsi, %rdi cmpq %rdi, %rsi movl $42, %eax cmovaq %rsi, %rax ret Now we get: _test7: ## @test7 addq %rsi, %rdi movl $42, %eax cmovbq %rsi, %rax ret llvm-svn: 122182 | |||||
* | add another overflow idiom | Chris Lattner | 2010-12-15 | 1 | -0/+8 | |
| | | | | llvm-svn: 121854 | |||||
* | add a note about overflow idiom recognition. | Chris Lattner | 2010-12-15 | 1 | -1/+19 | |
| | | | | llvm-svn: 121853 | |||||
* | add a shift/imul missed optimization | Chris Lattner | 2010-12-15 | 1 | -0/+45 | |
| | | | | llvm-svn: 121850 | |||||
* | add a note about a SPEC hack that gcc mainline does. | Chris Lattner | 2010-12-15 | 1 | -0/+23 | |
| | | | | llvm-svn: 121849 | |||||
* | add a note | Chris Lattner | 2010-12-13 | 1 | -0/+36 | |
| | | | | llvm-svn: 121656 | |||||
* | Generalize the and-icmp-select instcombine further by allowing selects of ↵ | Benjamin Kramer | 2010-12-11 | 1 | -12/+0 | |
| | | | | | | | | | | | the form (x & 2^n) ? 2^m+C : C we can offset both arms by C to get the "(x & 2^n) ? 2^m : 0" form, optimize the select to a shift and apply the offset afterwards. llvm-svn: 121609 | |||||
* | The srem -> urem transform is not safe for any divisor that's not a power of ↵ | Benjamin Kramer | 2010-11-23 | 1 | -2/+2 | |
| | | | | | | | | | | two. E.g. -5 % 5 is 0 with srem and 1 with urem. Also addresses Frits van Bommel's comments. llvm-svn: 120049 | |||||
* | InstCombine: Reduce "X shift (A srem B)" to "X shift (A urem B)" iff B is ↵ | Benjamin Kramer | 2010-11-23 | 1 | -10/+2 | |
| | | | | | | | | positive. This allows to transform the rem in "1 << ((int)x % 8);" to an and. llvm-svn: 120028 | |||||
* | InstCombine: Implement X - A*-B -> X + A*B. | Benjamin Kramer | 2010-11-22 | 1 | -16/+0 | |
| | | | | llvm-svn: 119984 | |||||
* | Implement the "if (X == 6 || X == 4)" -> "if ((X|2) == 6)" optimization. | Benjamin Kramer | 2010-11-22 | 1 | -10/+0 | |
| | | | | | | | This currently only catches the most basic case, a two-case switch, but can be extended later. llvm-svn: 119964 | |||||
* | add some random notes. | Chris Lattner | 2010-11-21 | 1 | -2/+33 | |
| | | | | llvm-svn: 119925 | |||||
* | optimize: | Chris Lattner | 2010-11-21 | 1 | -8/+0 | |
| | | | | | | | | | void a(int x) { if (((1<<x)&8)==0) b(); } into "x != 3", which occurs over 100 times in 403.gcc but in no other program in llvm-test. llvm-svn: 119922 | |||||
* | tail calls on x86 are implemented. | Chris Lattner | 2010-11-21 | 1 | -16/+0 | |
| | | | | llvm-svn: 119920 | |||||
* | add a note | Chris Lattner | 2010-11-11 | 1 | -0/+28 | |
| | | | | llvm-svn: 118806 |