[PATCH] D18537: Don't vectorize loops when everything will be scalarized
    Adam Nemet via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Mon Mar 28 21:24:44 PDT 2016
    
    
  
anemet accepted this revision.
anemet added a comment.
This revision is now accepted and ready to land.
LGTM.
I have two suggestions you may want to consider.
================
Comment at: lib/Transforms/Vectorize/LoopVectorize.cpp:1535-1539
@@ -1534,6 +1534,7 @@
 private:
   /// Returns the expected execution cost. The unit of the cost does
   /// not matter because we use the 'cost' units to compare different
   /// vector widths. The cost that is returned is *not* normalized by
   /// the factor width.
-  unsigned expectedCost(unsigned VF);
+  unsigned expectedCost(unsigned VF, bool &ActuallyVectorized);
+
----------------
Assuming I understand the logic correctly, you may want to mention it here that for ActuallyVectorized we currently use type legality.   (I.e. we could still have a loop where we don't vectorize anything because none of the *instructions* are legal.)
================
Comment at: lib/Transforms/Vectorize/LoopVectorize.cpp:5557-5558
@@ -5543,3 +5556,4 @@
 
-unsigned LoopVectorizationCostModel::expectedCost(unsigned VF) {
+unsigned LoopVectorizationCostModel::expectedCost(unsigned VF,
+                                                  bool &ActuallyVectorized) {
   unsigned Cost = 0;
----------------
It seems that the current logic requires ActuallyVectorized to be initialized to false by the caller.  I think that it would less error-prone if you initialized to false here inside the API.
What do you think?
http://reviews.llvm.org/D18537
    
    
More information about the llvm-commits
mailing list