[PATCH] BZ #14649: Add multiarch FMA support to x86-64 libm

Andreas Jaeger aj@suse.com
Tue Oct 2 14:50:00 GMT 2012


On 10/02/2012 04:34 PM, H.J. Lu wrote:
> On Tue, Oct 2, 2012 at 12:03 AM, Andreas Jaeger <aj@suse.com> wrote:
>> On 10/01/2012 08:49 PM, H.J. Lu wrote:
>>>
>>> On Mon, Oct 1, 2012 at 10:56 AM, Andreas Jaeger <aj@suse.com> wrote:
>>>>
>>>> On 10/01/2012 05:14 PM, H.J. Lu wrote:
>>>>>
>>>>>
>>>>> Hi,
>>>>>
>>>>> This patch adds multiarch FMA support to x86-64 libm.  Tested on
>>>>> FMA machine.  OK for master?
>>>>
>>>>
>>>>
>>>> What kind of performance benefits does it bring us? Are you sure that all
>>>
>>>
>>> I don't have any performance numbers.  My patch just
>>> enables FMA optimization, similar to FMA4 optimization.
>>
>>
>> Could you test at least one of these functions to see whether it makes a
>> difference at all, please?
>
> It works correctly on FMA machine.  I will send a separate patch
> to update x86-64 ULPs due to FMA instructions.  FMA functions
> are a little bit smaller than SSE/AVX version.

What about performance? For such a change I don't think it's 
unreasonable to ask for some numbers...

>>>> the functions you enhance are really using fma and thus benefit from the
>>>> change?
>>>
>>>
>>> Not all FMA/FMA4 functions have FMA/FMA4 instructions.  We should
>>> take a look and use AVX functions instead.
>>
>>
>> So, let's only add those functions that really benefit from this.
>>
>
> Since functions in libm are implemented by calling each other,
> all functions called from a libm function compiled for FMA must
> also be compiled by FMA with _fma as the suffix in their symbol
> names.  Otherwise, wrong functions may be called.   One way

Really?

If func a calls b, then a can be fma optimized but b does not need to 
be. Why does a_fma need to call b_fma instead of b?



> to address t is to add multi-arch support to all libm internal functions
> so that the right functions will always be used.  But it is a much
> bigger change and will introduce run-time IFUNC relocations.
> It may save some text space since AVX, FMA and FMA4 versions
> can share AVX version if no FMA instructions are used.
>
> Here is the updated patch with -mfma check.  OK to install?

Andreas
-- 
  Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi
   SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
    GF: Jeff Hawn,Jennifer Guild,Felix Imendörffer,HRB16746 (AG Nürnberg)
     GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126



More information about the Libc-alpha mailing list