tree-vectorizer.c (slpeel_add_loop_guard): Gimplify the condition.
[gcc.git] / gcc / ChangeLog
index a38894e44e01e8a33c78ada70987c8ab2b3333b8..7994797e19ffb7239f52dae13bbc4fb4626c3fb4 100644 (file)
@@ -1,3 +1,39 @@
+2007-12-06  Harsha Jagasia <harsha.jagasia@amd.com>
+
+       * tree-vectorizer.c (slpeel_add_loop_guard): Gimplify the condition.
+       (set_prologue_iterations): New. Set the prologue iterations to total
+       number of scalar iterations if the cost model check indicates that
+       scalar code should be generated.
+       (slpeel_tree_peel_loop_to_edge): Add a new parameter and code for 
+       generating the cost condition for epilog. Call
+       set_prologue_iterations to generate cost condition for prolog.
+       (new_loop_vec_info): Initialize LOOP_VINFO_NITERS_UNCHANGED.
+       * tree-vectorizer.h (LOOP_VINFO_NITERS_UNCHANGED): New.
+       (slpeel_tree_peel_loop_to_edge): Update declaration.
+       (set_prologue_iterations): New declaration.
+       * tree-vect-analyze.c (vect_analyze_loop_form): Update 
+       LOOP_VINFO_NITERS_UNCHANGED.
+       * tree-vect-transform.c
+       (vect_estimate_min_profitable_iters): Add new parameter and
+       code to  check if run time cost model test is needed.
+       Remove code that adds builtin vectorization cost to scalar
+       outside cost for the run time cost model test. If run time
+       cost model test is needed add the appropriate guard cost to
+       the scalar outside cost. The guard cost depends on whether
+       the guard is generated at versioning or at prolog generation
+       or at epilog generation. Change cost model equation to include
+       scalar outside cost.
+       (conservative_cost_threshold): New. Return the less conservative
+       profitability threshold between the cost model threshold and the
+       user defined vectorization threshold.
+       (vect_do_peeling_for_loop_bound): Call conservative_cost_threshold.
+       (vect_do_peeling_for_alignment): Same.
+       (vect_loop_versioning): Same.
+       (vect_create_cond_for_align_checks): ANDs the cost model condition
+       with the alignment condition.
+       (vect_transform_loop): Call loop versioning only when there is a
+       misalignment or an aliasing problem.
+
 2007-12-06  Jakub Jelinek  <jakub@redhat.com>
 
        PR middle-end/20983