Wie um zu überprüfen, mit Intel-Interna wenn AVX-Erweiterungen unterstützt wird die CPU?

Ich Schreibe ein Programm mit der Intel-Interna. Ich will _mm_permute_pd intrinsische, die nur auf CPUs mit AVX. Für CPUs ohne AVX, die ich verwenden kann _mm_shuffle_pd aber nach den Spezifikationen, ist es viel langsamer als _mm_permute_pd. Tun die header-Dateien für Intel-Interna Konstanten definieren, die mir erlauben, zu unterscheiden, ob AVX unterstützt, so dass ich schreiben kann, sth wie diese:

#ifdef __IS_AVX_SUPPORTED__  //is there sth like this defined?
//use _mm_permute_pd
# else
//use _mm_shuffle_pd
#endif

? Ich habe festgestellt dieses tutorial, die zeigt, wie führen Sie eine Laufzeit überprüfen, aber ich brauche eine statische, compile-time check für die aktuelle Maschine.

  • _mm_permute_pd (vpermilpd) ist nicht schneller als shufpd dest,same,same, es sei denn, es ermöglicht einem Speicher-source-operand zu Falten in die Anleitung. Siehe agner.org/optimize für den Unterricht Tabellen, etc.
InformationsquelleAutor Jan Stolarek | 2014-06-17
Schreibe einen Kommentar