aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorliuhongt <hongtao.liu@intel.com>2021-09-24 19:17:42 +0800
committerliuhongt <hongtao.liu@intel.com>2021-10-08 10:09:55 +0800
commit613196462a62a28de8414b9023ec2be9a29ac3dc (patch)
tree78d57aa8ddeb6ac147d6a534a154c9225ff36e43 /gcc/testsuite
parent77ca2cfcdcccee3c8e8aeaf1d03e9920893d2486 (diff)
downloadgcc-613196462a62a28de8414b9023ec2be9a29ac3dc.zip
gcc-613196462a62a28de8414b9023ec2be9a29ac3dc.tar.gz
gcc-613196462a62a28de8414b9023ec2be9a29ac3dc.tar.bz2
Simplify (_Float16) ceil ((double) x) to .CEIL (x) when available.
gcc/ChangeLog: PR target/102464 * config/i386/i386.c (ix86_optab_supported_p): Return true for HFmode. * match.pd: Simplify (_Float16) ceil ((double) x) to __builtin_ceilf16 (a) when a is _Float16 type and direct_internal_fn_supported_p. gcc/testsuite/ChangeLog: * gcc.target/i386/pr102464.c: New test.
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/gcc.target/i386/pr102464.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/pr102464.c b/gcc/testsuite/gcc.target/i386/pr102464.c
new file mode 100644
index 0000000..e3e060e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr102464.c
@@ -0,0 +1,39 @@
+/* PR target/102464. */
+/* { dg-do compile } */
+/* { dg-options "-O2 -mavx512fp16" } */
+
+#define FOO(FUNC,SUFFIX) \
+ _Float16 \
+ foo_##FUNC##_##SUFFIX (_Float16 a) \
+ { \
+ return __builtin_##FUNC##SUFFIX (a); \
+ }
+
+FOO (roundeven, f16);
+FOO (roundeven, f);
+FOO (roundeven, );
+FOO (roundeven, l);
+FOO (trunc, f16);
+FOO (trunc, f);
+FOO (trunc, );
+FOO (trunc, l);
+FOO (ceil, f16);
+FOO (ceil, f);
+FOO (ceil, );
+FOO (ceil, l);
+FOO (floor, f16);
+FOO (floor, f);
+FOO (floor, );
+FOO (floor, l);
+FOO (nearbyint, f16);
+FOO (nearbyint, f);
+FOO (nearbyint, );
+FOO (nearbyint, l);
+FOO (rint, f16);
+FOO (rint, f);
+FOO (rint, );
+FOO (rint, l);
+
+/* { dg-final { scan-assembler-not "vcvtsh2s\[sd\]" } } */
+/* { dg-final { scan-assembler-not "extendhfxf" } } */
+/* { dg-final { scan-assembler-times "vrndscalesh\[^\n\r\]*xmm\[0-9\]" 24 } } */