Fixed x86-64 optimization flags for clang (#13913)
* Fixed x86-64 optimization flags for clang * Fixed expected results in unit tests Before the flags used where the one for llc, the underlying compiler from LLVM IR to machine assembly. It turns out that the semantic of `-march`, `-mtune` and `-mcpu` changes from clang front-end to llc. I found no definitive reference for the flags submitted in this PR, but I checked the assembly on a vectorizable function using Godbolt's web-site.
This commit is contained in:
parent
728f5a76f3
commit
e9f027210f
@ -64,13 +64,13 @@
|
|||||||
"clang": [
|
"clang": [
|
||||||
{
|
{
|
||||||
"versions": "0.0.0-apple:",
|
"versions": "0.0.0-apple:",
|
||||||
"family": "x86-64",
|
"name": "x86-64",
|
||||||
"flags": "-march={family}"
|
"flags": "-march={name}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"versions": ":",
|
"versions": ":",
|
||||||
"family": "x86-64",
|
"name": "x86-64",
|
||||||
"flags": "-march={family} -mcpu=generic"
|
"flags": "-march={name} -mtune=generic"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"intel": {
|
"intel": {
|
||||||
@ -96,8 +96,7 @@
|
|||||||
},
|
},
|
||||||
"clang": {
|
"clang": {
|
||||||
"versions": "3.9:",
|
"versions": "3.9:",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": {
|
"intel": {
|
||||||
"versions": "16.0:",
|
"versions": "16.0:",
|
||||||
@ -122,8 +121,7 @@
|
|||||||
},
|
},
|
||||||
"clang": {
|
"clang": {
|
||||||
"versions": "3.9:",
|
"versions": "3.9:",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": {
|
"intel": {
|
||||||
"versions": "16.0:",
|
"versions": "16.0:",
|
||||||
@ -157,8 +155,7 @@
|
|||||||
],
|
],
|
||||||
"clang": {
|
"clang": {
|
||||||
"versions": "3.9:",
|
"versions": "3.9:",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": {
|
"intel": {
|
||||||
"versions": "16.0:",
|
"versions": "16.0:",
|
||||||
@ -188,8 +185,7 @@
|
|||||||
},
|
},
|
||||||
"clang": {
|
"clang": {
|
||||||
"versions": "3.9:",
|
"versions": "3.9:",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": {
|
"intel": {
|
||||||
"versions": "16.0:",
|
"versions": "16.0:",
|
||||||
@ -227,8 +223,7 @@
|
|||||||
],
|
],
|
||||||
"clang": {
|
"clang": {
|
||||||
"versions": "3.9:",
|
"versions": "3.9:",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": [
|
"intel": [
|
||||||
{
|
{
|
||||||
@ -274,8 +269,7 @@
|
|||||||
],
|
],
|
||||||
"clang": {
|
"clang": {
|
||||||
"versions": "3.9:",
|
"versions": "3.9:",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": [
|
"intel": [
|
||||||
{
|
{
|
||||||
@ -326,8 +320,7 @@
|
|||||||
],
|
],
|
||||||
"clang": {
|
"clang": {
|
||||||
"versions": "3.9:",
|
"versions": "3.9:",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": [
|
"intel": [
|
||||||
{
|
{
|
||||||
@ -373,8 +366,7 @@
|
|||||||
},
|
},
|
||||||
"clang": {
|
"clang": {
|
||||||
"versions": "3.9:",
|
"versions": "3.9:",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": {
|
"intel": {
|
||||||
"versions": "18.0:",
|
"versions": "18.0:",
|
||||||
@ -416,8 +408,7 @@
|
|||||||
},
|
},
|
||||||
"clang": {
|
"clang": {
|
||||||
"versions": "3.9:",
|
"versions": "3.9:",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": {
|
"intel": {
|
||||||
"versions": "18.0:",
|
"versions": "18.0:",
|
||||||
@ -463,8 +454,7 @@
|
|||||||
"clang": {
|
"clang": {
|
||||||
"versions": "3.9:",
|
"versions": "3.9:",
|
||||||
"name": "knl",
|
"name": "knl",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": {
|
"intel": {
|
||||||
"versions": "18.0:",
|
"versions": "18.0:",
|
||||||
@ -515,8 +505,7 @@
|
|||||||
"clang": {
|
"clang": {
|
||||||
"versions": "3.9:",
|
"versions": "3.9:",
|
||||||
"name": "skylake-avx512",
|
"name": "skylake-avx512",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": {
|
"intel": {
|
||||||
"versions": "18.0:",
|
"versions": "18.0:",
|
||||||
@ -568,8 +557,7 @@
|
|||||||
},
|
},
|
||||||
"clang": {
|
"clang": {
|
||||||
"versions": "3.9:",
|
"versions": "3.9:",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": {
|
"intel": {
|
||||||
"versions": "18.0:",
|
"versions": "18.0:",
|
||||||
@ -618,8 +606,7 @@
|
|||||||
},
|
},
|
||||||
"clang": {
|
"clang": {
|
||||||
"versions": "8.0:",
|
"versions": "8.0:",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": {
|
"intel": {
|
||||||
"versions": "19.0:",
|
"versions": "19.0:",
|
||||||
@ -685,13 +672,11 @@
|
|||||||
{
|
{
|
||||||
"versions": "7.0:",
|
"versions": "7.0:",
|
||||||
"name": "icelake-client",
|
"name": "icelake-client",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"versions": "6.0:6.9",
|
"versions": "6.0:6.9",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"intel": {
|
"intel": {
|
||||||
@ -723,8 +708,7 @@
|
|||||||
"clang": {
|
"clang": {
|
||||||
"versions": "3.9:",
|
"versions": "3.9:",
|
||||||
"name": "amdfam10",
|
"name": "amdfam10",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": {
|
"intel": {
|
||||||
"versions": "16.0:",
|
"versions": "16.0:",
|
||||||
@ -761,8 +745,7 @@
|
|||||||
"clang": {
|
"clang": {
|
||||||
"versions": "3.9:",
|
"versions": "3.9:",
|
||||||
"name": "bdver1",
|
"name": "bdver1",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": {
|
"intel": {
|
||||||
"versions": "16.0:",
|
"versions": "16.0:",
|
||||||
@ -803,8 +786,7 @@
|
|||||||
"clang": {
|
"clang": {
|
||||||
"versions": "3.9:",
|
"versions": "3.9:",
|
||||||
"name": "bdver2",
|
"name": "bdver2",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": {
|
"intel": {
|
||||||
"versions": "16.0:",
|
"versions": "16.0:",
|
||||||
@ -846,8 +828,7 @@
|
|||||||
"clang": {
|
"clang": {
|
||||||
"versions": "3.9:",
|
"versions": "3.9:",
|
||||||
"name": "bdver3",
|
"name": "bdver3",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": {
|
"intel": {
|
||||||
"versions": "16.0:",
|
"versions": "16.0:",
|
||||||
@ -892,8 +873,7 @@
|
|||||||
"clang": {
|
"clang": {
|
||||||
"versions": "3.9:",
|
"versions": "3.9:",
|
||||||
"name": "bdver4",
|
"name": "bdver4",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": {
|
"intel": {
|
||||||
"versions": "16.0:",
|
"versions": "16.0:",
|
||||||
@ -942,8 +922,7 @@
|
|||||||
"clang": {
|
"clang": {
|
||||||
"versions": "4.0:",
|
"versions": "4.0:",
|
||||||
"name": "znver1",
|
"name": "znver1",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": {
|
"intel": {
|
||||||
"versions": "16.0:",
|
"versions": "16.0:",
|
||||||
@ -993,8 +972,7 @@
|
|||||||
"clang": {
|
"clang": {
|
||||||
"versions": "9.0:",
|
"versions": "9.0:",
|
||||||
"name": "znver2",
|
"name": "znver2",
|
||||||
"family": "x86-64",
|
"flags": "-march={name} -mtune={name}"
|
||||||
"flags": "-march={family} -mcpu={name}"
|
|
||||||
},
|
},
|
||||||
"intel": {
|
"intel": {
|
||||||
"versions": "16.0:",
|
"versions": "16.0:",
|
||||||
|
@ -176,7 +176,7 @@ def test_arch_spec_container_semantic(item, architecture_str):
|
|||||||
('gcc@4.7.2', 'ivybridge', '-march=core-avx-i -mtune=core-avx-i'),
|
('gcc@4.7.2', 'ivybridge', '-march=core-avx-i -mtune=core-avx-i'),
|
||||||
# Check mixed toolchains
|
# Check mixed toolchains
|
||||||
('clang@8.0.0', 'broadwell', ''),
|
('clang@8.0.0', 'broadwell', ''),
|
||||||
('clang@3.5', 'x86_64', '-march=x86-64 -mcpu=generic'),
|
('clang@3.5', 'x86_64', '-march=x86-64 -mtune=generic'),
|
||||||
# Check clang compilers with 'apple' suffix
|
# Check clang compilers with 'apple' suffix
|
||||||
('clang@9.1.0-apple', 'x86_64', '-march=x86-64')
|
('clang@9.1.0-apple', 'x86_64', '-march=x86-64')
|
||||||
])
|
])
|
||||||
|
@ -213,10 +213,11 @@ def test_target_json_schema():
|
|||||||
('thunderx2', 'gcc', '4.8.5', '-march=armv8-a'),
|
('thunderx2', 'gcc', '4.8.5', '-march=armv8-a'),
|
||||||
('thunderx2', 'gcc', '4.9.3', '-march=armv8-a+crc+crypto'),
|
('thunderx2', 'gcc', '4.9.3', '-march=armv8-a+crc+crypto'),
|
||||||
# Test Clang / LLVM
|
# Test Clang / LLVM
|
||||||
('sandybridge', 'clang', '3.9.0', '-march=x86-64 -mcpu=sandybridge'),
|
('sandybridge', 'clang', '3.9.0', '-march=sandybridge -mtune=sandybridge'),
|
||||||
('icelake', 'clang', '6.0.0', '-march=x86-64 -mcpu=icelake'),
|
('icelake', 'clang', '6.0.0', '-march=icelake -mtune=icelake'),
|
||||||
('icelake', 'clang', '8.0.0', '-march=x86-64 -mcpu=icelake-client'),
|
('icelake', 'clang', '8.0.0',
|
||||||
('zen2', 'clang', '9.0.0', '-march=x86-64 -mcpu=znver2'),
|
'-march=icelake-client -mtune=icelake-client'),
|
||||||
|
('zen2', 'clang', '9.0.0', '-march=znver2 -mtune=znver2'),
|
||||||
('power9le', 'clang', '8.0.0', '-march=ppc64le -mcpu=pwr9'),
|
('power9le', 'clang', '8.0.0', '-march=ppc64le -mcpu=pwr9'),
|
||||||
('thunderx2', 'clang', '6.0.0', '-march=armv8-a -mcpu=generic'),
|
('thunderx2', 'clang', '6.0.0', '-march=armv8-a -mcpu=generic'),
|
||||||
# Test Intel on Intel CPUs
|
# Test Intel on Intel CPUs
|
||||||
|
Loading…
Reference in New Issue
Block a user