[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