mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-16 13:01:21 +08:00
Make vectorizable_operation punt early on codes it doesn't handle
vectorizable_operation returned false for codes that are handled by vectorizable_shift, but only after it had already done a lot of work. Checking earlier should be more efficient and avoid polluting the logs with duplicate info. Also, there was no such early-out for comparisons or COND_EXPRs. Fixing that avoids a false scan-tree-dump hit with a later patch. 2019-11-29 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vect-stmts.c (vectorizable_operation): Punt early on codes that are handled elsewhere. From-SVN: r278848
This commit is contained in:
parent
ce19a48227
commit
4177e933b3
@ -1,3 +1,8 @@
|
||||
2019-11-29 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
* tree-vect-stmts.c (vectorizable_operation): Punt early
|
||||
on codes that are handled elsewhere.
|
||||
|
||||
2019-11-29 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
* doc/sourcebuild.texi (vect_bool_cmp): Document.
|
||||
|
@ -5944,6 +5944,21 @@ vectorizable_operation (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi,
|
||||
|
||||
orig_code = code = gimple_assign_rhs_code (stmt);
|
||||
|
||||
/* Shifts are handled in vectorizable_shift. */
|
||||
if (code == LSHIFT_EXPR
|
||||
|| code == RSHIFT_EXPR
|
||||
|| code == LROTATE_EXPR
|
||||
|| code == RROTATE_EXPR)
|
||||
return false;
|
||||
|
||||
/* Comparisons are handled in vectorizable_comparison. */
|
||||
if (TREE_CODE_CLASS (code) == tcc_comparison)
|
||||
return false;
|
||||
|
||||
/* Conditions are handled in vectorizable_condition. */
|
||||
if (code == COND_EXPR)
|
||||
return false;
|
||||
|
||||
/* For pointer addition and subtraction, we should use the normal
|
||||
plus and minus for the vector operation. */
|
||||
if (code == POINTER_PLUS_EXPR)
|
||||
@ -6068,11 +6083,6 @@ vectorizable_operation (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi,
|
||||
|
||||
gcc_assert (ncopies >= 1);
|
||||
|
||||
/* Shifts are handled in vectorizable_shift (). */
|
||||
if (code == LSHIFT_EXPR || code == RSHIFT_EXPR || code == LROTATE_EXPR
|
||||
|| code == RROTATE_EXPR)
|
||||
return false;
|
||||
|
||||
/* Supportable by target? */
|
||||
|
||||
vec_mode = TYPE_MODE (vectype);
|
||||
|
Loading…
x
Reference in New Issue
Block a user