diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-2.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-2.c index 25757d2b6713b53a325979b96f89396dbf4675b8..2ebe98887a6072b9e674846af1df38cdc94258dd 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-2.c +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-2.c @@ -6,5 +6,5 @@ #include "vect-reduc-dot-1.c" -/* { dg-final { scan-tree-dump-not "vect_recog_dot_prod_pattern: detected" "vect" } } */ +/* { dg-final { scan-tree-dump "vect_recog_dot_prod_pattern: detected" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-3.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-3.c index b1deb64e186da99ef42cb687d107445c0b800bd8..6a6679d522350ab4c19836f5537119122f0e654e 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-3.c +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-3.c @@ -6,5 +6,5 @@ #include "vect-reduc-dot-1.c" -/* { dg-final { scan-tree-dump-not "vect_recog_dot_prod_pattern: detected" "vect" } } */ +/* { dg-final { scan-tree-dump "vect_recog_dot_prod_pattern: detected" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-6.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-6.c index b690c9f2eb18b34f4b147d779bb3da582e285399..0cd4b823643bd4fadd529b2fe4e1d664aa1159ad 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-6.c +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-6.c @@ -6,5 +6,5 @@ #include "vect-reduc-dot-1.c" -/* { dg-final { scan-tree-dump-not "vect_recog_dot_prod_pattern: detected" "vect" } } */ +/* { dg-final { scan-tree-dump "vect_recog_dot_prod_pattern: detected" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-7.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-7.c index 29e442e8bbf7176cf861518dc171a83d82967764..eefee2e2ca27d749cd3af2238723aeae4e60a429 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-7.c +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-7.c @@ -6,5 +6,5 @@ #include "vect-reduc-dot-1.c" -/* { dg-final { scan-tree-dump-not "vect_recog_dot_prod_pattern: detected" "vect" } } */ +/* { dg-final { scan-tree-dump "vect_recog_dot_prod_pattern: detected" "vect" } } */ diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c index 803de3fc287371fa202610a55b17e2c8934672f3..441d6cd28c4eaded7abd756164890dbcffd2f3b8 100644 --- a/gcc/tree-vect-patterns.c +++ b/gcc/tree-vect-patterns.c @@ -946,7 +946,8 @@ vect_recog_dot_prod_pattern (vec_info *vinfo, In which - DX is double the size of X - DY is double the size of Y - - DX, DY, DPROD all have the same type + - DX, DY, DPROD all have the same type but the sign + between DX, DY and DPROD can differ. - sum is the same size of DPROD or bigger - sum has been recognized as a reduction variable. @@ -988,12 +989,6 @@ vect_recog_dot_prod_pattern (vec_info *vinfo, false, 2, unprom0, &half_type)) return NULL; - /* If there are two widening operations, make sure they agree on - the sign of the extension. */ - if (TYPE_PRECISION (unprom_mult.type) != TYPE_PRECISION (type) - && TYPE_SIGN (unprom_mult.type) != TYPE_SIGN (half_type)) - return NULL; - vect_pattern_detected ("vect_recog_dot_prod_pattern", last_stmt); tree half_vectype;