===================================================================
@@ -2695,7 +2695,11 @@ pop:
if (gimple_assign_rhs2 (use_stmt) == op)
neg = ! neg;
}
- if (*code == ERROR_MARK)
+ if (CONVERT_EXPR_CODE_P (use_code)
+ && tree_nop_conversion_p (TREE_TYPE (gimple_assign_lhs (use_stmt)),
+ TREE_TYPE (gimple_assign_rhs1 (use_stmt))))
+ ;
+ else if (*code == ERROR_MARK)
*code = use_code;
else if (use_code != *code)
{
@@ -5692,19 +5696,6 @@ vectorizable_reduction (stmt_vec_info st
which is defined by the loop-header-phi. */
gassign *stmt = as_a <gassign *> (stmt_info->stmt);
- switch (get_gimple_rhs_class (gimple_assign_rhs_code (stmt)))
- {
- case GIMPLE_BINARY_RHS:
- case GIMPLE_TERNARY_RHS:
- break;
-
- case GIMPLE_UNARY_RHS:
- case GIMPLE_SINGLE_RHS:
- return false;
-
- default:
- gcc_unreachable ();
- }
enum tree_code code = gimple_assign_rhs_code (stmt);
int op_type = TREE_CODE_LENGTH (code);
===================================================================
@@ -62,4 +62,4 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
===================================================================
@@ -46,4 +46,4 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
===================================================================
@@ -45,4 +45,4 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
===================================================================
@@ -12,12 +12,6 @@ signed char Y[N] __attribute__ ((__align
/* char->short->short dot product.
The dot-product pattern should be detected.
- The reduction is currently not vectorized becaus of the signed->unsigned->signed
- casts, since this patch:
-
- 2005-12-26 Kazu Hirata <kazu@codesourcery.com>
-
- PR tree-optimization/25125
When the dot-product is detected, the loop should be vectorized on vect_sdot_qi
targets (targets that support dot-product of signed char).
@@ -60,5 +54,5 @@ int main (void)
/* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected" 1 "vect" { xfail *-*-* } } } */
/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
===================================================================
@@ -21,6 +21,8 @@ foo ()
2005-12-26 Kazu Hirata <kazu@codesourcery.com>
PR tree-optimization/25125
+
+ but we still handle the reduction.
*/
for (i = 0; i < N; i++)
@@ -43,5 +45,4 @@ main (void)
}
/* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected" 1 "vect" { xfail *-*-* } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_widen_sum_qi_to_hi } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */