summaryrefslogtreecommitdiffstats
path: root/include/clang/Basic/X86Target.def
Commit message (Collapse)AuthorAgeFilesLines
* [X86] Add -march=cascadelake support in clang.Craig Topper2018-11-271-0/+4
| | | | | | | | | | This is skylake-avx512 with the addition of avx512vnni ISA. Patch by Jianping Chen Differential Revision: https://reviews.llvm.org/D54792 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@347682 91177308-0d34-0410-b5e6-96231b3b80d8
* [X86] Add new features to the priority list for target attribute ↵Craig Topper2018-10-221-0/+5
| | | | | | multiversioning. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@344929 91177308-0d34-0410-b5e6-96231b3b80d8
* Implement cpu_dispatch/cpu_specific MultiversioningErich Keane2018-07-201-0/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As documented here: https://software.intel.com/en-us/node/682969 and https://software.intel.com/en-us/node/523346. cpu_dispatch multiversioning is an ICC feature that provides for function multiversioning. This feature is implemented with two attributes: First, cpu_specific, which specifies the individual function versions. Second, cpu_dispatch, which specifies the location of the resolver function and the list of resolvable functions. This is valuable since it provides a mechanism where the resolver's TU can be specified in one location, and the individual implementions each in their own translation units. The goal of this patch is to be source-compatible with ICC, so this implementation diverges from the ICC implementation in a few ways: 1- Linux x86/64 only: This implementation uses ifuncs in order to properly dispatch functions. This is is a valuable performance benefit over the ICC implementation. A future patch will be provided to enable this feature on Windows, but it will obviously more closely fit ICC's implementation. 2- CPU Identification functions: ICC uses a set of custom functions to identify the feature list of the host processor. This patch uses the cpu_supports functionality in order to better align with 'target' multiversioning. 1- cpu_dispatch function def/decl: ICC's cpu_dispatch requires that the function marked cpu_dispatch be an empty definition. This patch supports that as well, however declarations are also permitted, since the linker will solve the issue of multiple emissions. Differential Revision: https://reviews.llvm.org/D47474 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@337552 91177308-0d34-0410-b5e6-96231b3b80d8
* [X86] Introduce archs: goldmont-plus & tremontGabor Buella2018-04-161-0/+3
| | | | | | | | | | | | | Reviewers: craig.topper Reviewed By: craig.topper Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D45613 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@330110 91177308-0d34-0410-b5e6-96231b3b80d8
* [X86] Split up -march=icelake to -client & -serverGabor Buella2018-04-101-1/+5
| | | | | | | | | | | | Reviewers: craig.topper, zvi, echristo Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D45056 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@329741 91177308-0d34-0410-b5e6-96231b3b80d8
* Implement Attribute Target MultiVersioningErich Keane2018-01-081-22/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | GCC's attribute 'target', in addition to being an optimization hint, also allows function multiversioning. We currently have the former implemented, this is the latter's implementation. This works by enabling functions with the same name/signature to coexist, so that they can all be emitted. Multiversion state is stored in the FunctionDecl itself, and SemaDecl manages the definitions. Note that it ends up having to permit redefinition of functions so that they can all be emitted. Additionally, all versions of the function must be emitted, so this also manages that. Note that this includes some additional rules that GCC does not, since defining something as a MultiVersion function after a usage has been made illegal. The only 'history rewriting' that happens is if a function is emitted before it has been converted to a multiversion'ed function, at which point its name needs to be changed. Function templates and virtual functions are NOT yet supported (not supported in GCC either). Additionally, constructors/destructors are disallowed, but the former is planned. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@322028 91177308-0d34-0410-b5e6-96231b3b80d8
* [X86] Add icelake CPU support for -march.Craig Topper2017-11-191-0/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@318617 91177308-0d34-0410-b5e6-96231b3b80d8
* Add X86Target.def that was forgotten in r30734Erich Keane2017-11-151-0/+228
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@318345 91177308-0d34-0410-b5e6-96231b3b80d8