Commit Graph

29 Commits

Author SHA1 Message Date
Benjamin Kramer
1db071f0da Teach instcombine to transform
(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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107866 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-08 11:39:10 +00:00
Chris Lattner
65f067fa63 add check lines for min/max tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91816 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-21 06:08:50 +00:00
Chris Lattner
a0773eb330 really convert this to filecheck.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91815 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-21 06:06:10 +00:00
Chris Lattner
b109b5c148 give instcombine some helper functions for matching MIN and MAX, and
implement some optimizations for MIN(MIN()) and MAX(MAX()) and 
MIN(MAX()) etc.  This substantially improves the code in PR5822 but
doesn't kick in much elsewhere.  2 max's were optimized in 
pairlocalalign and one in smg2000.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91814 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-21 06:03:05 +00:00
Chris Lattner
a278d4a1f7 filecheckize
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91813 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-21 05:53:13 +00:00
Chris Lattner
3ddfb21306 The select instruction is not neccesarily in the same block as the
phi nodes.  Make sure to phi translate from the right block. 

This fixes a llvm-building-llvm failure on GVN-PRE.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82970 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-28 06:49:44 +00:00
Chris Lattner
c6df8f4d5f Enhance the previous fix for PR4895 to allow more values than just
simple constants for the true/false value of the select.  We now
do phi translation etc.  This really fixes PR4895 :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82917 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-27 20:18:49 +00:00
Chris Lattner
5d1704ddbf implement PR4895, by making FoldOpIntoPhi handle select conditions
that are phi nodes.  Also tighten up FoldOpIntoPhi to treat constantexpr
operands to phis just like other variables, avoiding moving constantexpr
computations around.

Patch by Daniel Dunbar.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82913 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-27 19:57:57 +00:00
Dan Gohman
3e054fe9ef Use opt -S instead of piping bitcode output through llvm-dis.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81257 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-08 22:34:10 +00:00
Dan Gohman
b1e1e82c54 Change these tests to feed the assembly files to opt directly, instead
of using llvm-as, now that opt supports this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81226 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-08 16:50:01 +00:00
Tanya Lattner
ec9a35a6f9 Remove llvm-upgrade and update test cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47793 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-01 09:15:35 +00:00
Chris Lattner
cfa597569d Implement PR1822
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44318 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-25 21:27:53 +00:00
Reid Spencer
7c65d4345e For PR1319:
Make use of the END. facility on all files > 1K so that we aren't wasting CPU
cycles searching for RUN: lines that we'll never find.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36059 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-15 07:38:21 +00:00
Reid Spencer
2b544beda3 For PR1319:
Upgrade tests to work with new llvm.exp version of llvm_runtest.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36013 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-14 20:13:02 +00:00
Reid Spencer
69ccadd753 Use the llvm-upgrade program to upgrade llvm assembly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32115 91177308-0d34-0410-b5e6-96231b3b80d8
2006-12-02 04:23:10 +00:00
Chris Lattner
d0b9983d27 number test right
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30484 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-19 06:19:19 +00:00
Chris Lattner
298c7e303d make this harder
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30481 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-19 06:17:55 +00:00
Chris Lattner
935a10d5dc new testcases
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30480 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-19 06:16:46 +00:00
Chris Lattner
bbf4636200 new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30229 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-09 20:26:04 +00:00
Chris Lattner
17ce8d22c3 add a new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21469 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-23 15:31:03 +00:00
Chris Lattner
60a11f1970 load null is undefined behavior, this should fold
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16498 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-23 15:45:20 +00:00
Chris Lattner
9e28f18fb3 More instcombine testcases
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14094 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-09 07:59:40 +00:00
Chris Lattner
4561db2edc New testcase for the instruction combiner that happen often in the Java FE
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14082 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-09 04:23:57 +00:00
Chris Lattner
fb384a15ff New testcases
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12820 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-10 22:21:14 +00:00
Chris Lattner
a5c5830d53 Add testcases for harder combining cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12799 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-09 23:43:48 +00:00
Chris Lattner
b5ee959e63 new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12792 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-09 18:19:29 +00:00
Chris Lattner
7018f5c2d6 Add some more cases we should combine
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12768 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-08 04:43:04 +00:00
Chris Lattner
6d0996866c Add some testcases for select simplification
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12543 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-30 19:36:54 +00:00
Chris Lattner
f820e3b4b8 test instruction combiner opts for select instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12328 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 06:01:00 +00:00