re PR tree-optimization/87914 (gcc fails to vectorize bitreverse code)
authorRichard Biener <rguenther@suse.de>
Wed, 7 Nov 2018 15:01:09 +0000 (15:01 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 7 Nov 2018 15:01:09 +0000 (15:01 +0000)
commit5a951baaf1b789281bf62b852d24a4ab8cf3e714
tree0c036e96b195e6e1d15aa5359bf49a3c7372370d
parent7d3a67d7b0c01c0370226db7840c9ef6e054b56c
re PR tree-optimization/87914 (gcc fails to vectorize bitreverse code)

2018-11-07  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87914
* tree-vect-loop.c (vect_is_simple_reduction): Improve detection
of nested cycles.
(vectorizable_reduction): Handle shifts and rotates by dispatching
to vectorizable_shift.
* tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Handle
in-loop uses of vect_nested_cycle defs.  Merge cycle and internal
def cases.
(vectorizable_shift): Export and handle being called as
vect_nested_cycle.
(vect_analyze_stmt): Call vectorizable_shift after
vectorizable_reduction.
* tree-vectorizer.h (vectorizable_shift): Declare.

* lib/target-supports.exp (check_effective_target_vect_var_shift): New.
(check_avx2_available): Likewise.
* g++.dg/vect/pr87914.cc: New testcase.

From-SVN: r265876
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/vect/pr87914.cc [new file with mode: 0644]
gcc/testsuite/lib/target-supports.exp
gcc/tree-vect-loop.c
gcc/tree-vect-stmts.c
gcc/tree-vectorizer.h