Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
SIMD нұсқаулар жиынтығы. Supplemental Streaming SIMD Extensions 3 (SSSE3 немесе SSE3S) – Intel компаниясы жасаған SIMD нұсқаулар жиынтығы және SSE технологиясының төртінші нұсқасы.
SIMD instruction set
Supplemental Streaming SIMD Extensions 3 (SSSE3 or SSE3S) is a SIMD instruction set created by Intel and is the fourth iteration of the SSE technology.
Тарих
SSSE3 алғаш рет 2006 жылғы 26 маусымда Core микроархитектурасына негізделген Intel процессорларымен, "Woodcrest" Xeons процессорлары арқылы енгізілді. SSSE3-ті қолдау үшін жасалған алғашқы процессор дизайндары Tejas New Instructions (TNI) немесе Merom New Instructions (MNI) деп аталды. SSSE3, мысалы AAC сияқты, жоғары сапалы аудио/видео кодтау және декодтау үшін жақсартылған.
SSSE3 was first introduced with Intel processors based on the Core microarchitecture on June 26, 2006 with the "Woodcrest" Xeons. SSSE3 has been referred to by the codenames Tejas New Instructions (TNI) or Merom New Instructions (MNI) for the first processor designs intended to support it. SSSE3 has enhanced for HD audio/video decoding/encoding, for example AAC.
Функционалдылығы
SSSE3 16 жаңа дискретті нұсқауды қамтиды. Әрбір нұсқау 64 биттік MMX немесе 128 биттік XMM тіркелгіштерімен жұмыс істей алады. Сондықтан Intel материалдары 32 жаңа нұсқауға сілтеме жасайды. Олар:
SSSE3 contains 16 new discrete instructions. Each instruction can act on 64 bit MMX or 128 bit XMM registers. Therefore, Intel's materials refer to 32 new instructions. They include:
Горизонталь қосу немесе алу операцияларын орындайтын он екі нұсқау. Абсолют мәндерді есептейтін алты нұсқау. Көбейту және қосу операцияларын орындайтын, сондай-ақ векторлық көбейтіндіні есептеуді жылдамдататын екі нұсқау. Жинақталған бүтін санды көбейту операцияларын жылдамдататын және масштабтау арқылы бүтін сан мәндерін шығаратын екі нұсқау. Екінші араластыру басқару операндысына сәйкес байттық араластыруды орындалатын екі нұсқау. Көз операндының сәйкес элементі теріс болса, мақсат операндындағы жинақталған бүтін санды теріске айналдыратын алты нұсқау. Екі операндтың біріктірілімінен деректерді туралайтын екі нұсқау.
Twelve instructions that perform horizontal addition or subtraction operations. Six instructions that evaluate absolute values. Two instructions that perform multiply and add operations and speed up the evaluation of dot products. Two instructions that accelerate packed integer multiply operations and produce integer values with scaling. Two instructions that perform a byte wise, in place shuffle according to the second shuffle control operand. Six instructions that negate packed integers in the destination operand if the corresponding element in the source operand is negative. Two instructions that align data from the composite of two operands.
Жаңа нұсқаулар
Төмендегі кестеде satsw(X) («сатурациядан қолтаңбаланған сөзге» деп оқылады) қолтаңбаланған бүтін сан X-ті қабылдайды және оны -32768-ден кіші болса, -32768-ге, 32767-ден үлкен болса, 32767-ге дейін өзгертеді, әйтпесе өзгеріссіз қалдырады. Intel архитектурасында байттар 8 бит, сөздер 16 бит, dwords 32 битті құрайды; «register» MMX немесе XMM векторлық тіркелгішін білдіреді.
In the table below, satsw(X) (read as 'saturate to signed word') takes a signed integer X, and converts it to −32768 if it is less than −32768, to +32767 if it is greater than 32767, and leaves it unchanged otherwise. As normal for the Intel architecture, bytes are 8 bits, words 16 bits, and dwords 32 bits; 'register' refers to an MMX or XMM vector register. Instruction Definition Explanation PSIGNB, PSIGNW, PSIGND Packed Sign Negate the elements of a register of bytes, words or dwords if the sign of the corresponding elements of another register is negative. PABSB, PABSW, PABSD Packed Absolute Value Fill the elements of a register of bytes, words or dwords with the absolute values of the elements of another register PALIGNR Packed Align Right take two registers, concatenate their values, and pull out a register length section from an offset given by an immediate value encoded in the instruction. PSHUFB Packed Shuffle Bytes takes registers of bytes A = [a0 a1 a2 ] and B = [b0 b1 b2 ] and replaces A with [ab0 ab1 ab2 ]; except that it replaces the ith entry with 0 if the top bit of bi is set. PMULHRSW Packed Multiply High with Round and Scale treat the 16 bit words in registers A and B as signed 16 bit fixed point numbers between −1.00000000 and +0.99996948 (e. g. 0x4000 is treated as +0.5 and 0xA000 as −0.75), and multiply them together with correct rounding. PMADDUBSW Multiply and Add Packed Signed and Unsigned Bytes Take the bytes in registers A and B, multiply them together, add pairs, signed saturate and store. I. e. [a0 a1 a2 ] PMADDUBSW [b0 b1 b2 ] = [satsw(a0b0 + a1b1) satsw(a2b2 + a3b3) ] PHSUBW, PHSUBD Packed Horizontal Subtract (Words or Doublewords) takes registers A = [a0 a1 a2 ] and B = [b0 b1 b2 ] and outputs [a0−a1 a2−a3 b0−b1 b2−b3 ] PHSUBSW Packed Horizontal Subtract and Saturate Words like PHSUBW, but outputs [satsw(a0−a1) satsw(a2−a3) satsw(b0−b1) satsw(b2−b3) ] PHADDW, PHADDD Packed Horizontal Add (Words or Doublewords) takes registers A = [a0 a1 a2 ] and B = [b0 b1 b2 ] and outputs [a0+a1 a2+a3 b0+b1 b2+b3 ] PHADDSW Packed Horizontal Add and Saturate Words like PHADDW, but outputs [satsw(a0+a1) satsw(a2+a3) satsw(b0+b1) satsw(b2+b3) ]
Нұсқаулық анықтамасы Түсіндірме
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)] шығарады.
In the table below, satsw(X) (read as 'saturate to signed word') takes a signed integer X, and converts it to −32768 if it is less than −32768, to +32767 if it is greater than 32767, and leaves it unchanged otherwise. As normal for the Intel architecture, bytes are 8 bits, words 16 bits, and dwords 32 bits; 'register' refers to an MMX or XMM vector register. Instruction Definition Explanation PSIGNB, PSIGNW, PSIGND Packed Sign Negate the elements of a register of bytes, words or dwords if the sign of the corresponding elements of another register is negative. PABSB, PABSW, PABSD Packed Absolute Value Fill the elements of a register of bytes, words or dwords with the absolute values of the elements of another register PALIGNR Packed Align Right take two registers, concatenate their values, and pull out a register length section from an offset given by an immediate value encoded in the instruction. PSHUFB Packed Shuffle Bytes takes registers of bytes A = [a0 a1 a2 ] and B = [b0 b1 b2 ] and replaces A with [ab0 ab1 ab2 ]; except that it replaces the ith entry with 0 if the top bit of bi is set. PMULHRSW Packed Multiply High with Round and Scale treat the 16 bit words in registers A and B as signed 16 bit fixed point numbers between −1.00000000 and +0.99996948 (e. g. 0x4000 is treated as +0.5 and 0xA000 as −0.75), and multiply them together with correct rounding. PMADDUBSW Multiply and Add Packed Signed and Unsigned Bytes Take the bytes in registers A and B, multiply them together, add pairs, signed saturate and store. I. e. [a0 a1 a2 ] PMADDUBSW [b0 b1 b2 ] = [satsw(a0b0 + a1b1) satsw(a2b2 + a3b3) ] PHSUBW, PHSUBD Packed Horizontal Subtract (Words or Doublewords) takes registers A = [a0 a1 a2 ] and B = [b0 b1 b2 ] and outputs [a0−a1 a2−a3 b0−b1 b2−b3 ] PHSUBSW Packed Horizontal Subtract and Saturate Words like PHSUBW, but outputs [satsw(a0−a1) satsw(a2−a3) satsw(b0−b1) satsw(b2−b3) ] PHADDW, PHADDD Packed Horizontal Add (Words or Doublewords) takes registers A = [a0 a1 a2 ] and B = [b0 b1 b2 ] and outputs [a0+a1 a2+a3 b0+b1 b2+b3 ] PHADDSW Packed Horizontal Add and Saturate Words like PHADDW, but outputs [satsw(a0+a1) satsw(a2+a3) satsw(b0+b1) satsw(b2+b3) ]