When gcc enabled the vectorization of the common layer, some FAIL items appeared in GCC regression tests, such as gcc.dg/fma-{3,4,6,7}.c. On LoongArch architecture, for example, the result of fmsub.s instruction is a*b-c, and there is a problem of positive and negative zero inequality between the result of c-a*b expected to be calculated, so the detection of such problems in LoongArch architecture needs to be set to unsupported state.
gcc/testsuite/ChangeLog: * gcc.dg/fma-3.c:The intermediate file corresponding to the function does not produce the corresponding FNMA symbol, so the test rules should be skipped when testing. * gcc.dg/fma-4.c:The intermediate file corresponding to the function does not produce the corresponding FNMS symbol, so skip the test rules when testing. * gcc.dg/fma-6.c:The cause is the same as fma-3.c. * gcc.dg/fma-7.c:The cause is the same as fma-4.c --- gcc/testsuite/gcc.dg/fma-3.c | 2 +- gcc/testsuite/gcc.dg/fma-4.c | 2 +- gcc/testsuite/gcc.dg/fma-6.c | 2 +- gcc/testsuite/gcc.dg/fma-7.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gcc/testsuite/gcc.dg/fma-3.c b/gcc/testsuite/gcc.dg/fma-3.c index 699aa2c9530..6649b54b6f9 100644 --- a/gcc/testsuite/gcc.dg/fma-3.c +++ b/gcc/testsuite/gcc.dg/fma-3.c @@ -12,4 +12,4 @@ f2 (double a, double b, double c) return c - a * b; } -/* { dg-final { scan-tree-dump-times { = \.FNMA \(} 2 "widening_mul" { target scalar_all_fma } } } */ +/* { dg-final { scan-tree-dump-times { = \.FNMA \(} 2 "widening_mul" { target { scalar_all_fma && { ! loongarch*-*-* } } } } } */ diff --git a/gcc/testsuite/gcc.dg/fma-4.c b/gcc/testsuite/gcc.dg/fma-4.c index bff928f1fac..f1701c1961a 100644 --- a/gcc/testsuite/gcc.dg/fma-4.c +++ b/gcc/testsuite/gcc.dg/fma-4.c @@ -12,4 +12,4 @@ f2 (double a, double b, double c) return -(a * b) - c; } -/* { dg-final { scan-tree-dump-times { = \.FNMS \(} 2 "widening_mul" { target scalar_all_fma } } } */ +/* { dg-final { scan-tree-dump-times { = \.FNMS \(} 2 "widening_mul" { target { scalar_all_fma && { ! loongarch*-*-* } } } } } */ diff --git a/gcc/testsuite/gcc.dg/fma-6.c b/gcc/testsuite/gcc.dg/fma-6.c index 87258cec4a2..9e49b62b6de 100644 --- a/gcc/testsuite/gcc.dg/fma-6.c +++ b/gcc/testsuite/gcc.dg/fma-6.c @@ -64,4 +64,4 @@ f10 (double a, double b, double c) return -__builtin_fma (a, b, -c); } -/* { dg-final { scan-tree-dump-times { = \.FNMA \(} 14 "optimized" { target scalar_all_fma } } } */ +/* { dg-final { scan-tree-dump-times { = \.FNMA \(} 14 "optimized" { target { scalar_all_fma && { ! loongarch*-*-* } } } } } */ diff --git a/gcc/testsuite/gcc.dg/fma-7.c b/gcc/testsuite/gcc.dg/fma-7.c index f409cc8ee3c..86aacad7b90 100644 --- a/gcc/testsuite/gcc.dg/fma-7.c +++ b/gcc/testsuite/gcc.dg/fma-7.c @@ -64,4 +64,4 @@ f10 (double a, double b, double c) return -__builtin_fma (a, b, c); } -/* { dg-final { scan-tree-dump-times { = \.FNMS \(} 14 "optimized" { target scalar_all_fma } } } */ +/* { dg-final { scan-tree-dump-times { = \.FNMS \(} 14 "optimized" { target { scalar_all_fma && { ! loongarch*-*-* } } } } } */ -- 2.20.1