[PATCH] i386: Add c99 runtime requirement to math optimisation tests

Pat Bernardi bernardi@adacore.com
Tue Aug 18 22:18:30 GMT 2020


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  <bernardi@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



More information about the Gcc-patches mailing list