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:

committed by
Todd Gamblin

parent
0fb563f3d9
commit
41fb0395a6
@@ -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
|
||||
|
@@ -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": {
|
||||
|
Reference in New Issue
Block a user