aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2025-10-01 11:26:45 +0200
committerRichard Biener <rguenth@gcc.gnu.org>2025-10-01 13:49:53 +0200
commitc6865e7e15bc9a1337df00d2ca03604e1712a2dd (patch)
treef6a02786bc2331a701b3d238c31a58d1c5677e88 /gcc
parenta52f635700681ddfd85d1ea5b0580ec780c78d58 (diff)
downloadgcc-c6865e7e15bc9a1337df00d2ca03604e1712a2dd.zip
gcc-c6865e7e15bc9a1337df00d2ca03604e1712a2dd.tar.gz
gcc-c6865e7e15bc9a1337df00d2ca03604e1712a2dd.tar.bz2
tree-optimization/122110 - do not reject all bit-precision reductions
We can handle bitwise-operation reductions and reductions on mask vectors just fine. PR tree-optimization/122110 * tree-vect-loop.cc (vectorizable_reduction): Relax restriction to mode-precision operations.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree-vect-loop.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc
index 1836037..1d549e4 100644
--- a/gcc/tree-vect-loop.cc
+++ b/gcc/tree-vect-loop.cc
@@ -7187,7 +7187,11 @@ vectorizable_reduction (loop_vec_info loop_vinfo,
return false;
/* Do not try to vectorize bit-precision reductions. */
- if (!type_has_mode_precision_p (op.type))
+ if (!VECTOR_BOOLEAN_TYPE_P (vectype_out)
+ && !type_has_mode_precision_p (op.type)
+ && op.code != BIT_AND_EXPR
+ && op.code != BIT_IOR_EXPR
+ && op.code != BIT_XOR_EXPR)
return false;
/* Lane-reducing ops also never can be used in a SLP reduction group