aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-stmts.cc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2024-03-01 11:07:21 +0100
committerRichard Biener <rguenther@suse.de>2024-03-04 13:38:05 +0100
commita19ab1c42aba47fbfb122a6160f504565aef0943 (patch)
tree5db968013acf81dcca11ed09962508afc4b8ee91 /gcc/tree-vect-stmts.cc
parentdea9ac2a00d1e4126d61b65a8302c2bd523f0b99 (diff)
downloadgcc-a19ab1c42aba47fbfb122a6160f504565aef0943.zip
gcc-a19ab1c42aba47fbfb122a6160f504565aef0943.tar.gz
gcc-a19ab1c42aba47fbfb122a6160f504565aef0943.tar.bz2
tree-optimization/114164 - unsupported SIMD clone call, unsupported VEC_COND
The following avoids creating unsupported VEC_COND_EXPRs as part of SIMD clone call mask argument setup during vectorization which results in inefficient decomposing of the operation during vector lowering. PR tree-optimization/114164 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Fail if the code generated for mask argument setup is not supported.
Diffstat (limited to 'gcc/tree-vect-stmts.cc')
-rw-r--r--gcc/tree-vect-stmts.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
index be0e1a9..14a3ffb 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -4210,6 +4210,16 @@ vectorizable_simd_clone_call (vec_info *vinfo, stmt_vec_info stmt_info,
" supported for mismatched vector sizes.\n");
return false;
}
+ if (!expand_vec_cond_expr_p (clone_arg_vectype,
+ arginfo[i].vectype, ERROR_MARK))
+ {
+ if (dump_enabled_p ())
+ dump_printf_loc (MSG_MISSED_OPTIMIZATION,
+ vect_location,
+ "cannot compute mask argument for"
+ " in-branch vector clones.\n");
+ return false;
+ }
}
else if (SCALAR_INT_MODE_P (bestn->simdclone->mask_mode))
{