[cfe-dev] Implementing OpenMP function variants

John McCall via cfe-dev cfe-dev at lists.llvm.org
Wed Dec 18 12:18:24 PST 2019


On 18 Dec 2019, at 15:02, Doerfert, Johannes wrote:
> On 12/18, John McCall wrote:
>> On 18 Dec 2019, at 14:25, Doerfert, Johannes wrote:
>>> On 12/18, John McCall wrote:
>>>> On 18 Dec 2019, at 11:16, Doerfert, Johannes wrote:
>>>>> Is there a good reason to make 5.1-type variants different from
>>>>> multi-versions (as we have them)? They do not depend on the 
>>>>> lexical call
>>>>> context but only on the compilation parameters.
>>>>
>>>> Are multi-versions yet another feature?  Do they interact with this 
>>>> one?
>>>
>>> In 5.1, `begin/end declare variant` multi-version a function 
>>> basically
>>> the same way as `__attribute__((target(...)))` does. The condition 
>>> can
>>> be more than only a target though. (I mispoke earlier, it can 
>>> include
>>> call site context information). So we have multiple versions of a
>>> function, let's say "sin", and depending on the compilation target,
>>> e.g., are we compiling for nvptx or not, ans call site context, 
>>> e.g.,
>>> are we syntacitally inside a parallel region, we pick on of them. 
>>> The
>>> prototype for this reuses almost all of the multi-version code that
>>> enables the target attribute as it seemed to be the natural fit.
>>
>> I see.  And that’s still totally statically selected at use time, 
>> right?
>
> Yes, as of OpenMP TR8 (Nov this year). But (to me) it is fairly 
> certain
> we'll also get an dynamic dispatch version too, maybe even this year 
> (for
> OpenMP 5.1).

A dynamic version of `__attribute__((target))`, or of variants, or both?

John.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20191218/29d718c8/attachment.html>


More information about the cfe-dev mailing list