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?

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.

Attachment: 64746.patch
Description: Binary data

Reply via email to