Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								8c5f236197 
								
							 
						 
						
							
							
								
								[InstCombine] enable (X <<nsw C1) >>s C2 --> X <<nsw (C1 - C2) for vectors with splat constants  
							
							 
							
							... 
							
							
							
							llvm-svn: 293570 
							
						 
						
							2017-01-30 23:35:52 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								abbb118a78 
								
							 
						 
						
							
							
								
								[InstCombine] add vector test for (X <<nsw C1) >>s C2 --> X <<nsw (C1 - C2); NFC  
							
							 
							
							... 
							
							
							
							llvm-svn: 293566 
							
						 
						
							2017-01-30 23:26:17 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								0c39d56a60 
								
							 
						 
						
							
							
								
								[InstCombine] enable more lshr(shl X, C1), C2 folds for vectors with splat constants  
							
							 
							
							... 
							
							
							
							llvm-svn: 293562 
							
						 
						
							2017-01-30 23:01:05 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								98cc841421 
								
							 
						 
						
							
							
								
								[InstCombine] add tests for more shift-shift patterns; NFC  
							
							 
							
							... 
							
							
							
							llvm-svn: 293555 
							
						 
						
							2017-01-30 22:24:36 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								373db5ba6c 
								
							 
						 
						
							
							
								
								[InstCombine] enable (X >>?exact C1) << C2 --> X >>?exact (C1-C2) for vectors with splat constants  
							
							 
							
							... 
							
							
							
							llvm-svn: 293524 
							
						 
						
							2017-01-30 18:40:23 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								1a86607d38 
								
							 
						 
						
							
							
								
								[InstCombine] add vector splat tests for (X >>?exact C1) << C2 --> X >>?exact (C1-C2); NFC  
							
							 
							
							... 
							
							
							
							llvm-svn: 293517 
							
						 
						
							2017-01-30 18:17:14 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								77732d5033 
								
							 
						 
						
							
							
								
								[InstCombine] enable (X <<nsw C1) >>s C2 --> X <<nsw (C1-C2) for vectors with splat constants  
							
							 
							
							... 
							
							
							
							llvm-svn: 293507 
							
						 
						
							2017-01-30 17:19:32 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								8e644c08ee 
								
							 
						 
						
							
							
								
								[InstCombine] fixed to propagate 'exact' on lshr  
							
							 
							
							... 
							
							
							
							The original shift is bigger, so this may qualify as 'obvious', 
but here's an attempt at an Alive-based proof:
Name: exact
Pre: (C1 u< C2)
%a = shl i8 %x, C1
%b = lshr exact i8 %a, C2 
  =>
%c = lshr exact i8 %x, C2 - C1
%b = and i8 %c, ((1 << width(C1)) - 1) u>> C2
Optimization is correct!
llvm-svn: 293498 
							
						 
						
							2017-01-30 16:53:03 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								5d6687da99 
								
							 
						 
						
							
							
								
								[InstCombine] add 'exact' to lshr to show that it got dropped; NFC  
							
							 
							
							... 
							
							
							
							llvm-svn: 293496 
							
						 
						
							2017-01-30 16:38:49 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								1196d7cd7f 
								
							 
						 
						
							
							
								
								[InstCombine] enable lshr(shl X, C1), C2 folds for vectors with splat constants  
							
							 
							
							... 
							
							
							
							llvm-svn: 293489 
							
						 
						
							2017-01-30 16:11:40 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								127d64065a 
								
							 
						 
						
							
							
								
								[InstCombine] add tests for shift-shift patterns; NFC  
							
							 
							
							... 
							
							
							
							llvm-svn: 293487 
							
						 
						
							2017-01-30 15:54:50 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								062adaab83 
								
							 
						 
						
							
							
								
								[InstCombine] enable (X >>?,exact C1) << C2 --> X << (C2 - C1) for vectors with splats  
							
							 
							
							... 
							
							
							
							llvm-svn: 293435 
							
						 
						
							2017-01-29 17:11:18 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								c00574830f 
								
							 
						 
						
							
							
								
								[InstCombine] add tests for shl(shr X, C1), C2 transforms; NFC  
							
							 
							
							... 
							
							
							
							llvm-svn: 293434 
							
						 
						
							2017-01-29 16:52:59 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								ab8b32de71 
								
							 
						 
						
							
							
								
								[InstCombine] use m_APInt to allow shift-shift folds for vectors with splat constants  
							
							 
							
							... 
							
							
							
							Some existing 'FIXME' tests are still not folded because of splat holes in value tracking.
llvm-svn: 292151 
							
						 
						
							2017-01-16 19:35:45 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								21347ffddf 
								
							 
						 
						
							
							
								
								[InstCombine] add tests to show missed vector folds; NFC  
							
							 
							
							... 
							
							
							
							Also, add comments and remove bogus comment.
llvm-svn: 292082 
							
						 
						
							2017-01-15 23:45:03 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								5f8451afad 
								
							 
						 
						
							
							
								
								[InstCombine] use m_APInt to allow ashr folds for vectors with splat constants  
							
							 
							
							... 
							
							
							
							llvm-svn: 292064 
							
						 
						
							2017-01-15 16:38:19 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								b22f6c5f26 
								
							 
						 
						
							
							
								
								[InstCombine] use m_APInt to allow shl folds for vectors with splat constants  
							
							 
							
							... 
							
							
							
							llvm-svn: 291934 
							
						 
						
							2017-01-13 18:39:09 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								bbc1c1e46b 
								
							 
						 
						
							
							
								
								[InstCombine] add tests to show missing transforms for vector shl; NFC  
							
							 
							
							... 
							
							
							
							llvm-svn: 291926 
							
						 
						
							2017-01-13 18:27:23 +00:00  
						
					 
				
					
						
							
							
								 
								David Majnemer
							
						 
						
							 
							
							
							
							
								
							
							
								cb892e9066 
								
							 
						 
						
							
							
								
								[InstCombine] Move casts around shift operations  
							
							 
							
							... 
							
							
							
							It is possible to perform a left shift before zero extending if the
shift would only shift out zeros.
llvm-svn: 290928 
							
						 
						
							2017-01-04 02:21:34 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								f5887f1fbd 
								
							 
						 
						
							
							
								
								[InstCombine] use m_APInt to allow icmp X, C folds for splat constant vectors  
							
							 
							
							... 
							
							
							
							isSignBitCheck could be changed to take a pointer param to avoid the 'UnusedBit' ugliness.
llvm-svn: 281231 
							
						 
						
							2016-09-12 16:25:41 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								db400baa80 
								
							 
						 
						
							
							
								
								[InstCombine] add tests to show missing vector folds  
							
							 
							
							... 
							
							
							
							llvm-svn: 281219 
							
						 
						
							2016-09-12 15:51:42 +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
							
						 
						
							 
							
							
							
							
								
							
							
								163a5ab799 
								
							 
						 
						
							
							
								
								remove FIXME comment; fixed by previous commit  
							
							 
							
							... 
							
							
							
							llvm-svn: 279400 
							
						 
						
							2016-08-21 16:40:42 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								7ffcde7422 
								
							 
						 
						
							
							
								
								[InstCombine] use m_APInt to allow icmp (shl X, Y), C folds for splat constant vectors, part 3  
							
							 
							
							... 
							
							
							
							This is a partial enablement (move the ConstantInt guard down).
llvm-svn: 279399 
							
						 
						
							2016-08-21 16:35:34 +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
							
						 
						
							 
							
							
							
							
								
							
							
								aaf34d1bfc 
								
							 
						 
						
							
							
								
								[InstCombine] add test for missing vector icmp fold  
							
							 
							
							... 
							
							
							
							llvm-svn: 278708 
							
						 
						
							2016-08-15 18:39:54 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								195eb9340a 
								
							 
						 
						
							
							
								
								minimize test  
							
							 
							
							... 
							
							
							
							llvm-svn: 278707 
							
						 
						
							2016-08-15 18:35:44 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								3f506daf8c 
								
							 
						 
						
							
							
								
								remove unnecessary IR comments about uses  
							
							 
							
							... 
							
							
							
							llvm-svn: 278705 
							
						 
						
							2016-08-15 18:32:50 +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
							
						 
						
							 
							
							
							
							
								
							
							
								beebe05af1 
								
							 
						 
						
							
							
								
								[InstCombine] add test for missing vector icmp fold  
							
							 
							
							... 
							
							
							
							llvm-svn: 278635 
							
						 
						
							2016-08-14 22:29:27 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								e2e89ef936 
								
							 
						 
						
							
							
								
								[ValueTracking, InstCombine] extend isKnownToBeAPowerOfTwo() to handle vector splat constants  
							
							 
							
							... 
							
							
							
							We could try harder to handle non-splat vector constants too, 
but that seems much rarer to me.
Note that the div test isn't resolved because there's a check
for isIntegerTy() guarding that transform.
Differential Revision: http://reviews.llvm.org/D20497 
llvm-svn: 270369 
							
						 
						
							2016-05-22 15:41:53 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								312c9afd90 
								
							 
						 
						
							
							
								
								add test for vector shift  
							
							 
							
							... 
							
							
							
							llvm-svn: 270284 
							
						 
						
							2016-05-20 22:08:16 +00:00  
						
					 
				
					
						
							
							
								 
								Sanjay Patel
							
						 
						
							 
							
							
							
							
								
							
							
								ebc0faa8d4 
								
							 
						 
						
							
							
								
								[InstCombine] regenerate checks  
							
							 
							
							... 
							
							
							
							llvm-svn: 268245 
							
						 
						
							2016-05-02 15:32:10 +00:00  
						
					 
				
					
						
							
							
								 
								Rafael Espindola
							
						 
						
							 
							
							
							
							
								
							
							
								d1beb07d39 
								
							 
						 
						
							
							
								
								Have a single way for creating unique value names.  
							
							 
							
							... 
							
							
							
							We had two code paths. One would create names like "foo.1" and the other
names like "foo1".
For globals it is important to use "foo.1" to help C++ name demangling.
For locals there is no strong reason to go one way or the other so I
kept the most common mangling (foo1).
llvm-svn: 253804 
							
						 
						
							2015-11-22 00:16:24 +00:00  
						
					 
				
					
						
							
							
								 
								Sunil Srivastava
							
						 
						
							 
							
							
							
							
								
							
							
								d79dfcbc37 
								
							 
						 
						
							
							
								
								Changed renaming of local symbols by inserting a dot vefore the numeric suffix.  
							
							 
							
							... 
							
							
							
							One code change and several test changes to match that
details in http://reviews.llvm.org/D9481 
llvm-svn: 237150 
							
						 
						
							2015-05-12 16:47:30 +00:00  
						
					 
				
					
						
							
							
								 
								David Majnemer
							
						 
						
							 
							
							
							
							
								
							
							
								5a7717e498 
								
							 
						 
						
							
							
								
								ConstantFold, InstSimplify: undef >>a x can be either -1 or 0, choose 0  
							
							 
							
							... 
							
							
							
							Zero is usually a nicer constant to have than -1.
llvm-svn: 223969 
							
						 
						
							2014-12-10 21:58:15 +00:00  
						
					 
				
					
						
							
							
								 
								Ankur Garg
							
						 
						
							 
							
							
							
							
								
							
							
								51eeba70da 
								
							 
						 
						
							
							
								
								[test/Transforms/InstCombine/shift.ll] Removed duplicate test cases. NFC.  
							
							 
							
							... 
							
							
							
							Removed some duplicate test cases from the file /test/Transforms/InstCombine/shift.ll.
test54 and test57 were duplicates of each other.
test55 and test58 were duplicates of each other.
(Removed test57 and test58)
llvm-svn: 223767 
							
						 
						
							2014-12-09 10:35:19 +00:00  
						
					 
				
					
						
							
							
								 
								Sonam Kumari
							
						 
						
							 
							
							
							
							
								
							
							
								90d266c0a9 
								
							 
						 
						
							
							
								
								Removal Of Duplicate Test Case from shift.ll file  
							
							 
							
							... 
							
							
							
							llvm-svn: 223648 
							
						 
						
							2014-12-08 09:40:43 +00:00  
						
					 
				
					
						
							
							
								 
								Matt Arsenault
							
						 
						
							 
							
							
							
							
								
							
							
								fed3dc8dc6 
								
							 
						 
						
							
							
								
								Revert "Revert r206045, "Fix shift by constants for vector.""  
							
							 
							
							... 
							
							
							
							Fix cases where the Value itself is used, and not the constant value.
llvm-svn: 206214 
							
						 
						
							2014-04-14 21:50:37 +00:00  
						
					 
				
					
						
							
							
								 
								NAKAMURA Takumi
							
						 
						
							 
							
							
							
							
								
							
							
								58ad0c87f8 
								
							 
						 
						
							
							
								
								Whitespace.  
							
							 
							
							... 
							
							
							
							llvm-svn: 206154 
							
						 
						
							2014-04-14 07:03:13 +00:00  
						
					 
				
					
						
							
							
								 
								NAKAMURA Takumi
							
						 
						
							 
							
							
							
							
								
							
							
								26afa982ec 
								
							 
						 
						
							
							
								
								Revert r206045, "Fix shift by constants for vector."  
							
							 
							
							... 
							
							
							
							It broke some builders, at least, i686.
llvm-svn: 206153 
							
						 
						
							2014-04-14 07:02:57 +00:00  
						
					 
				
					
						
							
							
								 
								Matt Arsenault
							
						 
						
							 
							
							
							
							
								
							
							
								173a1e577c 
								
							 
						 
						
							
							
								
								Fix shift by constants for vector.  
							
							 
							
							... 
							
							
							
							ashr <N x iM>, <N x iM> M -> undef
llvm-svn: 206045 
							
						 
						
							2014-04-11 17:57:53 +00:00  
						
					 
				
					
						
							
							
								 
								Benjamin Kramer
							
						 
						
							 
							
							
							
							
								
							
							
								010f108382 
								
							 
						 
						
							
							
								
								InstCombine: Check for zero shift amounts before subtracting one causing integer overflow.  
							
							 
							
							... 
							
							
							
							PR17026. Also avoid undefined shifts and shift amounts larger than 64 bits
(those are always undef because we can't represent integer types that large).
llvm-svn: 189672 
							
						 
						
							2013-08-30 14:35:35 +00:00  
						
					 
				
					
						
							
							
								 
								Stephen Lin
							
						 
						
							 
							
							
							
							
								
							
							
								c1c7a1309c 
								
							 
						 
						
							
							
								
								Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change.  
							
							 
							
							... 
							
							
							
							This update was done with the following bash script:
  find test/Transforms -name "*.ll" | \
  while read NAME; do
    echo "$NAME"
    if ! grep -q "^; *RUN: *llc" $NAME; then
      TEMP=`mktemp -t temp`
      cp $NAME $TEMP
      sed -n "s/^define [^@]*@\([A-Za-z0-9_]*\)(.*$/\1/p" < $NAME | \
      while read FUNC; do
        sed -i '' "s/;\(.*\)\([A-Za-z0-9_]*\):\( *\)@$FUNC\([( ]*\)\$/;\1\2-LABEL:\3@$FUNC(/g" $TEMP
      done
      mv $TEMP $NAME
    fi
  done
llvm-svn: 186268 
							
						 
						
							2013-07-14 01:42:54 +00:00  
						
					 
				
					
						
							
							
								 
								David Majnemer
							
						 
						
							 
							
							
							
							
								
							
							
								bafa537eb7 
								
							 
						 
						
							
							
								
								Commit r185909 was a misapplied patch, fix it  
							
							 
							
							... 
							
							
							
							llvm-svn: 185910 
							
						 
						
							2013-07-09 07:58:32 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								4349f6963e 
								
							 
						 
						
							
							
								
								Revert r174152. The shift amount may overflow and in that case this transformation is illegal.  
							
							 
							
							... 
							
							
							
							llvm-svn: 174156 
							
						 
						
							2013-02-01 07:59:33 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								1d584029ae 
								
							 
						 
						
							
							
								
								Optimize shift lefts of a constant by a value plus constant into a single shift.  
							
							 
							
							... 
							
							
							
							llvm-svn: 174152 
							
						 
						
							2013-02-01 06:45:40 +00:00  
						
					 
				
					
						
							
							
								 
								Shuxin Yang
							
						 
						
							 
							
							
							
							
								
							
							
								81b3678564 
								
							 
						 
						
							
							
								
								- Fix a problematic way in creating all-the-1 APInt.  
							
							 
							
							... 
							
							
							
							- Propagate "exact" bit of [l|a]shr instruction.
llvm-svn: 169942 
							
						 
						
							2012-12-12 00:29:03 +00:00  
						
					 
				
					
						
							
							
								 
								Shuxin Yang
							
						 
						
							 
							
							
							
							
								
							
							
								73285933c9 
								
							 
						 
						
							
							
								
								For rdar://12329730, last piece.  
							
							 
							
							... 
							
							
							
							This change attempts to simplify (X^Y) -> X or Y in the user's context if we know that
only bits from X or Y are demanded.
  A minimized case is provided bellow. This change will simplify "t>>16" into "var1 >>16".
  =============================================================
  unsigned foo (unsigned val1, unsigned val2) {
    unsigned t = val1 ^ 1234;
    return (t >> 16) | t; // NOTE: t is used more than once.
  }
  =============================================================
  Note that if the "t" were used only once, the expression would be finally optimized as well.
However, with with this change, the optimization will take place earlier.
  Reviewed by Nadav, Thanks a lot!
llvm-svn: 169317 
							
						 
						
							2012-12-04 22:15:32 +00:00