Кіріспе

SIMD нұсқаулар жиынтығы. Supplemental Streaming SIMD Extensions 3 (SSSE3 немесе SSE3S) – Intel компаниясы жасаған SIMD нұсқаулар жиынтығы және SSE технологиясының төртінші нұсқасы.

Тарих

SSSE3 алғаш рет 2006 жылғы 26 маусымда Core микроархитектурасына негізделген Intel процессорларымен, "Woodcrest" Xeons процессорлары арқылы енгізілді. SSSE3-ті қолдау үшін жасалған алғашқы процессор дизайндары Tejas New Instructions (TNI) немесе Merom New Instructions (MNI) деп аталды. SSSE3, мысалы AAC сияқты, жоғары сапалы аудио/видео кодтау және декодтау үшін жақсартылған.

Функционалдылығы

SSSE3 16 жаңа дискретті нұсқауды қамтиды. Әрбір нұсқау 64 биттік MMX немесе 128 биттік XMM тіркелгіштерімен жұмыс істей алады. Сондықтан Intel материалдары 32 жаңа нұсқауға сілтеме жасайды. Олар:

Горизонталь қосу немесе алу операцияларын орындайтын он екі нұсқау. Абсолют мәндерді есептейтін алты нұсқау. Көбейту және қосу операцияларын орындайтын, сондай-ақ векторлық көбейтіндіні есептеуді жылдамдататын екі нұсқау. Жинақталған бүтін санды көбейту операцияларын жылдамдататын және масштабтау арқылы бүтін сан мәндерін шығаратын екі нұсқау. Екінші араластыру басқару операндысына сәйкес байттық араластыруды орындалатын екі нұсқау. Көз операндының сәйкес элементі теріс болса, мақсат операндындағы жинақталған бүтін санды теріске айналдыратын алты нұсқау. Екі операндтың біріктірілімінен деректерді туралайтын екі нұсқау.

Жаңа нұсқаулар

Төмендегі кестеде satsw(X) («сатурациядан қолтаңбаланған сөзге» деп оқылады) қолтаңбаланған бүтін сан X-ті қабылдайды және оны -32768-ден кіші болса, -32768-ге, 32767-ден үлкен болса, 32767-ге дейін өзгертеді, әйтпесе өзгеріссіз қалдырады. Intel архитектурасында байттар 8 бит, сөздер 16 бит, dwords 32 битті құрайды; «register» MMX немесе XMM векторлық тіркелгішін білдіреді.

Нұсқаулық анықтамасы Түсіндірме
PSIGNB, PSIGNW, PSIGND Пакетті белгі Егер басқа тіркелгіштің сәйкес элементтерінің белгісі теріс болса, байттар, сөздер немесе dwords тізілімінің элементтерін теріске шығарады.
PABSB, PABSW, PABSD Абсолюттік мәнді қаптау Байттар, сөздер немесе dwords тізілімінің элементтерін басқа тізілім элементтерінің абсолюттік мәндерімен толтыру.
PALIGNR Қапталған сәйкестендіру Екі тіркелгішті алып, олардың мәндерін біріктіріп, нұсқаулықта кодталған бірден бір мәнмен берілген офсеттен тіркелгіш ұзындығы бөлімін шығарып алу.
PSHUFБ Packed Shuffle Bytes байттар A = [a0 a1 a2 ] және B = [b0 b1 b2 ] тіркелгіштерін қабылдайды және A-ны [ab0 ab1 ab2 ]-мен алмастырады; егер bi-нің жоғарғы биті орнатылған болса, i-інші жазбаны 0-мен алмастырады.
PMULHRSW Packed Multiply High with Round and Scale А және В тіркелгіштеріндегі 16 биттік сөздерді -1.00000000 және +0.99996948 арасындағы 16 биттік белгісі бар тұрақты нүктелік сандар ретінде қарастырады (мысалы, 0x4000 +0.5 және 0xA000 -0.75 ретінде қарастырылады) және оларды дұрыс дөңгелектеумен бірге көбейтеді.
PMADDUBSW Көбейту және қосу таңбаланған және таңбаланбаған байттар А және В тіркелгіштеріндегі байттарды алып, оларды бірге көбейтіп, жұптармен қосып, сатурациядан өткізіп сақтайды. Яғни, [a0 a1 a2 ] PMADDUBSW [b0 b1 b2 ] = [satsw(a0b0 + a1b1) satsw(a2b2 + a3b3)].
PHSUBW, PHSUBD Пакетті көлденең шегерім (сөздер немесе қос сөздер) A = [a0 a1 a2 ] және B = [b0 b1 b2 ] тіркелгіштерін қабылдайды және [a0−a1 a2−a3 b0−b1 b2−b3 ] шығарады.
PHSUBSW Пакетті көлденең шегерім және қанықтырылған сөздер PHSUBW сияқты, бірақ [satsw(a0−a1) satsw(a2−a3) satsw(b0−b1) satsw(b2−b3)] шығарады.
PHADDW, PHADDD Пакетті көлденең қосу (сөздер немесе қос сөздер) A = [a0 a1 a2 ] және B = [b0 b1 b2 ] тіркелгіштерін қабылдайды және [a0+a1 a2+a3 b0+b1 b2+b3 ] шығарады.
PHADDSW Пакетті көлденең қосу және қанықтырылған сөздер PHADDW сияқты, бірақ [satsw(a0+a1) satsw(a2+a3) satsw(b0+b1) satsw(b2+b3)] шығарады.