From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: libc-alpha@sourceware.org
Subject: Re: [PATCH 01/17] S390: Use load-fp-integer instruction for nearbyint functions.
Date: Mon, 04 Nov 2019 18:22:00 -0000 [thread overview]
Message-ID: <fc754475-f2cd-cb07-c527-1ccc567a4868@linaro.org> (raw)
In-Reply-To: <1572881244-6781-1-git-send-email-stli@linux.ibm.com>
On 04/11/2019 12:27, Stefan Liebler wrote:
> If compiled with z196 zarch support, the load-fp-integer instruction
> is used to implement nearbyint, nearbyintf, nearbyintl.
> Otherwise the common-code implementation is used.
> +
> +double
> +__nearbyint (double x)
> +{
> + double y;
> + /* The z196 zarch "load fp integer" (fidbra) instruction is rounding
> + x to the nearest integer according to current rounding mode (M3-field: 0)
> + where inexact exceptions are suppressed (M4-field: 4). */
> + __asm__ ("fidbra %0,0,%1,4" : "=f" (y) : "f" (x));
> + return y;
> +}
> +libm_alias_double (__nearbyint, nearbyint)
At least with recent gcc __builtin_nearbyint generates the expected fidbra
instruction for -march=z196. I wonder if we could start to simplify some
math symbols implementation where new architectures/extensions provide
direct implementation by a direct mapping implemented by compiler builtins.
I would expect to:
1. Move all sysdeps/ieee754/dbl-64/wordsize-64 to sysdeps/ieee754/dbl-64/
since I hardly doubt these micro-optimizations really pay off with
recent architectures and compiler version.
2. Add internal macros __USE_<SYMBOL>_BUILTIN and use as:
* sysdeps/ieee754/dbl-64/s_nearbyint.c
[...]
double
__nearbyint (double x)
{
#if __USE_NEARBYINT_BUILTIN
return __builtin_nearbyint (x);
#else
/* Use generic implementation. */
#endif
}
3. Define the __USE_<SYMBOL>_BUILTIN for each architecture.
It would allow to simplify some architectures, aarch64 for instance.
next prev parent reply other threads:[~2019-11-04 18:22 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-04 15:28 Stefan Liebler
2019-11-04 15:28 ` [PATCH 10/17] S390: Use convert-to-fixed instruction for lround functions Stefan Liebler
2019-12-02 14:56 ` Stefan Liebler
2019-11-04 15:28 ` [PATCH 15/17] S390: Implement math-barriers math_opt_barrier and math_force_eval Stefan Liebler
2019-12-02 14:57 ` Stefan Liebler
2019-11-04 15:28 ` [PATCH 04/17] S390: Use load-fp-integer instruction for ceil functions Stefan Liebler
2019-12-02 14:56 ` Stefan Liebler
2019-11-04 15:28 ` [PATCH 17/17] S390: Use sysdeps/ieee754/dbl-64/wordsize-64 on s390x Stefan Liebler
2019-12-02 14:57 ` Stefan Liebler
2019-11-04 15:28 ` [PATCH 13/17] S390: Implement libc_fe* macros Stefan Liebler
2019-12-02 14:58 ` Stefan Liebler
2019-11-04 15:28 ` [PATCH 06/17] S390: Use load-fp-integer instruction for round functions Stefan Liebler
2019-12-02 14:58 ` Stefan Liebler
2019-11-04 15:28 ` [PATCH 03/17] S390: Use load-fp-integer instruction for floor functions Stefan Liebler
2019-12-02 14:56 ` Stefan Liebler
2019-11-04 15:28 ` [PATCH 05/17] S390: Use load-fp-integer instruction for trunc functions Stefan Liebler
2019-12-02 14:57 ` Stefan Liebler
2019-11-04 15:28 ` [PATCH 12/17] S390: Use copy-sign instruction for copysign functions Stefan Liebler
2019-12-02 14:57 ` Stefan Liebler
2019-11-04 15:28 ` [PATCH 07/17] S390: Use load-fp-integer instruction for roundeven functions Stefan Liebler
2019-12-02 15:04 ` Stefan Liebler
2019-12-11 14:18 ` Stefan Liebler
2019-11-04 15:28 ` [PATCH 08/17] S390: Use convert-to-fixed instruction for lrint functions Stefan Liebler
2019-12-02 14:57 ` Stefan Liebler
2019-11-04 15:49 ` [PATCH 16/17] S390: Implement roundtoint and converttoint and define TOINT_INTRINSICS Stefan Liebler
2019-12-02 14:57 ` Stefan Liebler
2019-11-04 15:54 ` [PATCH 02/17] S390: Use load-fp-integer instruction for rint functions Stefan Liebler
2019-12-02 14:57 ` Stefan Liebler
2019-11-04 16:04 ` [PATCH 14/17] S390: Use libc_fe* macros in fe* functions Stefan Liebler
2019-12-02 14:56 ` Stefan Liebler
2019-11-04 16:27 ` [PATCH 11/17] S390: Use convert-to-fixed instruction for llround functions Stefan Liebler
2019-12-02 14:57 ` Stefan Liebler
2019-11-04 16:28 ` [PATCH 09/17] S390: Use convert-to-fixed instruction for llrint functions Stefan Liebler
2019-12-02 14:57 ` Stefan Liebler
2019-11-04 18:22 ` Adhemerval Zanella [this message]
2019-11-05 15:49 ` [PATCH 01/17] S390: Use load-fp-integer instruction for nearbyint functions Stefan Liebler
2019-11-05 16:48 ` Joseph Myers
2019-11-05 18:55 ` Adhemerval Zanella
2019-12-02 14:56 ` Stefan Liebler
2019-12-02 15:20 ` Adhemerval Zanella
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=fc754475-f2cd-cb07-c527-1ccc567a4868@linaro.org \
--to=adhemerval.zanella@linaro.org \
--cc=libc-alpha@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).