diff options
author | liuhongt <hongtao.liu@intel.com> | 2021-09-24 19:17:42 +0800 |
---|---|---|
committer | liuhongt <hongtao.liu@intel.com> | 2021-10-08 10:09:55 +0800 |
commit | 613196462a62a28de8414b9023ec2be9a29ac3dc (patch) | |
tree | 78d57aa8ddeb6ac147d6a534a154c9225ff36e43 /gcc/testsuite | |
parent | 77ca2cfcdcccee3c8e8aeaf1d03e9920893d2486 (diff) | |
download | gcc-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.c | 39 |
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 } } */ |