Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								f3dda13bd2 
								
							 
						 
						
							
							
								
								[InstCombine] Ensure that truncated int types are legal.  
							
							 
							
							... 
							
							
							
							Fixes the FIXMEs in D25952 and rL285075.
Patch by bryant!
Differential Revision: https://reviews.llvm.org/D25955 
llvm-svn: 285108 
							
						 
						
							2016-10-25 20:11:47 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								d59f7f9047 
								
							 
						 
						
							
							
								
								[InstCombine] add test and code comment to show potentially misguided icmp trunc transform  
							
							 
							
							... 
							
							
							
							llvm-svn: 285075 
							
						 
						
							2016-10-25 15:16:39 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								af91d1f81e 
								
							 
						 
						
							
							
								
								[InstCombine] allow icmp (shr/shl) folds for vectors  
							
							 
							
							... 
							
							
							
							These 2 helper functions were already using APInt internally, so just
change the API and caller to allow folds for splats. The scalar
regression tests look quite thorough, so I just added a couple of
tests to prove that vectors are handled too.
These folds should be grouped with the other cmp+shift folds though.
That can be an NFC follow-up.
llvm-svn: 281663 
							
						 
						
							2016-09-15 21:35:30 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								886a542e23 
								
							 
						 
						
							
							
								
								[InstCombine] allow icmp (sub nsw) folds for vectors  
							
							 
							
							... 
							
							
							
							Also, clean up the code and comments for the existing folds in foldICmpSubConstant().
llvm-svn: 281631 
							
						 
						
							2016-09-15 18:05:17 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								514068397e 
								
							 
						 
						
							
							
								
								[InstCombine] add vector tests for icmp (sub nsw)  
							
							 
							
							... 
							
							
							
							llvm-svn: 281630 
							
						 
						
							2016-09-15 17:54:47 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								7577a3d799 
								
							 
						 
						
							
							
								
								[InstCombine] use m_APInt to allow icmp folds using known bits for splat constant vectors  
							
							 
							
							... 
							
							
							
							llvm-svn: 281613 
							
						 
						
							2016-09-15 14:15:47 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								9f036b5a97 
								
							 
						 
						
							
							
								
								[InstCombine] add vector tests for foldICmpUsingKnownBits()  
							
							 
							
							... 
							
							
							
							llvm-svn: 281559 
							
						 
						
							2016-09-14 23:15:11 +00:00  
						
					 
				
					
						
							
							
								 
								Matt Arsenault
							
						 
						
							 
							
							
							
							
								
							
							
								e2e6cfee61 
								
							 
						 
						
							
							
								
								Reapply "InstCombine: Reduce trunc (shl x, K) width."  
							
							 
							
							... 
							
							
							
							This reapplies r272987 with a fix for infinitely looping
when the truncated value is another shift of a constant.
llvm-svn: 281379 
							
						 
						
							2016-09-13 19:43:57 +00:00  
						
					 
				
					
						
							
							
								 
								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