diff options
author | Jakub Jelinek <jakub@redhat.com> | 2011-10-28 11:25:18 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2011-10-28 11:25:18 +0200 |
commit | cede2577b90bf851b4535ffdb0ea0b3cfbbfdda3 (patch) | |
tree | e0ca54aea6d06a191955ed05d214308f5de3e483 /gcc | |
parent | 0de82be51731d649414f86d09f9cd3d672df8dda (diff) | |
download | gcc-cede2577b90bf851b4535ffdb0ea0b3cfbbfdda3.zip gcc-cede2577b90bf851b4535ffdb0ea0b3cfbbfdda3.tar.gz gcc-cede2577b90bf851b4535ffdb0ea0b3cfbbfdda3.tar.bz2 |
tree-vect-stmts.c (vectorizable_shift): Give up if op1 has different vector mode from vectype's mode.
* tree-vect-stmts.c (vectorizable_shift): Give up if op1 has different
vector mode from vectype's mode.
From-SVN: r180606
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-vect-stmts.c | 11 |
2 files changed, 15 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 61320f8..282cb6d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-10-28 Jakub Jelinek <jakub@redhat.com> + + * tree-vect-stmts.c (vectorizable_shift): Give up if op1 has different + vector mode from vectype's mode. + 2011-10-28 Chung-Lin Tang <cltang@codesourcery.com> PR rtl-optimization/49720 diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 4cd582d..dc81acb 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -2318,6 +2318,7 @@ vectorizable_shift (gimple stmt, gimple_stmt_iterator *gsi, int nunits_in; int nunits_out; tree vectype_out; + tree op1_vectype; int ncopies; int j, i; VEC (tree, heap) *vec_oprnds0 = NULL, *vec_oprnds1 = NULL; @@ -2387,7 +2388,8 @@ vectorizable_shift (gimple stmt, gimple_stmt_iterator *gsi, return false; op1 = gimple_assign_rhs2 (stmt); - if (!vect_is_simple_use (op1, loop_vinfo, bb_vinfo, &def_stmt, &def, &dt[1])) + if (!vect_is_simple_use_1 (op1, loop_vinfo, bb_vinfo, &def_stmt, &def, + &dt[1], &op1_vectype)) { if (vect_print_dump_info (REPORT_DETAILS)) fprintf (vect_dump, "use not simple."); @@ -2444,6 +2446,13 @@ vectorizable_shift (gimple stmt, gimple_stmt_iterator *gsi, optab = optab_for_tree_code (code, vectype, optab_vector); if (vect_print_dump_info (REPORT_DETAILS)) fprintf (vect_dump, "vector/vector shift/rotate found."); + if (TYPE_MODE (op1_vectype) != TYPE_MODE (vectype)) + { + if (vect_print_dump_info (REPORT_DETAILS)) + fprintf (vect_dump, "unusable type for last operand in" + " vector/vector shift/rotate."); + return false; + } } /* See if the machine has a vector shifted by scalar insn and if not then see if it has a vector shifted by vector insn. */ |