On Wed, May 2, 2012 at 10:44 AM, Sriraman Tallam <tmsri...@google.com> wrote:
>>>>
>>>> 1.  Since AVX > SSE4 > SSSE3 > SSE3 > SSE2 > SSE, with
>>>> foo for AVX and SSE3, on AVX processors, which foo will be
>>>> selected?
>>>
>>> foo for AVX will get called since that appears ahead.
>>>
>>> The dispatching is done in the same order in which the functions are
>>> specified. If, potentially, two foo versions can be dispatched for an
>>> architecture, the first foo will get called.  There is no way right
>>> now to specify the order in which the dispatching should be done.
>>
>> This is very fragile.  We know ISAs and processors.  The source
>> order should be irrelevant.
>
> I am not sure it is always possible keep this dispatching unambiguous
> to the user. It might be better to let the user specify a priority for
> each version to control the order of dispatching.
>
>  Still, one way to implement what you said is to assign a significance
> number to each ISA, where the number of sse4 > sse, for instance.
> Then, the dispatching can be done in the descending order of
> significance. What do you think?

This sounds reasonable.  You should also take processor into
account when doing this.

> I thought about this earlier and I was thinking along the lines of
> letting the user specify a priority for each version, when there is
> ambiguity.
>
>>
>>>
>>>> 2.  I don't see any tests for __builtin_cpu_supports ("XXX")
>>>> nor __builtin_cpu_is ("XXX").  I think you need tests for
>>>> them.
>>>
>>> This is already there as part of the previous CPU detection patch that
>>> was submitted. Please see gcc.target/i386/builtin_target.c. Did you
>>> want something else?
>>
>> gcc.target/i386/builtin_target.c doesn't test if __builtin_cpu_supports 
>> ("XXX")
>> and __builtin_cpu_is ("XXX") are implemented correctly.
>
> Oh, you mean like doing a CPUID again in the test case itself and checking, 
> ok.
>

Yes. BTW,  I think you should also add FMA support to
config/i386/i386-cpuinfo.c.

Thanks.

-- 
H.J.

Reply via email to