summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Teach InstCombine not to use Add and Neg on FP. PR 8490.Dale Johannesen2010-10-271-1/+8
| | | | llvm-svn: 117510
* Remove the rest of my instcombine changes. Back to the drawing board on ↵Owen Anderson2010-07-161-28/+0
| | | | | | this one. llvm-svn: 108530
* Speculatively revert r108429 to fix the clang self-host.Owen Anderson2010-07-151-0/+28
| | | | llvm-svn: 108436
* Per Chris' suggestion, get rid of the select canonicalization and just addOwen Anderson2010-07-151-28/+0
| | | | | | | | the corresponding or-icmp-and pattern. This has the added benefit of doing the matching earlier, and thus being less susceptible to being confused by earlier transforms. llvm-svn: 108429
* Reapply r108378, with bugfixes, testcase, and improved comment formatting.Owen Anderson2010-07-151-0/+28
| | | | | | This now passes LIT, nighty test, and llvm-gcc bootstrap on my machine. llvm-svn: 108422
* Speculatively revert r108378; may be causing bootstrap failures.Eli Friedman2010-07-151-25/+0
| | | | llvm-svn: 108389
* Add instcombine transforms to optimize tests of multiple bits of the same ↵Owen Anderson2010-07-141-0/+25
| | | | | | value into a single larger comparison. llvm-svn: 108378
* Teach instcombine to transformBenjamin Kramer2010-07-081-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | (X >s -1) ? C1 : C2 and (X <s 0) ? C2 : C1 into ((X >>s 31) & (C2 - C1)) + C1, avoiding the conditional. This optimization could be extended to take non-const C1 and C2 but we better stay conservative to avoid code size bloat for now. for int sel(int n) { return n >= 0 ? 60 : 100; } we now generate sarl $31, %edi andl $40, %edi leal 60(%rdi), %eax instead of testl %edi, %edi movl $60, %ecx movl $100, %eax cmovnsl %ecx, %eax llvm-svn: 107866
* move some select simplifications out out instcombine intoChris Lattner2010-04-201-31/+13
| | | | | | inst simplify. No functionality change. llvm-svn: 101873
* Don't do (X != Y) ? X : Y -> X for floating-point values; it doesn'tDan Gohman2010-02-231-5/+23
| | | | | | | | handle NaN properly. Do (X une Y) ? X : Y -> X if one of X and Y is not zero. llvm-svn: 96955
* Uniformize the names of type predicates: rather than having isFloatTy andDuncan Sands2010-02-151-2/+2
| | | | | | isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris! llvm-svn: 96223
* change the canonical form of "cond ? -1 : 0" to be Chris Lattner2010-01-241-48/+18
| | | | | | | | "sext cond" instead of a select. This simplifies some instcombine code, matches the policy for zext (cond ? 1 : 0 -> zext), and allows us to generate better code for a testcase on ppc. llvm-svn: 94339
* Convert a ton of simple integer type equality tests to the new predicate.Benjamin Kramer2010-01-051-1/+1
| | | | llvm-svn: 92760
* clean up header.Chris Lattner2010-01-051-7/+2
| | | | llvm-svn: 92688
* split select out to its own file.Chris Lattner2010-01-051-0/+708
llvm-svn: 92687
OpenPOWER on IntegriCloud