diff options
author | Richard Biener <rguenther@suse.de> | 2024-03-01 11:07:21 +0100 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2024-03-04 13:38:05 +0100 |
commit | a19ab1c42aba47fbfb122a6160f504565aef0943 (patch) | |
tree | 5db968013acf81dcca11ed09962508afc4b8ee91 /gcc/tree-vect-stmts.cc | |
parent | dea9ac2a00d1e4126d61b65a8302c2bd523f0b99 (diff) | |
download | gcc-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.cc | 10 |
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)) { |