Ich habe im Internet und intel Software manual gesucht. Ich kann jedoch nicht bestätigen, ob alle Intel 64-Architekturen bis SSSE3 oder bis SSE4.1 oder bis zu SSE4.2 oder AVX usw. unterstützen. Damit wäre es möglich, in meinem Programm mindestens SIMD-unterstützte Anweisungen zu verwenden. Bitte helfen Sie.Unterstützen alle 64-Bit-Intel-Architekturen SSSE3/SSE4.1/SSE4.2-Anweisungen?
Antwort
Ein x64 nativer (AMD64 oder Intel 64) Prozessor ist nur zur Unterstützung von SSE und SSE2 erforderlich.
SSE3 wird von Intel Pentium 4-Prozessoren ("Prescott"), AMD Athlon 64 ("Revision E"), AMD Phenom und späteren Prozessoren unterstützt. Dies bedeutet, dass die meisten, aber nicht alle x64-fähigen CPUs SSE3 unterstützen sollten.
Zusätzliche SSE3 (SSSE3) wird von Intel Core 2 Duo, Intel Core i7/i5/i3, Intel Atom, AMD Bulldozer, AMD Bobcat und späteren Prozessoren unterstützt.
SSE4.1 wird auf Intel Core 2 ("Penryn"), Intel Core i7 ("Nehalem"), Intel Atom (Silvermont Core), AMD Bulldozer, AMD Jaguar und späteren Prozessoren unterstützt.
SSE 4.1 und SSE4.2 werden auf Intel Core i7 ("Nehalem"), Intel Atom (Silvermont-Kern), AMD Bulldozer, AMD Jaguar und späteren Prozessoren unterstützt.
AVX wird von Intel "Sandy Bridge", AMD Bulldozer, AMD Jaguar und späteren Prozessoren unterstützt.
Siehe this blog series.
Eine CPU mit nativer x64-Unterstützung, aber keine SSE3-Unterstützung wird die 64-Bit-Version der ersten Generation sein, die von Windows 8.1 x64 native aufgrund der Anforderungen für CMPXCHG16b, PrefetchW und LAHF/SAHF nicht unterstützt wird; In der Praxis ist SSE3 in neueren Maschinen sehr wahrscheinlich. SSSE3 oder höher ist restriktiver, je nachdem, auf wen Sie genau abzielen. Zum Beispiel setzt die Valve Hardware Survey SSE4.1 auf 77%, SSE 4.2 auf 72% (alles von AMD oder Intel mit SSE4.1 wird auch SSE3 und SSSE3 haben).
Celeron und Pentium-Prozessoren von Sandy Bridge und Haswell unterstützen AVX (oder AVX2) nicht. Ich denke nicht, dass die Atom-Prozessoren auch AVX unterstützen –
Ich denke, das ist wahrscheinlich richtig (nur für SSSE3), aber passen Sie auf AMD64, die in der Regel nicht SSSE3 hat. –
Intel First-Gen-Core2 (Merom/Conroe von 2006) hat SSSE3. AMD PhenomII (k10) ist die neueste Mikroarchitektur, die SSE3/SSSE3 * nicht * hat. Wenn Sie die Runtime-CPU-Erkennung durchführen, um vektorisierte Funktionen zu aktivieren, müssen Sie möglicherweise keine Handschrift für eine SSE2-Version mit intrinsischen Eigenschaften schreiben, z. B. nur eine SSSE3- und eine AVX-Version. Wenn irgendetwas in SSE4.1 viel für Ihren Code hilft (zB 32bit-Integer-Zeug), können Sie auch eine Version für SSE4.1 ohne AVX (für Penryn/Nehalem/Silvermont und verkrüppelte Pentium/Celeron SnB-Familien-CPUs (AVX deaktiviert) erstellen).). –