Nadav Rotem 
							
						 
					 
					
						
						
							
						
						7fac0ef71c 
					 
					
						
						
							
							Fix a typo  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180806  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-30 21:04:51 +00:00 
						 
				 
			
				
					
						
							
							
								Nadav Rotem 
							
						 
					 
					
						
						
							
						
						4f38e16b89 
					 
					
						
						
							
							Fix PR15800. Do not try to vectorize vectors and structs.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179960  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-20 22:29:43 +00:00 
						 
				 
			
				
					
						
							
							
								Benjamin Kramer 
							
						 
					 
					
						
						
							
						
						6fe5cc49d8 
					 
					
						
						
							
							SLPVectorizer: Strength reduce SmallVectors to ArrayRefs.  
						
						... 
						
						
						
						Avoids a couple of copies and allows more flexibility in the clients.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179935  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-20 09:49:10 +00:00 
						 
				 
			
				
					
						
							
							
								Nadav Rotem 
							
						 
					 
					
						
						
							
						
						cd949714eb 
					 
					
						
						
							
							SLPVectorizer: Reduce the compile time by eliminating the search for some of the more expensive patterns. After this change will only check basic arithmetic trees that start at cmpinstr.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179933  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-20 07:29:34 +00:00 
						 
				 
			
				
					
						
							
							
								Nadav Rotem 
							
						 
					 
					
						
						
							
						
						444e33e898 
					 
					
						
						
							
							refactor tryToVectorizePair to a new method that supports vectorization of lists.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179932  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-20 07:22:58 +00:00 
						 
				 
			
				
					
						
							
							
								Nadav Rotem 
							
						 
					 
					
						
						
							
						
						d7e8cce287 
					 
					
						
						
							
							Fix an unused variable warning.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179931  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-20 06:40:28 +00:00 
						 
				 
			
				
					
						
							
							
								Nadav Rotem 
							
						 
					 
					
						
						
							
						
						1d2ad834f2 
					 
					
						
						
							
							SLPVectorizer: Improve the cost model for loop invariant broadcast values.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179930  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-20 06:13:47 +00:00 
						 
				 
			
				
					
						
							
							
								Nadav Rotem 
							
						 
					 
					
						
						
							
						
						ef332b1ca1 
					 
					
						
						
							
							Report the number of stores that were found in the debug message.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179929  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-20 05:23:11 +00:00 
						 
				 
			
				
					
						
							
							
								Nadav Rotem 
							
						 
					 
					
						
						
							
						
						e9a4411db4 
					 
					
						
						
							
							SLPVectorizer: Make it a function pass and add code for hoisting the vector-gather sequence out of loops.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179562  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-15 22:00:26 +00:00 
						 
				 
			
				
					
						
							
							
								Nadav Rotem 
							
						 
					 
					
						
						
							
						
						09616565dd 
					 
					
						
						
							
							SLPVectorizer: Add support for vectorizing trees that start at compare instructions.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179504  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-15 04:25:27 +00:00 
						 
				 
			
				
					
						
							
							
								Nadav Rotem 
							
						 
					 
					
						
						
							
						
						ab105ae95f 
					 
					
						
						
							
							SLPVectorizer: Add support for trees that don't start at binary operators, and add the cost of extracting values from the roots of the tree.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179475  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-14 05:15:53 +00:00 
						 
				 
			
				
					
						
							
							
								Nadav Rotem 
							
						 
					 
					
						
						
							
						
						f7eaf29cf7 
					 
					
						
						
							
							SLPVectorizer: add initial support for reduction variable vectorization.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179470  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-14 03:22:20 +00:00 
						 
				 
			
				
					
						
							
							
								Nadav Rotem 
							
						 
					 
					
						
						
							
						
						196ee11f85 
					 
					
						
						
							
							Add debug prints.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179412  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-12 21:11:14 +00:00 
						 
				 
			
				
					
						
							
							
								Nadav Rotem 
							
						 
					 
					
						
						
							
						
						4b924d3a61 
					 
					
						
						
							
							Make the SLP store-merger less paranoid about function calls. We check for function calls when we check if it is safe to sink instructions.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179207  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-10 19:41:36 +00:00 
						 
				 
			
				
					
						
							
							
								Nadav Rotem 
							
						 
					 
					
						
						
							
						
						20cd5e6862 
					 
					
						
						
							
							We require DataLayout for analyzing the size of stores.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179206  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-10 18:57:27 +00:00 
						 
				 
			
				
					
						
							
							
								Nadav Rotem 
							
						 
					 
					
						
						
							
						
						8383b539ff 
					 
					
						
						
							
							Add support for bottom-up SLP vectorization infrastructure.  
						
						... 
						
						
						
						This commit adds the infrastructure for performing bottom-up SLP vectorization (and other optimizations) on parallel computations.
The infrastructure has three potential users:
  1. The loop vectorizer needs to be able to vectorize AOS data structures such as (sum += A[i] + A[i+1]).
  2. The BB-vectorizer needs this infrastructure for bottom-up SLP vectorization, because bottom-up vectorization is faster to compute.
  3. A loop-roller needs to be able to analyze consecutive chains and roll them into a loop, in order to reduce code size. A loop roller does not need to create vector instructions, and this infrastructure separates the chain analysis from the vectorization.
This patch also includes a simple (100 LOC) bottom up SLP vectorizer that uses the infrastructure, and can vectorize this code:
void SAXPY(int *x, int *y, int a, int i) {
  x[i]   = a * x[i]   + y[i];
  x[i+1] = a * x[i+1] + y[i+1];
  x[i+2] = a * x[i+2] + y[i+2];
  x[i+3] = a * x[i+3] + y[i+3];
}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179117  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-09 19:44:35 +00:00