[PATCH] D41837: Add Function multiversion to the release notes.

Hans Wennborg via cfe-commits cfe-commits at lists.llvm.org
Wed Jan 17 07:20:18 PST 2018


OK, thanks for clarifying.

On Wed, Jan 17, 2018 at 4:18 PM, Keane, Erich <erich.keane at intel.com> wrote:
> It did not, I held it until just after the branch was made.
>
> -----Original Message-----
> From: hwennborg at google.com [mailto:hwennborg at google.com] On Behalf Of Hans Wennborg
> Sent: Wednesday, January 17, 2018 4:47 AM
> To: reviews+D41837+public+36225483e585112f at reviews.llvm.org
> Cc: Keane, Erich <erich.keane at intel.com>; Richard Smith <richard at metafoo.co.uk>; Aaron Ballman <aaron.ballman at gmail.com>; Eric Christopher <echristo at gmail.com>; cfe-commits <cfe-commits at lists.llvm.org>
> Subject: Re: [PATCH] D41837: Add Function multiversion to the release notes.
>
> Did this functionality land before the 6.0 branch, that is, should we copy the release notes to the branch?
>
> Thanks
> Hans
>
> On Tue, Jan 9, 2018 at 12:37 AM, Erich Keane via Phabricator <reviews at reviews.llvm.org> wrote:
>> This revision was automatically updated to reflect the committed changes.
>> Closed by commit rC322043: Document attribute target multiversioning. (authored by erichkeane, committed by ).
>>
>> Changed prior to commit:
>>   https://reviews.llvm.org/D41837?vs=128982&id=128995#toc
>>
>> Repository:
>>   rC Clang
>>
>> https://reviews.llvm.org/D41837
>>
>> Files:
>>   docs/ReleaseNotes.rst
>>   include/clang/Basic/AttrDocs.td
>>
>>
>> Index: docs/ReleaseNotes.rst
>> ===================================================================
>> --- docs/ReleaseNotes.rst
>> +++ docs/ReleaseNotes.rst
>> @@ -80,6 +80,12 @@
>>  Attribute Changes in Clang
>>  --------------------------
>>
>> +- Clang now supports function multiversioning with attribute 'target'
>> +on ELF
>> +  based x86/x86-64 environments by using indirect functions. This
>> +implementation
>> +  has a few minor limitations over the GCC implementation for the
>> +sake of AST
>> +  sanity, however it is otherwise compatible with existing code using
>> +this
>> +  feature for GCC. Consult the documentation for the target attribute
>> +for more
>> +  information.
>>  - ...
>>
>>  Windows Support
>> Index: include/clang/Basic/AttrDocs.td
>> ===================================================================
>> --- include/clang/Basic/AttrDocs.td
>> +++ include/clang/Basic/AttrDocs.td
>> @@ -1474,6 +1474,24 @@
>>  Example "subtarget features" from the x86 backend include: "mmx",
>> "sse", "sse4.2",  "avx", "xop" and largely correspond to the machine
>> specific options handled by  the front end.
>> +
>> +Additionally, this attribute supports function multiversioning for
>> +ELF based
>> +x86/x86-64 targets, which can be used to create multiple
>> +implementations of the same function that will be resolved at runtime
>> +based on the priority of their ``target`` attribute strings. A
>> +function is considered a multiversioned function if either two
>> +declarations of the function have different ``target`` attribute
>> +  strings, or if it has a ``target`` attribute string of ``default``.
>> +For
>> +  example:
>> +
>> +  .. code-block:: c++
>> +  __attribute__((target("arch=atom")))
>> +  void foo() {} // will be called on 'atom' processors.
>> +  __attribute__((target("default")))
>> +  void foo() {} // will be called on any other processors.
>> +
>> +All multiversioned functions must contain a ``default`` (fallback)
>> +implementation, otherwise usages of the function are considered invalid.
>> +Additionally, a function may not become multiversioned after its first use.
>>  }];
>>  }
>>
>>
>>


More information about the cfe-commits mailing list