Sanjay Patel
58109abe91
[InstCombine] use m_APInt to allow icmp ult X, C folds for splat constant vectors
...
llvm-svn: 281107
2016-09-09 21:59:37 +00:00
Sanjay Patel
9b40f98357
[InstCombine] use m_APInt to allow icmp (and (sh X, Y), C2), C1 folds for splat constant vectors
...
llvm-svn: 280873
2016-09-07 22:33:03 +00:00
Sanjay Patel
def931e76a
[InstCombine] allow icmp (and X, C2), C1 folds for splat constant vectors
...
This is a revert of r280676 which was a revert of r280637;
ie, this is r280637 again. It was speculatively reverted to
help debug buildbot failures.
llvm-svn: 280861
2016-09-07 20:50:44 +00:00
Sanjay Patel
46f9df5b71
[InstCombine] revert r280637 because it causes test failures on an ARM bot
...
http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/14952/steps/ninja%20check%201/logs/FAIL%3A%20LLVM%3A%3Aicmp.ll
llvm-svn: 280676
2016-09-05 22:36:32 +00:00
Sanjay Patel
c641e9d6ff
[InstCombine] allow icmp (and X, C2), C1 folds for splat constant vectors
...
The code to calculate 'UsesRemoved' could be simplified.
As-is, that code is a victim of PR30273:
https://llvm.org/bugs/show_bug.cgi?id=30273
llvm-svn: 280637
2016-09-04 20:58:27 +00:00
Sanjay Patel
541aef4661
[InstCombine] allow icmp (div X, Y), C folds for splat constant vectors
...
Converting all of the overflow ops to APInt looked risky, so I've left that as a TODO.
llvm-svn: 280299
2016-08-31 21:57:21 +00:00
Sanjay Patel
5c5311f4e5
[InstCombine] use m_APInt to allow icmp (and X, Y), C folds for splat constant vectors
...
llvm-svn: 279937
2016-08-28 18:18:00 +00:00
Sanjay Patel
d398d4a39e
[InstCombine] use m_APInt to allow icmp eq/ne (shr X, C2), C folds for splat constant vectors
...
llvm-svn: 279677
2016-08-24 22:22:06 +00:00
Sanjay Patel
a392049419
[InstCombine] use m_APInt to allow icmp (shr exact X, Y), 0 folds for splat constant vectors
...
llvm-svn: 279472
2016-08-22 20:45:06 +00:00
Sanjay Patel
643d21a62c
[InstCombine] use m_APInt to allow icmp (shl X, Y), C folds for splat constant vectors, part 4
...
This concludes the fixes for icmp+shl in this series:
https://reviews.llvm.org/rL279339
https://reviews.llvm.org/rL279398
https://reviews.llvm.org/rL279399
llvm-svn: 279401
2016-08-21 17:10:07 +00:00
Sanjay Patel
7e09f13fed
[InstCombine] use m_APInt to allow icmp (shl X, Y), C folds for splat constant vectors, part 2
...
This is a partial enablement (move the ConstantInt guard down).
llvm-svn: 279398
2016-08-21 16:28:22 +00:00
Sanjay Patel
fa7de606c4
[InstCombine] use m_APInt to allow icmp (shl X, Y), C folds for splat constant vectors, part 1
...
This is a partial enablement (move the ConstantInt guard down) because there are many
different folds here and one of the later ones will require reworking 'isSignBitCheck'.
llvm-svn: 279339
2016-08-19 22:33:26 +00:00
Reid Kleckner
a871d3872a
Fix regression in InstCombine introduced by r278944
...
The intended transform is:
// Simplify icmp eq (or (ptrtoint P), (ptrtoint Q)), 0
// -> and (icmp eq P, null), (icmp eq Q, null).
P and Q are both pointer types, but may have different types. We need
two calls to getNullValue() to make the icmps.
llvm-svn: 279271
2016-08-19 16:53:18 +00:00
Sanjay Patel
a867afe094
[InstCombine] use m_APInt to allow icmp (shl 1, Y), C folds for splat constant vectors
...
llvm-svn: 279266
2016-08-19 16:12:16 +00:00
Sanjay Patel
57b12d3876
[InstCombine] use m_APInt to allow icmp X, C folds for splat constant vectors
...
Of course, we really need to refactor and fix all of the cmp predicates,
but this one is interesting because without it, we later perform an
information-losing transform of icmp (shl 1, Y), C, and we can't recover
the better fold.
llvm-svn: 279263
2016-08-19 15:40:44 +00:00
Sanjay Patel
78111a7617
[InstCombine] add tests for missing vector icmp folds
...
llvm-svn: 279259
2016-08-19 15:27:28 +00:00
Sanjay Patel
14cdf1968f
[InstCombine] add missing tests for basic icmp folds
...
These are implicitly included as part of larger test cases, but they don't
exist stand-alone (and don't happen for vectors...).
llvm-svn: 279257
2016-08-19 15:21:45 +00:00
Sanjay Patel
6347807f87
[InstCombine] use m_APInt to allow icmp (mul X, Y), C folds for splat constant vectors
...
This is a sibling of:
https://reviews.llvm.org/rL278859
https://reviews.llvm.org/rL278935
https://reviews.llvm.org/rL278945
https://reviews.llvm.org/rL279066
llvm-svn: 279077
2016-08-18 15:44:44 +00:00
Sanjay Patel
4c5e60d95c
[InstCombine] use m_APInt to allow icmp (xor X, Y), C folds for splat constant vectors
...
This is a sibling of:
https://reviews.llvm.org/rL278859
https://reviews.llvm.org/rL278935
https://reviews.llvm.org/rL278945
llvm-svn: 279066
2016-08-18 14:10:48 +00:00
Sanjay Patel
3c92db7560
[InstCombine] add test for missing vector icmp fold
...
Also, add a scalar test to demonstrate one of the intermediate folds that
is necessary to accomplish the existing, multi-step test. And simplify
the vector tests to only check the final piece of that multi-step transform.
llvm-svn: 278995
2016-08-17 22:18:57 +00:00
Sanjay Patel
4f7eb2aa95
[InstCombine] use m_APInt to allow icmp (add X, Y), C folds for splat constant vectors
...
This is a sibling of:
https://reviews.llvm.org/rL278859
llvm-svn: 278935
2016-08-17 15:24:30 +00:00
Sanjay Patel
e47df1ac62
[InstCombine] use m_APInt to allow icmp (sub X, Y), C folds for splat constant vectors
...
llvm-svn: 278859
2016-08-16 21:53:19 +00:00
Sanjay Patel
46a68ba618
[InstCombine] add tests for missing vector icmp folds
...
llvm-svn: 278768
2016-08-16 00:48:38 +00:00
Sanjay Patel
f1bf21c56b
[InstCombine] add tests for missing vector icmp folds
...
llvm-svn: 278765
2016-08-16 00:27:12 +00:00
Sanjay Patel
df77a4dbb0
[InstCombine] add tests for missing vector icmp folds
...
llvm-svn: 278757
2016-08-15 22:43:52 +00:00
Sanjay Patel
41520e1712
[InstCombine] add tests for missing vector icmp folds
...
llvm-svn: 278751
2016-08-15 21:47:50 +00:00
Sanjay Patel
3e9acec2fa
[InstCombine] add tests for missing vector icmp folds
...
llvm-svn: 278737
2016-08-15 20:56:11 +00:00
Sanjay Patel
b37bd6d7b7
[InstCombine] add test for missing vector icmp fold
...
llvm-svn: 278727
2016-08-15 20:02:40 +00:00
Sanjay Patel
2044a8eba9
[InstCombine] add tests for missing vector icmp folds
...
llvm-svn: 278709
2016-08-15 18:45:10 +00:00
Sanjay Patel
d391b0d69e
[InstCombine] add tests for missing vector icmp folds
...
llvm-svn: 278704
2016-08-15 18:26:56 +00:00
Sanjay Patel
a7b9bb3785
[InstCombine] add tests for missing vector icmp folds
...
llvm-svn: 278683
2016-08-15 17:10:35 +00:00
Sanjay Patel
ba1f9fbddc
[InstCombine] add tests for missing vector icmp folds
...
llvm-svn: 278634
2016-08-14 22:28:50 +00:00
Sanjay Patel
f6559404d5
[InstCombine] remove unnecessary function attributes from tests
...
llvm-svn: 278633
2016-08-14 21:48:21 +00:00
Sanjay Patel
b44ca3bfa9
[InstCombine] add tests for missing vector icmp folds
...
llvm-svn: 278632
2016-08-14 21:36:22 +00:00
Sanjay Patel
9f36a2d54b
add tests for missing vector icmp folds
...
llvm-svn: 278132
2016-08-09 16:39:05 +00:00
Sanjay Patel
3bade138b5
[InstCombine] use m_APInt to allow icmp eq (mul X, C1), C2 folds for splat constant vectors
...
This concludes the splat vector enhancements for foldICmpEqualityWithConstant().
Other commits in this series:
https://reviews.llvm.org/rL277762
https://reviews.llvm.org/rL277752
https://reviews.llvm.org/rL277738
https://reviews.llvm.org/rL277731
https://reviews.llvm.org/rL277659
https://reviews.llvm.org/rL277638
https://reviews.llvm.org/rL277629
llvm-svn: 277779
2016-08-04 22:19:27 +00:00
Sanjay Patel
d938e88e89
[InstCombine] use m_APInt to allow icmp eq (and X, C1), C2 folds for splat constant vectors
...
llvm-svn: 277762
2016-08-04 20:05:02 +00:00
Sanjay Patel
b3de75d3a0
[InstCombine] use m_APInt to allow icmp eq (or X, C1), C2 folds for splat constant vectors
...
llvm-svn: 277752
2016-08-04 19:12:12 +00:00
Sanjay Patel
9d591d15ec
[InstCombine] use m_APInt to allow icmp eq (sub C1, X), C2 folds for splat constant vectors
...
llvm-svn: 277731
2016-08-04 15:19:25 +00:00
Sanjay Patel
00a324e893
[InstCombine] use m_APInt to allow icmp eq (add X, C1), C2 folds for splat constant vectors
...
llvm-svn: 277659
2016-08-03 22:08:44 +00:00
Sanjay Patel
e063ddb347
add tests for icmp vector folds
...
llvm-svn: 276482
2016-07-22 22:19:52 +00:00
Sanjay Patel
cbc4377af1
add tests for icmp vector folds
...
llvm-svn: 276476
2016-07-22 21:28:20 +00:00
Sanjay Patel
97e61dcc2d
add tests for icmp vector folds
...
llvm-svn: 276475
2016-07-22 21:13:08 +00:00
Sanjay Patel
296a776a5b
add tests for icmp vector folds
...
llvm-svn: 276464
2016-07-22 20:11:08 +00:00
Matt Arsenault
8fd5978811
Revert "Revert "Revert "InstCombine: Reduce trunc (shl x, K) width."""
...
This seems to be causing an infinite loop / crash in instcombine
on some bots.
llvm-svn: 273069
2016-06-17 23:36:38 +00:00
Matt Arsenault
d76efc14b9
Revert "Revert "InstCombine: Reduce trunc (shl x, K) width.""
...
Reapply r272987. Condition should be in terms of the destination type,
and the flags should not be copied.
llvm-svn: 273045
2016-06-17 20:33:53 +00:00
Matt Arsenault
ce56f7bbaa
Revert "InstCombine: Reduce trunc (shl x, K) width."
...
This reverts commit r272987.
This might be causing crashes on some bots.
llvm-svn: 272990
2016-06-17 06:28:53 +00:00
Matt Arsenault
028fd50642
InstCombine: Reduce trunc (shl x, K) width.
...
llvm-svn: 272987
2016-06-17 04:43:22 +00:00
Sanjay Patel
22b01febd4
[InstCombine] add another test for wrong icmp constant (PR27792)
...
It doesn't matter if the comparison is unsigned; the inc/dec is always signed.
llvm-svn: 269831
2016-05-17 20:20:40 +00:00
Sanjay Patel
de96f39392
[InstCombine] add test for wrong icmp constant (PR27792)
...
The code fix for this was checked in at r269797.
llvm-svn: 269803
2016-05-17 19:25:55 +00:00