Document attribute target multiversioning.

Add attribute target multiversioning to the release notes. 
Additionally adds multiversioning support to the attribute
documentation for 'target'.

Differential Revision: https://reviews.llvm.org/D41837

llvm-svn: 322043
This commit is contained in:
Erich Keane 2018-01-08 23:36:29 +00:00
parent c1ca8065b5
commit ace10a20a6
2 changed files with 24 additions and 0 deletions

View File

@ -80,6 +80,12 @@ Clang now supports the ...
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

View File

@ -1474,6 +1474,24 @@ for the function.
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.
}];
}