On Fri, Jan 23, 2015 at 5:35 PM, Yuri Rumyantsev <ysrum...@gmail.com> wrote: > Hi All, > > In a process of testing omp-simd tests we found out that couple > important benchmark did not show any speed-up with aggressive > if-conversion since the hottest loops have not been vectorized. > Here is a simple patch that resolves vectorization issue related to > aggressive if-conversion: > (1) Use the only mask for load/store of given size; > (2) Use iterative algorithm to remove all multiple predicate uses in > pattern tree - splitting of predicate definition may introduce new > variable with multiple uses. > > Reproducer is included to patch. > > Bootstrap and regression testing did not show any new failures. > > Is it OK for trunk?
Ok. Thanks, Richard. > 2015-01-23 Yuri Rumyantsev <ysrum...@gmail.com> > > PR tree-optimization/64746 > * tree-if-conv.c (mask_exists): New function. > (predicate_mem_writes): Save created mask with given size for further > use. > (stmt_is_root_of_bool_pattern): Remove argument VAR and store to it. > (ifcvt_repair_bool_pattern): Collect all statements that are root > of bool pattern and use iterative algorithm to remove multiple uses > of predicates, display number of required iterations. > > gcc/testsuite/ChangeLog > > * gcc.target/i386/avx2-vect-aggressive-1.c: New test.