[PATCH] [aarch64] Implemented reciprocal square root (rsqrt) estimation in -ffast-math
Dr. Philipp Tomsich
philipp.tomsich@theobroma-systems.com
Wed Jun 24 16:55:00 GMT 2015
Evandro,
We’ve seen a 28% speed-up on gromacs in SPECfp for the (scalar) reciprocal sqrt.
Also, the “reciprocal divide” patches are floating around in various of our git-tree, but
aren’t ready for public consumption, yet… I’ll leave Benedikt to comment on potential
timelines for getting that pushed out.
Best,
Philipp.
> On 24 Jun 2015, at 18:42, Evandro Menezes <e.menezes@samsung.com> wrote:
>
> Benedikt,
>
> You beat me to it! :-) Do you have the implementation for dividing using
> the Newton series as well?
>
> I'm not sure that the series is always for all data types and on all
> processors. It would be useful to allow each AArch64 processor to enable
> this or not depending on the data type. BTW, do you have some tests showing
> the speed up?
>
> Thank you,
>
> --
> Evandro Menezes Austin, TX
>
>> -----Original Message-----
>> From: gcc-patches-owner@gcc.gnu.org [mailto:gcc-patches-owner@gcc.gnu.org]
> On
>> Behalf Of Benedikt Huber
>> Sent: Thursday, June 18, 2015 7:04
>> To: gcc-patches@gcc.gnu.org
>> Cc: benedikt.huber@theobroma-systems.com; philipp.tomsich@theobroma-
>> systems.com
>> Subject: [PATCH] [aarch64] Implemented reciprocal square root (rsqrt)
>> estimation in -ffast-math
>>
>> arch64 offers the instructions frsqrte and frsqrts, for rsqrt estimation
> and
>> a Newton-Raphson step, respectively.
>> There are ARMv8 implementations where this is faster than using fdiv and
>> rsqrt.
>> It runs three steps for double and two steps for float to achieve the
> needed
>> precision.
>>
>> There is one caveat and open question.
>> Since -ffast-math enables flush to zero intermediate values between
>> approximation steps will be flushed to zero if they are denormal.
>> E.g. This happens in the case of rsqrt (DBL_MAX) and rsqrtf (FLT_MAX).
>> The test cases pass, but it is unclear to me whether this is expected
>> behavior with -ffast-math.
>>
>> The patch applies to commit:
>> svn+ssh://gcc.gnu.org/svn/gcc/trunk@224470
>>
>> Please consider including this patch.
>> Thank you and best regards,
>> Benedikt Huber
>>
>> Benedikt Huber (1):
>> 2015-06-15 Benedikt Huber <benedikt.huber@theobroma-systems.com>
>>
>> gcc/ChangeLog | 9 +++
>> gcc/config/aarch64/aarch64-builtins.c | 60 ++++++++++++++++
>> gcc/config/aarch64/aarch64-protos.h | 2 +
>> gcc/config/aarch64/aarch64-simd.md | 27 ++++++++
>> gcc/config/aarch64/aarch64.c | 63 +++++++++++++++++
>> gcc/config/aarch64/aarch64.md | 3 +
>> gcc/testsuite/gcc.target/aarch64/rsqrt.c | 113
>> +++++++++++++++++++++++++++++++
>> 7 files changed, 277 insertions(+)
>> create mode 100644 gcc/testsuite/gcc.target/aarch64/rsqrt.c
>>
>> --
>> 1.9.1
> <Mail Attachment.eml>
More information about the Gcc-patches
mailing list