Ich habe diesen LWN-Artikel mit großem Interesse gelesen. Zusammenfassung: GCC 6.x unterstützt etwas namens function multi-versioning, das mehrere Versionen der gleichen Funktion erstellt, die für verschiedene Befehlssätze optimiert sind. Nehmen wir an, Sie haben eine Maschine mit AVX2-Unterstützung und eine ohne. Es ist möglich, dieselbe Binärdatei auf beiden zu verwenden, wobei die Funktion foo () in zwei Versionen existiert, von denen eine AVX2-Anweisungen verwendet. Die Funktion mit den AVX2-Anweisungen wird jedoch nur aufgerufen, wenn die CPU dies unterstützt.
Meine Frage ist: Unterstützt clang etwas Ähnliches? Es scheint nicht das fortschrittlichste Feature der Welt zu sein.
Sie sagte , dass es vor etwa drei Jahren in Entwicklung ist . Aber anscheinend ist es noch in der Entwicklung. Sie haben es danach nie erwähnt (soweit ich weiß) und die Dokumentation sagt nichts darüber aus.
Sie können dies jedoch manuell tun, indem Sie ifunc und verwenden Die target Attribute zusammen.
Tags und Links gcc clang compiler-optimization