A number of i386 math optimisation tests are looking assembly instructions that are only emitted when the compiler knows the target has a C99 libm available. Since targets like *-elf may not have such a libm, a C99 runtime requirement is added to these tests.
Tested on x86-elf and x86_64-elf hosted on x86_64-linux in addition to x86_64-pc-linux-gnu If approved, I'll need a maintainer to kindly commit on my behalf. Thanks, Pat Bernardi Senior Software Engineer, AdaCore 2020-08-18 Pat Bernardi <berna...@adacore.com> gcc/testsuite/ChangeLog * gcc.target/i386/387-7.c: Add dg-require-effective-target c99_runtime. * gcc.target/i386/387-9.c: Likewise. * gcc.target/i386/avx512bw-pr96246-1.c: Likewise. * gcc.target/i386/avx512f-rint-sfix-vec-2.c: Likewise. * gcc.target/i386/avx512f-rintf-sfix-vec-2.c: Likewise. * gcc.target/i386/avx512vl-pr96246-1.c: Likewise. * gcc.target/i386/pr61403.c: Likewise. * gcc.target/i386/sse4_1-ceil-sfix-vec.c: Likewise. * gcc.target/i386/sse4_1-ceilf-sfix-vec.c: Likewise. * gcc.target/i386/sse4_1-floor-sfix-vec.c: Likewise. * gcc.target/i386/sse4_1-floorf-sfix-vec.c: Likewise. * gcc.target/i386/sse4_1-rint-sfix-vec.c: Likewise. * gcc.target/i386/sse4_1-rintf-sfix-vec.c: Likewise. * gcc.target/i386/sse4_1-round-sfix-vec.c: Likewise. * gcc.target/i386/sse4_1-roundf-sfix-vec.c: Likewise. --- gcc/testsuite/gcc.target/i386/387-7.c | 1 + gcc/testsuite/gcc.target/i386/387-9.c | 1 + gcc/testsuite/gcc.target/i386/avx512bw-pr96246-1.c | 1 + gcc/testsuite/gcc.target/i386/avx512f-rint-sfix-vec-2.c | 1 + gcc/testsuite/gcc.target/i386/avx512f-rintf-sfix-vec-2.c | 1 + gcc/testsuite/gcc.target/i386/avx512vl-pr96246-1.c | 1 + gcc/testsuite/gcc.target/i386/pr61403.c | 1 + gcc/testsuite/gcc.target/i386/sse4_1-ceil-sfix-vec.c | 1 + gcc/testsuite/gcc.target/i386/sse4_1-ceilf-sfix-vec.c | 1 + gcc/testsuite/gcc.target/i386/sse4_1-floor-sfix-vec.c | 1 + gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c | 1 + gcc/testsuite/gcc.target/i386/sse4_1-rint-sfix-vec.c | 1 + gcc/testsuite/gcc.target/i386/sse4_1-rintf-sfix-vec.c | 1 + gcc/testsuite/gcc.target/i386/sse4_1-round-sfix-vec.c | 1 + gcc/testsuite/gcc.target/i386/sse4_1-roundf-sfix-vec.c | 1 + 15 files changed, 15 insertions(+) diff --git a/gcc/testsuite/gcc.target/i386/387-7.c b/gcc/testsuite/gcc.target/i386/387-7.c index e01ed2e0576..3c1ad606462 100644 --- a/gcc/testsuite/gcc.target/i386/387-7.c +++ b/gcc/testsuite/gcc.target/i386/387-7.c @@ -1,6 +1,7 @@ /* Verify that 387 fsincos instruction is generated. */ /* { dg-do compile } */ /* { dg-options "-O -ffast-math -mfpmath=387 -mfancy-math-387" } */ +/* { dg-require-effective-target c99_runtime } */ /* { dg-final { scan-assembler "fsincos" } } */ extern double sin (double); diff --git a/gcc/testsuite/gcc.target/i386/387-9.c b/gcc/testsuite/gcc.target/i386/387-9.c index 2667aa46872..469c635e479 100644 --- a/gcc/testsuite/gcc.target/i386/387-9.c +++ b/gcc/testsuite/gcc.target/i386/387-9.c @@ -1,6 +1,7 @@ /* Verify that 387 fsincos instruction is generated. */ /* { dg-do compile } */ /* { dg-options "-O -funsafe-math-optimizations -mfpmath=387 -mfancy-math-387" } */ +/* { dg-require-effective-target c99_runtime } */ extern double sin (double); extern double cos (double); diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-pr96246-1.c b/gcc/testsuite/gcc.target/i386/avx512bw-pr96246-1.c index 2bfcc840a91..4aaa28866ca 100644 --- a/gcc/testsuite/gcc.target/i386/avx512bw-pr96246-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512bw-pr96246-1.c @@ -1,6 +1,7 @@ /* PR target/96246 */ /* { dg-do compile } */ /* { dg-options "-O2 -ftree-vectorize -mavx512bw" } */ +/* { dg-require-effective-target c99_runtime } */ /* { dg-final { scan-assembler-times "vpblendm\[bwdq\]\[\t ]" 4 } } */ /* { dg-final { scan-assembler-times "vblendmp\[sd\]\[\t ]" 2 } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx512f-rint-sfix-vec-2.c b/gcc/testsuite/gcc.target/i386/avx512f-rint-sfix-vec-2.c index c3f78ac3f25..2d2099f77cb 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-rint-sfix-vec-2.c +++ b/gcc/testsuite/gcc.target/i386/avx512f-rint-sfix-vec-2.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx512f" } */ +/* { dg-require-effective-target c99_runtime } */ #include "avx512f-rint-sfix-vec-1.c" diff --git a/gcc/testsuite/gcc.target/i386/avx512f-rintf-sfix-vec-2.c b/gcc/testsuite/gcc.target/i386/avx512f-rintf-sfix-vec-2.c index c172e61f84a..fe473766c86 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-rintf-sfix-vec-2.c +++ b/gcc/testsuite/gcc.target/i386/avx512f-rintf-sfix-vec-2.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx512f" } */ +/* { dg-require-effective-target c99_runtime } */ #include "avx512f-rintf-sfix-vec-1.c" diff --git a/gcc/testsuite/gcc.target/i386/avx512vl-pr96246-1.c b/gcc/testsuite/gcc.target/i386/avx512vl-pr96246-1.c index 95357d6fc84..c7ae5a507a8 100644 --- a/gcc/testsuite/gcc.target/i386/avx512vl-pr96246-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512vl-pr96246-1.c @@ -1,6 +1,7 @@ /* PR target/96246 */ /* { dg-do compile } */ /* { dg-options "-O2 -ftree-vectorize -mavx512bw -mavx512vl" } */ +/* { dg-require-effective-target c99_runtime } */ /* { dg-final { scan-assembler-times "vpblendm\[bwdq\]\[\t ]" 6 } } */ /* { dg-final { scan-assembler-times "vblendmp\[sd\]\[\t ]" 3 } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr61403.c b/gcc/testsuite/gcc.target/i386/pr61403.c index 38ba4a1b1ec..48c7ba68d78 100644 --- a/gcc/testsuite/gcc.target/i386/pr61403.c +++ b/gcc/testsuite/gcc.target/i386/pr61403.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.2 -mtune=corei7" } */ +/* { dg-require-effective-target c99_runtime } */ #include <math.h> diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-ceil-sfix-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-ceil-sfix-vec.c index 6250906f3f1..4522f32035a 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-ceil-sfix-vec.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-ceil-sfix-vec.c @@ -1,6 +1,7 @@ /* { dg-do run } */ /* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */ /* { dg-require-effective-target sse4 } */ +/* { dg-require-effective-target c99_runtime } */ #ifndef CHECK_H #define CHECK_H "sse4_1-check.h" diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-sfix-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-sfix-vec.c index c4ccad16df5..9f11e114eb3 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-sfix-vec.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-ceilf-sfix-vec.c @@ -1,6 +1,7 @@ /* { dg-do run } */ /* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */ /* { dg-require-effective-target sse4 } */ +/* { dg-require-effective-target c99_runtime } */ #ifndef CHECK_H #define CHECK_H "sse4_1-check.h" diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-floor-sfix-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-floor-sfix-vec.c index 89ce331ffa6..5404f76de43 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-floor-sfix-vec.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-floor-sfix-vec.c @@ -1,6 +1,7 @@ /* { dg-do run } */ /* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */ /* { dg-require-effective-target sse4 } */ +/* { dg-require-effective-target c99_runtime } */ #ifndef CHECK_H #define CHECK_H "sse4_1-check.h" diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c index b1912360860..d84607643e3 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c @@ -1,6 +1,7 @@ /* { dg-do run } */ /* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */ /* { dg-require-effective-target sse4 } */ +/* { dg-require-effective-target c99_runtime } */ #ifndef CHECK_H #define CHECK_H "sse4_1-check.h" diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-rint-sfix-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-rint-sfix-vec.c index c82c35340c5..5932943554b 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-rint-sfix-vec.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-rint-sfix-vec.c @@ -1,6 +1,7 @@ /* { dg-do run } */ /* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */ /* { dg-require-effective-target sse4 } */ +/* { dg-require-effective-target c99_runtime } */ #ifndef CHECK_H #define CHECK_H "sse4_1-check.h" diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-rintf-sfix-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-rintf-sfix-vec.c index 5188d4bc0b3..3bfbb25c036 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-rintf-sfix-vec.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-rintf-sfix-vec.c @@ -1,6 +1,7 @@ /* { dg-do run } */ /* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */ /* { dg-require-effective-target sse4 } */ +/* { dg-require-effective-target c99_runtime } */ #ifndef CHECK_H #define CHECK_H "sse4_1-check.h" diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-round-sfix-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-round-sfix-vec.c index 96b8dcac747..782077ff7d0 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-round-sfix-vec.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-round-sfix-vec.c @@ -1,6 +1,7 @@ /* { dg-do run } */ /* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */ /* { dg-require-effective-target sse4 } */ +/* { dg-require-effective-target c99_runtime } */ #ifndef CHECK_H #define CHECK_H "sse4_1-check.h" diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-roundf-sfix-vec.c b/gcc/testsuite/gcc.target/i386/sse4_1-roundf-sfix-vec.c index 1416dc9a798..9f1efcf789a 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-roundf-sfix-vec.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundf-sfix-vec.c @@ -1,6 +1,7 @@ /* { dg-do run } */ /* { dg-options "-O2 -ffast-math -ftree-vectorize -msse4.1" } */ /* { dg-require-effective-target sse4 } */ +/* { dg-require-effective-target c99_runtime } */ #ifndef CHECK_H #define CHECK_H "sse4_1-check.h" -- 2.27.0