Paul Redmond
							
						 
						
							 
							
							
							
							
								
							
							
								f7cd6b391a 
								
							 
						 
						
							
							
								
								test commit.  
							
							 
							
							... 
							
							
							
							llvm-svn: 169709 
							
						 
						
							2012-12-09 19:46:31 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								a8f026e2d4 
								
							 
						 
						
							
							
								
								LoopVectorizer: Increase the number of pointers that can be tested at runtime. If we cant prove statically that the pointers are disjoint then we add the runtime check.  
							
							 
							
							... 
							
							
							
							llvm-svn: 169334 
							
						 
						
							2012-12-04 23:25:24 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								87fc988c5d 
								
							 
						 
						
							
							
								
								Enable if-conversion during vectorization.  
							
							 
							
							... 
							
							
							
							llvm-svn: 169331 
							
						 
						
							2012-12-04 22:59:52 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								93fa5ef957 
								
							 
						 
						
							
							
								
								Fix a bug in vectorization of if-converted reduction variables. If the  
							
							 
							
							... 
							
							
							
							reduction variable is not used outside the loop then we ran into an
endless loop. This change checks if we found the original PHI.
llvm-svn: 169324 
							
						 
						
							2012-12-04 22:40:22 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								a10b311aec 
								
							 
						 
						
							
							
								
								Add support for reduction variables when IF-conversion is enabled.  
							
							 
							
							... 
							
							
							
							llvm-svn: 169288 
							
						 
						
							2012-12-04 18:17:33 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								07674cb566 
								
							 
						 
						
							
							
								
								Give scalar if-converted blocks half the score because they are not always executed due to CF.  
							
							 
							
							... 
							
							
							
							llvm-svn: 169223 
							
						 
						
							2012-12-04 07:11:52 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								628c2dba60 
								
							 
						 
						
							
							
								
								Add the last part that is needed for vectorization of if-converted code.  
							
							 
							
							... 
							
							
							
							Added the code that actually performs the if-conversion during vectorization.
We can now vectorize this code:
for (int i=0; i<n; ++i) {
  unsigned k = 0;
  if (a[i] > b[i])   <------ IF inside the loop.
    k = k * 5 + 3;
  a[i] = k;          <---- K is a phi node that becomes vector-select.
}
llvm-svn: 169217 
							
						 
						
							2012-12-04 06:15:11 +00:00  
						
					 
				
					
						
							
							
								 
								NAKAMURA Takumi
							
						 
						
							 
							
							
							
							
								
							
							
								f99b535fdb 
								
							 
						 
						
							
							
								
								LoopVectorize.cpp: Suppress a warning. [-Wunused-variable]  
							
							 
							
							... 
							
							
							
							llvm-svn: 169195 
							
						 
						
							2012-12-04 00:49:34 +00:00  
						
					 
				
					
						
							
							
								 
								NAKAMURA Takumi
							
						 
						
							 
							
							
							
							
								
							
							
								8b07bc579b 
								
							 
						 
						
							
							
								
								Fix whitespace.  
							
							 
							
							... 
							
							
							
							llvm-svn: 169194 
							
						 
						
							2012-12-04 00:49:28 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								d479a57f68 
								
							 
						 
						
							
							
								
								minor renaming, documentation and cleanups.  
							
							 
							
							... 
							
							
							
							llvm-svn: 169175 
							
						 
						
							2012-12-03 22:57:09 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								fad16be973 
								
							 
						 
						
							
							
								
								IF-conversion: teach the cost-model how to grade if-converted loops.  
							
							 
							
							... 
							
							
							
							llvm-svn: 169171 
							
						 
						
							2012-12-03 22:46:31 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								eee203d885 
								
							 
						 
						
							
							
								
								Now that we have a basic if-conversion infrastructure we can rename the  
							
							 
							
							... 
							
							
							
							"single basic block loop vectorizer" to "innermost loop vectorizer".
llvm-svn: 169158 
							
						 
						
							2012-12-03 21:33:08 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								a30aba7a01 
								
							 
						 
						
							
							
								
								Add initial support for IF-conversion. This patch implements the first 1/3,  
							
							 
							
							... 
							
							
							
							which is the legality of the if-conversion transformation. The next step is to
implement the cost-model for the if-converted code as well as the
vectorization itself.
llvm-svn: 169152 
							
						 
						
							2012-12-03 21:06:35 +00:00  
						
					 
				
					
						
							
							
								 
								Chandler Carruth
							
						 
						
							 
							
							
							
							
								
							
							
								ed0881b2a6 
								
							 
						 
						
							
							
								
								Use the new script to sort the includes of every file under lib.  
							
							 
							
							... 
							
							
							
							Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.
Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]
llvm-svn: 169131 
							
						 
						
							2012-12-03 16:50:05 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								3ae24ee08a 
								
							 
						 
						
							
							
								
								minor cleanups  
							
							 
							
							... 
							
							
							
							llvm-svn: 169048 
							
						 
						
							2012-11-30 22:37:11 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								6b494be886 
								
							 
						 
						
							
							
								
								Remove the use of LPPassManager. We can remove LPM because we dont need to run any additional loop passes on the new vector loop.  
							
							 
							
							... 
							
							
							
							llvm-svn: 169016 
							
						 
						
							2012-11-30 17:27:53 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								8dd6ee8df5 
								
							 
						 
						
							
							
								
								When broadcasting invariant scalars into vectors, place the broadcast code in the preheader.  
							
							 
							
							... 
							
							
							
							llvm-svn: 168927 
							
						 
						
							2012-11-29 19:25:41 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								caf5acfd14 
								
							 
						 
						
							
							
								
								Move the code that uses SCEVs prior to creating the new loops.  
							
							 
							
							... 
							
							
							
							llvm-svn: 168601 
							
						 
						
							2012-11-26 19:51:46 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								ee7ede76f4 
								
							 
						 
						
							
							
								
								Move the max vector width to a constant parameter. No functionality change.  
							
							 
							
							... 
							
							
							
							llvm-svn: 168570 
							
						 
						
							2012-11-25 16:48:08 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								ef33b5076c 
								
							 
						 
						
							
							
								
								Fix the document style.  
							
							 
							
							... 
							
							
							
							llvm-svn: 168569 
							
						 
						
							2012-11-25 16:39:01 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								12192f19eb 
								
							 
						 
						
							
							
								
								Refactor the ptr runtime check generation code. No functionality change.  
							
							 
							
							... 
							
							
							
							llvm-svn: 168568 
							
						 
						
							2012-11-25 16:27:16 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								b15d9fe24d 
								
							 
						 
						
							
							
								
								Rename method. No functionality change.  
							
							 
							
							... 
							
							
							
							llvm-svn: 168560 
							
						 
						
							2012-11-25 09:13:57 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								bf5173460f 
								
							 
						 
						
							
							
								
								The induction-pointer work is inspired by a research paper. This commit adds a reference.  
							
							 
							
							... 
							
							
							
							llvm-svn: 168559 
							
						 
						
							2012-11-25 09:09:26 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								ea3824f160 
								
							 
						 
						
							
							
								
								Add support for pointer induction variables even when there is no integer induction variable.  
							
							 
							
							... 
							
							
							
							llvm-svn: 168558 
							
						 
						
							2012-11-25 08:41:35 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								c3c07e62e8 
								
							 
						 
						
							
							
								
								LoopVectorizer: Add initial support for pointer induction variables (for example: *dst++ = *src++).  
							
							 
							
							... 
							
							
							
							At the moment we still require to have an integer induction variable (for example: i++).
llvm-svn: 168231 
							
						 
						
							2012-11-17 00:27:03 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								0565b5a279 
								
							 
						 
						
							
							
								
								LoopVectorize: Division reductions generate incorrect code. Remove the part of the code that deals with divs.  
							
							 
							
							... 
							
							
							
							Thanks to Paul Redmond for catching this while reviewing the code.
llvm-svn: 168142 
							
						 
						
							2012-11-16 06:51:17 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								a43bcddc8d 
								
							 
						 
						
							
							
								
								use the getSplat API. Patch by Paul Redmond.  
							
							 
							
							... 
							
							
							
							llvm-svn: 167892 
							
						 
						
							2012-11-14 00:02:13 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								12930749ab 
								
							 
						 
						
							
							
								
								Fix a comment typo and add comments.  
							
							 
							
							... 
							
							
							
							llvm-svn: 167684 
							
						 
						
							2012-11-11 05:15:00 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								1cfef3e9ee 
								
							 
						 
						
							
							
								
								Add support for memory runtime check. When we can, we calculate array bounds.  
							
							 
							
							... 
							
							
							
							If the arrays are found to be disjoint then we run the vectorized version of
the loop. If they are not, we run the scalar code.
llvm-svn: 167608 
							
						 
						
							2012-11-09 07:09:44 +00:00  
						
					 
				
					
						
							
							
								 
								Chandler Carruth
							
						 
						
							 
							
							
							
							
								
							
							
								acc748b2b5 
								
							 
						 
						
							
							
								
								Fix sign compare warning. Patch by Mahesha HS.  
							
							 
							
							... 
							
							
							
							llvm-svn: 167282 
							
						 
						
							2012-11-02 05:24:00 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								4cb8cdab5e 
								
							 
						 
						
							
							
								
								LoopVectorize: Preserve NSW, NUW and IsExact flags.  
							
							 
							
							... 
							
							
							
							llvm-svn: 167174 
							
						 
						
							2012-10-31 21:40:39 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								ec3ab49dda 
								
							 
						 
						
							
							
								
								Put the threshold magic number in a variable.  
							
							 
							
							... 
							
							
							
							llvm-svn: 167134 
							
						 
						
							2012-10-31 16:22:16 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								1265ea8f8d 
								
							 
						 
						
							
							
								
								Remove enum values since they are not used anymore.  
							
							 
							
							... 
							
							
							
							llvm-svn: 167131 
							
						 
						
							2012-10-31 16:14:06 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								ce77ab0c24 
								
							 
						 
						
							
							
								
								LoopVectorize: Do not vectorize loops with tiny constant trip counts.  
							
							 
							
							... 
							
							
							
							llvm-svn: 167101 
							
						 
						
							2012-10-31 03:31:07 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								ff7889196b 
								
							 
						 
						
							
							
								
								Add support for loops that don't start with Zero.  
							
							 
							
							... 
							
							
							
							This is important for loops in the LAPACK test-suite.
These loops start at 1 because they are auto-converted from fortran.
llvm-svn: 167084 
							
						 
						
							2012-10-31 00:45:26 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								47a299dcc9 
								
							 
						 
						
							
							
								
								Add documentation.  
							
							 
							
							... 
							
							
							
							llvm-svn: 167055 
							
						 
						
							2012-10-30 22:06:26 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								bc21aceb19 
								
							 
						 
						
							
							
								
								LoopVectorize: Add support for write-only loops when the write destination is a single pointer.  
							
							 
							
							... 
							
							
							
							Speedup SciMark by 1%
llvm-svn: 167035 
							
						 
						
							2012-10-30 18:36:45 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								b3e8e688da 
								
							 
						 
						
							
							
								
								LoopVectorize: Fix a bug in the initialization of reduction variables. AND needs to start at all-one  
							
							 
							
							... 
							
							
							
							while XOR, and OR need to start at zero.
llvm-svn: 167032 
							
						 
						
							2012-10-30 18:12:36 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								73ddcfe03f 
								
							 
						 
						
							
							
								
								LoopVectorizer: change debug prints: Print the module identifier when deciding to vectorize. When deciding not to vectorize do not print the called function name because it can be null.  
							
							 
							
							... 
							
							
							
							llvm-svn: 166989 
							
						 
						
							2012-10-30 00:40:39 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								5ad045a8c5 
								
							 
						 
						
							
							
								
								LoopVectorize: Update and preserve the dominator tree info.  
							
							 
							
							... 
							
							
							
							llvm-svn: 166970 
							
						 
						
							2012-10-29 21:52:38 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								859366f93f 
								
							 
						 
						
							
							
								
								1. Fix a bug in getTypeConversion. When a *simple* type is split, we need to return the type of the split result.  
							
							 
							
							... 
							
							
							
							2. Change the maximum vectorization width from 4 to 8.
3. A test for both.
llvm-svn: 166864 
							
						 
						
							2012-10-27 04:11:32 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								afae78edab 
								
							 
						 
						
							
							
								
								Refactor the VectorTargetTransformInfo interface.  
							
							 
							
							... 
							
							
							
							Add getCostXXX calls for different families of opcodes, such as casts, arithmetic, cmp, etc.
Port the LoopVectorizer to the new API.
The LoopVectorizer now finds instructions which will remain uniform after vectorization. It uses this information when calculating the cost of these instructions.
llvm-svn: 166836 
							
						 
						
							2012-10-26 23:49:28 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								579042f71b 
								
							 
						 
						
							
							
								
								LoopVectorize: Teach the cost model to query scalar costs as scalar types and not vectors of 1.  
							
							 
							
							... 
							
							
							
							llvm-svn: 166715 
							
						 
						
							2012-10-25 21:03:48 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								5ffb049a55 
								
							 
						 
						
							
							
								
								Add support for additional reduction variables: AND, OR, XOR.  
							
							 
							
							... 
							
							
							
							Patch by Paul Redmond <paul.redmond@intel.com>.
llvm-svn: 166649 
							
						 
						
							2012-10-25 00:08:41 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								4a87683a41 
								
							 
						 
						
							
							
								
								Implement a basic cost model for vector and scalar instructions.  
							
							 
							
							... 
							
							
							
							llvm-svn: 166642 
							
						 
						
							2012-10-24 23:47:38 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								e4f491e7ee 
								
							 
						 
						
							
							
								
								whitespace  
							
							 
							
							... 
							
							
							
							llvm-svn: 166622 
							
						 
						
							2012-10-24 20:58:40 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								a721b21c64 
								
							 
						 
						
							
							
								
								LoopVectorizer: Add a basic cost model which uses the VTTI interface.  
							
							 
							
							... 
							
							
							
							llvm-svn: 166620 
							
						 
						
							2012-10-24 20:36:32 +00:00  
						
					 
				
					
						
							
							
								 
								Micah Villmow
							
						 
						
							 
							
							
							
							
								
							
							
								51e7246cb4 
								
							 
						 
						
							
							
								
								Back out r166591, not sure why this made it through since I cancelled the command. Bleh, sorry about this!  
							
							 
							
							... 
							
							
							
							llvm-svn: 166596 
							
						 
						
							2012-10-24 17:25:11 +00:00  
						
					 
				
					
						
							
							
								 
								Micah Villmow
							
						 
						
							 
							
							
							
							
								
							
							
								6a8f3f9e20 
								
							 
						 
						
							
							
								
								Delete a directory that wasn't supposed to be checked in yet.  
							
							 
							
							... 
							
							
							
							llvm-svn: 166591 
							
						 
						
							2012-10-24 17:20:04 +00:00  
						
					 
				
					
						
							
							
								 
								Nadav Rotem
							
						 
						
							 
							
							
							
							
								
							
							
								5bed7b4fad 
								
							 
						 
						
							
							
								
								Use the AliasAnalysis isIdentifiedObj because it also understands mallocs and c++ news.  
							
							 
							
							... 
							
							
							
							PR14158.
llvm-svn: 166491 
							
						 
						
							2012-10-23 18:44:18 +00:00