[gcc r14-9295] tree-optimization/114164 - unsupported SIMD clone call, unsupported VEC_COND

Richard Biener rguenth@gcc.gnu.org
Mon Mar 4 12:41:20 GMT 2024


https://gcc.gnu.org/g:a19ab1c42aba47fbfb122a6160f504565aef0943

commit r14-9295-ga19ab1c42aba47fbfb122a6160f504565aef0943
Author: Richard Biener <rguenther@suse.de>
Date:   Fri Mar 1 11:07:21 2024 +0100

    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:
---
 gcc/tree-vect-stmts.cc | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
index be0e1a9c69d..14a3ffb5f02 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))
 	    {


More information about the Gcc-cvs mailing list