]> git.ipfire.org Git - thirdparty/gcc.git/commit
vect: Merge loop mask and cond_op mask in fold-left reduction [PR115382].
authorRobin Dapp <rdapp@ventanamicro.com>
Fri, 7 Jun 2024 12:36:41 +0000 (14:36 +0200)
committerRobin Dapp <rdapp@ventanamicro.com>
Tue, 11 Jun 2024 18:05:29 +0000 (20:05 +0200)
commit2b438a0d2aa80f051a09b245a58f643540d4004b
tree879fdb5f416f5c09c0b99e3e857227c594757dd7
parent1588983be6112561c805a50eb7a3c585865beffa
vect: Merge loop mask and cond_op mask in fold-left reduction [PR115382].

Currently we discard the cond-op mask when the loop is fully masked
which causes wrong code in
gcc.dg/vect/vect-cond-reduc-in-order-2-signed-zero.c
when compiled with
-O3 -march=cascadelake --param vect-partial-vector-usage=2.

This patch ANDs both masks.

gcc/ChangeLog:

PR tree-optimization/115382

* tree-vect-loop.cc (vectorize_fold_left_reduction): Use
prepare_vec_mask.
* tree-vect-stmts.cc (check_load_store_for_partial_vectors):
Remove static of prepare_vec_mask.
* tree-vectorizer.h (prepare_vec_mask): Export.
gcc/tree-vect-loop.cc
gcc/tree-vect-stmts.cc
gcc/tree-vectorizer.h