diff mbox series

Remove code in vectorizer pattern recog relying on vec_cond{u,eq,}

Message ID 20241026123334.D07E913AC0@imap1.dmz-prg2.suse.org
State New
Headers show
Series Remove code in vectorizer pattern recog relying on vec_cond{u,eq,} | expand

Commit Message

Richard Biener Oct. 26, 2024, 12:33 p.m. UTC
With the intent to rely on vec_cond_mask and vec_cmp patterns
comparisons do not need rewriting into COND_EXPRs that eventually
combine to vec_cond{u,eq,}.

Bootstrap and regtest running on x86_64-unknown-linux-gnu.

	* tree-vect-patterns.cc (check_bool_pattern): For comparisons
	we do nothing if we can expand them or we can't replace them
	with a ? -1 : 0 condition - but the latter would require
	expanding the comparison which we proved we can't.  So do
	nothing, aka not think vec_cond{u,eq,} will save us.
---
 gcc/tree-vect-patterns.cc | 37 +------------------------------------
 1 file changed, 1 insertion(+), 36 deletions(-)
diff mbox series

Patch

diff --git a/gcc/tree-vect-patterns.cc b/gcc/tree-vect-patterns.cc
index 46aa3129bb3..a6d246f570c 100644
--- a/gcc/tree-vect-patterns.cc
+++ b/gcc/tree-vect-patterns.cc
@@ -5610,42 +5610,7 @@  check_bool_pattern (tree var, vec_info *vinfo, hash_set<gimple *> &stmts)
       break;
 
     default:
-      if (TREE_CODE_CLASS (rhs_code) == tcc_comparison)
-	{
-	  tree vecitype, comp_vectype;
-
-	  /* If the comparison can throw, then is_gimple_condexpr will be
-	     false and we can't make a COND_EXPR/VEC_COND_EXPR out of it.  */
-	  if (stmt_could_throw_p (cfun, def_stmt))
-	    return false;
-
-	  comp_vectype = get_vectype_for_scalar_type (vinfo, TREE_TYPE (rhs1));
-	  if (comp_vectype == NULL_TREE)
-	    return false;
-
-	  tree mask_type = get_mask_type_for_scalar_type (vinfo,
-							  TREE_TYPE (rhs1));
-	  if (mask_type
-	      && expand_vec_cmp_expr_p (comp_vectype, mask_type, rhs_code))
-	    return false;
-
-	  if (TREE_CODE (TREE_TYPE (rhs1)) != INTEGER_TYPE)
-	    {
-	      scalar_mode mode = SCALAR_TYPE_MODE (TREE_TYPE (rhs1));
-	      tree itype
-		= build_nonstandard_integer_type (GET_MODE_BITSIZE (mode), 1);
-	      vecitype = get_vectype_for_scalar_type (vinfo, itype);
-	      if (vecitype == NULL_TREE)
-		return false;
-	    }
-	  else
-	    vecitype = comp_vectype;
-	  if (! expand_vec_cond_expr_p (vecitype, comp_vectype, rhs_code))
-	    return false;
-	}
-      else
-	return false;
-      break;
+      return false;
     }
 
   bool res = stmts.add (def_stmt);