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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								514068397e 
								
							 
						 
						
							
							
								
								[InstCombine] add vector tests for icmp (sub nsw)  
							
							... 
							
							
							
							llvm-svn: 281630 
							
						 
						
							2016-09-15 17:54:47 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								9f036b5a97 
								
							 
						 
						
							
							
								
								[InstCombine] add vector tests for foldICmpUsingKnownBits()  
							
							... 
							
							
							
							llvm-svn: 281559 
							
						 
						
							2016-09-14 23:15:11 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								78111a7617 
								
							 
						 
						
							
							
								
								[InstCombine] add tests for missing vector icmp folds  
							
							... 
							
							
							
							llvm-svn: 279259 
							
						 
						
							2016-08-19 15:27:28 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								46a68ba618 
								
							 
						 
						
							
							
								
								[InstCombine] add tests for missing vector icmp folds  
							
							... 
							
							
							
							llvm-svn: 278768 
							
						 
						
							2016-08-16 00:48:38 +00:00  
				
					
						
							
							
								 
						
							
								f1bf21c56b 
								
							 
						 
						
							
							
								
								[InstCombine] add tests for missing vector icmp folds  
							
							... 
							
							
							
							llvm-svn: 278765 
							
						 
						
							2016-08-16 00:27:12 +00:00  
				
					
						
							
							
								 
						
							
								df77a4dbb0 
								
							 
						 
						
							
							
								
								[InstCombine] add tests for missing vector icmp folds  
							
							... 
							
							
							
							llvm-svn: 278757 
							
						 
						
							2016-08-15 22:43:52 +00:00  
				
					
						
							
							
								 
						
							
								41520e1712 
								
							 
						 
						
							
							
								
								[InstCombine] add tests for missing vector icmp folds  
							
							... 
							
							
							
							llvm-svn: 278751 
							
						 
						
							2016-08-15 21:47:50 +00:00  
				
					
						
							
							
								 
						
							
								3e9acec2fa 
								
							 
						 
						
							
							
								
								[InstCombine] add tests for missing vector icmp folds  
							
							... 
							
							
							
							llvm-svn: 278737 
							
						 
						
							2016-08-15 20:56:11 +00:00  
				
					
						
							
							
								 
						
							
								b37bd6d7b7 
								
							 
						 
						
							
							
								
								[InstCombine] add test for missing vector icmp fold  
							
							... 
							
							
							
							llvm-svn: 278727 
							
						 
						
							2016-08-15 20:02:40 +00:00  
				
					
						
							
							
								 
						
							
								2044a8eba9 
								
							 
						 
						
							
							
								
								[InstCombine] add tests for missing vector icmp folds  
							
							... 
							
							
							
							llvm-svn: 278709 
							
						 
						
							2016-08-15 18:45:10 +00:00  
				
					
						
							
							
								 
						
							
								d391b0d69e 
								
							 
						 
						
							
							
								
								[InstCombine] add tests for missing vector icmp folds  
							
							... 
							
							
							
							llvm-svn: 278704 
							
						 
						
							2016-08-15 18:26:56 +00:00  
				
					
						
							
							
								 
						
							
								a7b9bb3785 
								
							 
						 
						
							
							
								
								[InstCombine] add tests for missing vector icmp folds  
							
							... 
							
							
							
							llvm-svn: 278683 
							
						 
						
							2016-08-15 17:10:35 +00:00  
				
					
						
							
							
								 
						
							
								ba1f9fbddc 
								
							 
						 
						
							
							
								
								[InstCombine] add tests for missing vector icmp folds  
							
							... 
							
							
							
							llvm-svn: 278634 
							
						 
						
							2016-08-14 22:28:50 +00:00  
				
					
						
							
							
								 
						
							
								f6559404d5 
								
							 
						 
						
							
							
								
								[InstCombine] remove unnecessary function attributes from tests  
							
							... 
							
							
							
							llvm-svn: 278633 
							
						 
						
							2016-08-14 21:48:21 +00:00  
				
					
						
							
							
								 
						
							
								b44ca3bfa9 
								
							 
						 
						
							
							
								
								[InstCombine] add tests for missing vector icmp folds  
							
							... 
							
							
							
							llvm-svn: 278632 
							
						 
						
							2016-08-14 21:36:22 +00:00  
				
					
						
							
							
								 
						
							
								9f36a2d54b 
								
							 
						 
						
							
							
								
								add tests for missing vector icmp folds  
							
							... 
							
							
							
							llvm-svn: 278132 
							
						 
						
							2016-08-09 16:39:05 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								e063ddb347 
								
							 
						 
						
							
							
								
								add tests for icmp vector folds  
							
							... 
							
							
							
							llvm-svn: 276482 
							
						 
						
							2016-07-22 22:19:52 +00:00  
				
					
						
							
							
								 
						
							
								cbc4377af1 
								
							 
						 
						
							
							
								
								add tests for icmp vector folds  
							
							... 
							
							
							
							llvm-svn: 276476 
							
						 
						
							2016-07-22 21:28:20 +00:00