SSE4
SSE4 (Streaming SIMD Extensions 4) - це набір SIMD-інструкцій для процесорів архітектури x86-64. Набір інструкцій було анонсовано були 27 вересня 2006 року. Самі інструкції були реалізовані в процесорах Intel Core та AMD K10. В SSE4 налічується 54 інструкцій[1], розділених на дві основні категорії: векторизація операцій для прискорення роботи з медіа, та для обробки тексту.
Intel використовувала маркетингову назву HD Boost для інструкцій SSE4.[2]
Набори інструкцій SSE4
ред.SSE4 Складається з 54 інструкцій. З них 47 відносять до SSE4.1, вони були реалізовані в мікрокархітектурі Peryn, а решта 7 команд (SSE4.2) з'явились лише в процесорах з мікроархитектурою Nehalem.
В AMD процесорах набір інструкцій називається SSE4a, був реалізований в процесорах мікроархітектури Barcelona. Він містить в собі 4 інструкції що відсутні у наборі SSE4.1 від intel. Повний набір інструкцій SSE4 (SSE4.1+SSE4.2) лише в процесорах FX на базі мікроархітектури Bulldozer.
Інструкції
ред.SSE4.1
ред.MPSADBW
Multiple Packed Sums of Absolute Difference. Рахує суму абсолютних різниць восьми значень, по чотири суми за раз (тобто |x0−y0|+|x1−y1|+|x2−y2|+|x3−y3|, |x0−y1|+|x1−y2|+|x2−y3|+|x3−y4|, ..., |x0−y7|+|x1−y8|+|x2−y9|+|x3−y10|). Така операція важлива при роботі деяких HD кодеків,і дозволяє обробити блок зображення 8х8 за декілька циклів процесора.PHMINPOSUW
Packed Horizontal Word Minimum пошук серед 16 бітових беззнакових цілих, такого що має мінімальне значення.PMULDQ
Multiply Packed Signed Dword Integers Множення 32 бітових знакових цілих та повертає результат в 64бітове ціле.PMULLD
Multiply Packed Signed Dword Integers and Store Low Result. Множення 32-бітових знакових цілих та повертає в результат молодшу 32бітну частину.DPPS
,DPPD
Dot Product of Packed Single/Double Precision Floating-Point Values - скалярне множення 32 та 64 бітових цілих.- BLENDPS, BLENDPD, BLENDVPS, BLENDVPD, PBLENDVB, PBLENDW
PMINSB
,PMAXSB
,PMINUW
,PMAXUW
,PMINUD
,PMAXUD
,PMINSD
,PMAXSD
- мінімум,максимум для різних типів.ROUNDPS
,ROUNDSS
,ROUNDPD
,ROUNDSD
- округлення числа з рухомою комою в ціле.- INSERTPS, PINSRB, PINSRD/PINSRQ, EXTRACTPS, PEXTRB, PEXTRD/PEXTRQ
PMOVSXBW
,PMOVZXBW
,PMOVSXBD
,PMOVZXBD
,PMOVSXBQ
,PMOVZXBQ
,PMOVSXWD
,PMOVZXWD
,PMOVSXWQ
,PMOVZXWQ
,PMOVSXDQ
,PMOVZXDQ
Packed Move with Sign/Zero ExtendPTEST
Logical ComparePCMPEQQ
Compare Packed Qword Data for Equal порівняння 64 бітових значень на рівність та повернення 64бітових масокPACKUSDW
Pack with Unsigned Saturation Пакування 32бітних знакових цілих в 16бітні беззнакові з насиченням (буде обрізано до максимального значення - 65536).MOVNTDQA
Load Double Quadword Non-Temporal Aligned Hint - інструкція для ефективного читання даних в SSE-регістр.
SSE4.2
ред.Інструкції для порівняння рядків:
PCMPESTRI
Packed Compare Explicit Length Strings, Return IndexPCMPESTRM
Packed Compare Explicit Length Strings, Return MaskPCMPISTRI
Packed Compare Implicit Length Strings, Return Index Порівнюють дані як .PCMPISTRM
Packed Compare Implicit Length Strings, Return MaskPCMPGTQ
- Порівняння спакованого набору 64бітових даних на "більше ніж"POPCNT
- Рахує кількість бітів що дорівнюють одиниці.LZCNT
- рахує кількість провідних нулів.- CRC32 - пришвидшує вирахування CRC32
SSE4a
ред.EXTRQ
/INSERTQ
MOVNTSD
/MOVNTSS