From: Richard Biener Date: Fri, 1 Mar 2024 10:07:21 +0000 (+0100) Subject: tree-optimization/114164 - unsupported SIMD clone call, unsupported VEC_COND X-Git-Tag: basepoints/gcc-15~844 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a19ab1c42aba47fbfb122a6160f504565aef0943;p=thirdparty%2Fgcc.git 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. --- diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc index be0e1a9c69da..14a3ffb5f021 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)) {