diff options
author | Richard Biener <rguenther@suse.de> | 2024-10-26 14:18:37 +0200 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2024-10-28 08:54:47 +0100 |
commit | 0942bb85fc55735d1339a26c9473f7ad1f30100e (patch) | |
tree | 7d08df57fd7eb45f6e0a57b2bee1230082c1ff20 | |
parent | 75caa17f5cb4e414919baff0435300b549a76eca (diff) | |
download | gcc-0942bb85fc55735d1339a26c9473f7ad1f30100e.zip gcc-0942bb85fc55735d1339a26c9473f7ad1f30100e.tar.gz gcc-0942bb85fc55735d1339a26c9473f7ad1f30100e.tar.bz2 |
Remove code in vectorizer pattern recog relying on vec_cond{u,eq,}
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,}.
* 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.
-rw-r--r-- | gcc/tree-vect-patterns.cc | 37 |
1 files changed, 1 insertions, 36 deletions
diff --git a/gcc/tree-vect-patterns.cc b/gcc/tree-vect-patterns.cc index 46aa312..a6d246f 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); |