Microarchitecture specific optimizations for LLVM (#13250)

* Added architecture specific optimization flags for Clang / LLVM
* Disallow compiler optimizations for mixed toolchains
    * We emit a warning when building for a mixed toolchain
* Fixed issues with suffixed versions of compilers; Apple's Clang will, 
    for the time being, fall back on x86-64 for every compilation.
This commit is contained in:
Massimiliano Culpo
2019-10-19 22:19:29 +02:00
committed by Todd Gamblin
parent 0fb563f3d9
commit 41fb0395a6
9 changed files with 292 additions and 10 deletions

View File

@@ -224,7 +224,8 @@ def satisfies_constraint(entry, version):
version, _, suffix = version.partition('-')
# If the suffixes are not all equal there's no match
if suffix != min_suffix or suffix != max_suffix:
if ((suffix != min_suffix and min_version) or
(suffix != max_suffix and max_version)):
return False
# Assume compiler versions fit into semver

View File

@@ -60,7 +60,12 @@
"name": "x86-64",
"flags": "-march={name} -mtune={name}"
}
]
],
"clang": {
"versions": ":",
"family": "x86-64",
"flags": "-march={family} -mcpu=generic"
}
}
},
"nocona": {
@@ -76,6 +81,11 @@
"gcc": {
"versions": "4:",
"flags": "-march={name} -mtune={name}"
},
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -92,6 +102,11 @@
"gcc": {
"versions": "4:",
"flags": "-march={name} -mtune={name}"
},
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -118,7 +133,12 @@
"name": "corei7",
"flags": "-march={name} -mtune={name}"
}
]
],
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
"westmere": {
@@ -139,6 +159,11 @@
"gcc": {
"versions": "4.9:",
"flags": "-march={name} -mtune={name}"
},
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -168,7 +193,12 @@
"name": "corei7-avx",
"flags": "-march={name} -mtune={name}"
}
]
],
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
"ivybridge": {
@@ -199,7 +229,12 @@
"name": "core-avx-i",
"flags": "-march={name} -mtune={name}"
}
]
],
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
"haswell": {
@@ -235,7 +270,12 @@
"name": "core-avx2",
"flags": "-march={name} -mtune={name}"
}
]
],
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
"broadwell": {
@@ -266,6 +306,11 @@
"gcc": {
"versions": "4.9:",
"flags": "-march={name} -mtune={name}"
},
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -300,6 +345,11 @@
"gcc": {
"versions": "5.3:",
"flags": "-march={name} -mtune={name}"
},
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -337,6 +387,12 @@
"versions": "5.1:",
"name": "knl",
"flags": "-march={name} -mtune={name}"
},
"clang": {
"versions": "3.9:",
"name": "knl",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -378,6 +434,12 @@
"name": "skylake-avx512",
"versions": "5.3:",
"flags": "-march={name} -mtune={name}"
},
"clang": {
"versions": "3.9:",
"name": "skylake-avx512",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -421,6 +483,11 @@
"gcc": {
"versions": "8:",
"flags": "-march={name} -mtune={name}"
},
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -462,6 +529,11 @@
"gcc": {
"versions": "9:",
"flags": "-march={name} -mtune={name}"
},
"clang": {
"versions": "8.0:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -518,7 +590,20 @@
"name": "icelake-client",
"versions": "8:",
"flags": "-march={name} -mtune={name}"
}
},
"clang": [
{
"versions": "7.0:",
"name": "icelake-client",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
},
{
"versions": "6.0:6.9",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
]
}
},
"bulldozer": {
@@ -545,6 +630,12 @@
"name": "bdver1",
"versions": "4.6:",
"flags": "-march={name} -mtune={name}"
},
"clang": {
"versions": "3.9:",
"name": "bdver1",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -576,6 +667,12 @@
"name": "bdver2",
"versions": "4.7:",
"flags": "-march={name} -mtune={name}"
},
"clang": {
"versions": "3.9:",
"name": "bdver2",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -608,6 +705,12 @@
"name": "bdver3",
"versions": "4.8:",
"flags": "-march={name} -mtune={name}"
},
"clang": {
"versions": "3.9:",
"name": "bdver3",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -643,6 +746,12 @@
"name": "bdver4",
"versions": "4.9:",
"flags": "-march={name} -mtune={name}"
},
"clang": {
"versions": "3.9:",
"name": "bdver4",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -681,6 +790,12 @@
"name": "znver1",
"versions": "6:",
"flags": "-march={name} -mtune={name}"
},
"clang": {
"versions": "4.0:",
"name": "znver1",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -720,6 +835,12 @@
"name": "znver2",
"versions": "9:",
"flags": "-march={name} -mtune={name}"
},
"clang": {
"versions": "9.0:",
"name": "znver2",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -732,6 +853,11 @@
"name": "powerpc64",
"versions": "4:",
"flags": "-mcpu={name} -mtune={name}"
},
"clang": {
"versions": ":",
"family": "ppc64",
"flags": "-march={family} -mcpu=generic"
}
}
},
@@ -744,6 +870,12 @@
"gcc": {
"versions": "4.5:",
"flags": "-mcpu={name} -mtune={name}"
},
"clang": {
"versions": "3.9:",
"family": "ppc64",
"name": "pwr7",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -763,7 +895,13 @@
"warnings": "Using GCC 4.8 to optimize for Power 8 might not work if you are not on Red Hat Enterprise Linux 7, where a custom backport of the feature has been done. Upstream support from GCC starts in version 4.9",
"flags": "-mcpu={name} -mtune={name}"
}
]
],
"clang": {
"versions": "3.9:",
"family": "ppc64",
"name": "pwr8",
"flags": "-march={family} -mcpu={name}"
}
}
},
"power9": {
@@ -775,6 +913,12 @@
"gcc": {
"versions": "6:",
"flags": "-mcpu={name} -mtune={name}"
},
"clang": {
"versions": "3.9:",
"family": "ppc64",
"name": "pwr9",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -787,6 +931,11 @@
"name": "powerpc64le",
"versions": "4:",
"flags": "-mcpu={name} -mtune={name}"
},
"clang": {
"versions": ":",
"family": "ppc64le",
"flags": "-march={family} -mcpu=generic"
}
}
},
@@ -808,7 +957,13 @@
"name": "power8",
"flags": "-mcpu={name} -mtune={name}"
}
]
],
"clang": {
"versions": "3.9:",
"family": "ppc64le",
"name": "pwr8",
"flags": "-march={family} -mcpu={name}"
}
}
},
"power9le": {
@@ -821,6 +976,12 @@
"name": "power9",
"versions": "6:",
"flags": "-mcpu={name} -mtune={name}"
},
"clang": {
"versions": "3.9:",
"family": "ppc64le",
"name": "pwr9",
"flags": "-march={family} -mcpu={name}"
}
}
},
@@ -832,6 +993,11 @@
"gcc": {
"versions": "4:",
"flags": "-march=armv8-a -mtune=generic"
},
"clang": {
"versions": ":",
"family": "aarch64",
"flags": "-march={family} -mcpu=generic"
}
}
},
@@ -840,6 +1006,11 @@
"vendor": "generic",
"features": [],
"compilers": {
"clang": {
"versions": ":",
"family": "arm",
"flags": "-march={family} -mcpu=generic"
}
}
},
"ppc": {