ScheduleOpt: Prevectorize the innermost parallel loop

Only prevectorize loops that are actually parallel and can
be vectorized. Take the innermost loop that is eligible.

llvm-svn: 134187
diff --git a/polly/lib/ScheduleOptimizer.cpp b/polly/lib/ScheduleOptimizer.cpp
index b8e6c43..2db2d01 100644
--- a/polly/lib/ScheduleOptimizer.cpp
+++ b/polly/lib/ScheduleOptimizer.cpp
@@ -299,13 +299,17 @@
       int scheduleDimensions, parameterDimensions;
 
       ctx = isl_union_map_get_ctx(partialSchedule);
-      scheduleDimensions = isl_band_n_member(band);
-      tileMap = getPrevectorMap(ctx, scheduleDimensions * 2 - 1,
-				scheduleDimensions * 2,
-				parameterDimensions);
-      tileUnionMap = isl_union_map_from_map(tileMap);
-      partialSchedule = isl_union_map_apply_range(partialSchedule,
-						  tileUnionMap);
+      for (int i = scheduleDimensions - 1 ;  i >= 0 ; i--) {
+	if (isl_band_member_is_parallel(band, i)) {
+	  tileMap = getPrevectorMap(ctx, scheduleDimensions + i,
+				    scheduleDimensions * 2,
+				    parameterDimensions);
+	  tileUnionMap = isl_union_map_from_map(tileMap);
+	  partialSchedule = isl_union_map_apply_range(partialSchedule,
+						      tileUnionMap);
+	  break;
+	}
+      }
     }
 
     if (finalSchedule)