Nadav Rotem 
							
						 
					 
					
						
						
							
						
						b86dff862f 
					 
					
						
						
							
							SLPVectorize: Add support for vectorization of casts.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179975  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-21 08:05:59 +00:00 
						 
				 
			
				
					
						
							
							
								Nadav Rotem 
							
						 
					 
					
						
						
							
						
						bd65805016 
					 
					
						
						
							
							SLPVectorizer: Fix a bug in the code that scans the tree in search of nodes with multiple users.  
						
						... 
						
						
						
						We did not terminate the switch case and we executed the search routine twice.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179974  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-21 07:37:56 +00:00 
						 
				 
			
				
					
						
							
							
								Benjamin Kramer 
							
						 
					 
					
						
						
							
						
						d760c08b34 
					 
					
						
						
							
							VecUtils: Clean up uses of dyn_cast.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179936  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-20 10:36:17 +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 
							
						 
					 
					
						
						
							
						
						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 
							
						 
					 
					
						
						
							
						
						2aaa269617 
					 
					
						
						
							
							Fix the header comment.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179928  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-20 05:18:51 +00:00 
						 
				 
			
				
					
						
							
							
								Nadav Rotem 
							
						 
					 
					
						
						
							
						
						fbcaf59e33 
					 
					
						
						
							
							Use 64bit arithmetic for calculating distance between pointers.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179927  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-20 05:17:47 +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 
							
						 
					 
					
						
						
							
						
						0774629936 
					 
					
						
						
							
							SLP: Document the scalarization cost method.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179479  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-14 07:22:22 +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 
							
						 
					 
					
						
						
							
						
						a74f91e44c 
					 
					
						
						
							
							SLPVectorizer: add support for vectorization of diamond shaped trees. We now perform a preliminary traversal of the graph to collect values with multiple users and check where the users came from.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179414  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2013-04-12 21:16:54 +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