Deaktivieren Sie die AVX2-Funktionen auf Nicht-Haswell-Prozessoren

Ich habe AVX2-Code geschrieben, der auf einem Haswell i7-Prozessor ausgeführt werden soll. Dieselbe Codebasis wird auch auf Nicht-Haswell-Prozessoren verwendet, bei denen derselbe Code durch ihre SSE-Entsprechungen ersetzt werden sollte. Ich habe mich gefragt, ob es für den Compiler eine Möglichkeit gibt, AVX2-Anweisungen auf Nicht-Haswell-Prozessoren zu ignorieren. Ich brauche so etwas wie:

public void useSSEorAVX(...){
    IF (compiler directive detected AVX2)
        AVX2 code (this part is ready)
    ELSE
        SSE code  (this part is also ready)
    }
}

Im Moment kommentiere ich verwandten Code aus, bevor ich ihn kompiliere, aber es muss einen effizienteren Weg geben, dies zu tun. Ich benutze Ubuntu und gcc. Danke für Ihre Hilfe.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage