XOP (від англ. eXtended Operations – розширені операції ) – розширення набору інструкцій x86/AMD64, анонсоване корпорацією AMD 1 травня 2009 року.
Є розширенням та розвитком ідей, реалізованих у 128-бітих інструкціях SSE в архітектурах x86/x86-64. Реалізовано з мікроархітектури мікропроцесорів AMD (12 жовтня 2011). Не підтримується процесорами AMD, починаючи з мікроархітектури Zen (Ryzen, EPIC; 2017 рік).
У набір інструкцій XOP входить кілька різних типів векторних інструкцій, оскільки він був спочатку задуманий як велике оновлення SSE. Більшість інструкцій є цілими, але в набір також входять інструкції для перестановки чисел з рухомої комою та інструкції екстракції дробової частини.
Історія
XOP є переробкою частини ідей, призначених для SSE5. Набір було змінено, щоб зробити його більш схожим на AVX, але не дублювати інструкції. Інструкції, що збігаються з AVX, були видалені або переміщені в окремі розширення, наприклад (векторне множення-додавання для рухомої коми) і (перетворення чисел половинної-точності, реалізовано корпорацією Intel як ).
Усі інструкції SSE5, для яких був аналог або еквівалент у наборах AVX та , використовують кодування, запропоновані корпорацією Intel. Цілочисленні інструкції без еквівалентів AVX були класифіковані як розширення XOP. Інструкції XOP кодуються кодами операцій, що починаються з байта 0x8F (шістнадцяткове значення), але в іншому використовують схему кодування, майже ідентичну AVX з 3-байтовим префіксом VEX.
Окремі експерти (Agner Fog) розцінили це як ознака того, що корпорація Intel не дозволила AMD використовувати будь-яку частину великого кодового простору VEX. Компанія AMD, ймовірно, була змушена використовувати відмінні коди для того, щоб уникнути будь-якої комбінації, яку міг би в майбутньому використовувати Intel. Схема кодування XOP максимально наближена до VEX, але усуває ризик перетину майбутніх опкодів Intel.
Використання байта 8F вимагає, щоб m-біт (див. схема кодування VEX) мав значення більше або дорівнює 8, щоб уникнути перетину з інструкціями, визначеними на даний момент. Байт 0xC4, який використовується у схемі VEX не має такого обмеження. Через це використання m-бітів для інших цілей у майбутньому в XOP схемі може бути утруднено (VEX не має обмежень на m-біти). Інша можлива проблема полягає в тому, що біти pp в XOP завжди мають значення 00, у той час як у VEX вони встановлюються значення 01 для вказівки, що в інструкції немає застарілих еквівалентів. Це може ускладнити використання pp бітів для інших цілей у майбутньому.
Аналогічна проблема сумісності - відмінності реалізацій розширень FMA3 та FMA4. Intel спочатку запропонував розширення FMA4 в рамках специфікації AVX/FMA версії 3, щоб замінити 3-операнди варіант FMA, запропонований AMD в SSE5. Після того як AMD реалізувала FMA4, Intel відмовився від FMA4 і повернувся до FMA3 у 5 версії специфікації AVX/FMA.
У березні 2015 року компанія AMD розкрила в описі патча для пакету GNU Binutils що Zen, третє покоління архітектури x86-64, у першій редакції (znver1 — Zen, версія 1), не підтримуватиме TBM, FMA4, XOP and LWP інструкції, розроблені спеціально для сімейства мікроархітектури «Bulldozer».
Цілочисленне векторне множення-додавання
Ці інструкції є цілим аналогом наборів інструкцій FMA. Всі вони — чотириоперадні інструкції, схожі на FMA4, і всі вони працюють над знаковими цілими числами.
Інструкція | Опис | Операція |
---|---|---|
VPMACSWW
| Multiply Accumulate (with Saturation) Word to Word | 2x8 words (a0-a7, b0-b7) + 8 words (c0-c7) → 4 words (r0-r7) r0 = a0 * b0 + c0, r1 = a1 * b1 + c1, .. |
VPMACSWD
| Multiply Accumulate (with Saturation) Low Word to Doubleword | 2x8 words (a0-a7, b0-b7) + 4 doublewords (c0-c3) → 4 doublewords (r0-r3) r0 = a0 * b0 + c0, r1 = a2 * b2 + c1, . |
VPMACSDD
| Multiply Accumulate (with Saturation) Doubleword to Doubleword | 2x4 doublewords (a0-a3, b0-b3) + 4 doublewords (c0-c3) → 4 doublewords (r0-r3) r0 = a0 * b0 + c0, r1 = a1 * b1 + c1, .. |
VPMACSDQL
| Multiply Accumulate (with Saturation) Low Doubleword to Quadword | 2x4 doublewords (a0-a3, b0-b3) + 2 quadwords (c0-c1) → 2 quadwords (r0-r3) r0 = a0 * b0 + c0, r1 = a2 * b2 + c1 |
VPMACSDQH
| Multiply Accumulate (with Saturation) High Doubleword to Quadword | 2x4 doublewords (a0-a3, b0-b3) + 2 quadwords (c0-c1) → 2 quadwords (r0-r3) r0 = a1 * b1 + c0, r1 = a3 * b3 + c1 |
VPMADCSWD
| Multiply Add Accumulate (with Saturation) Word to Doubleword | 2x8 words (a0-a7, b0-b7) + 4 doublewords (c0-c3) → 4 doublewords (r0-r3) r0 = a0 * b0 + a1 * b1 + c0, r1 = a2 * b2 + a3 * b3 + c1, .. |
Цілочисленне векторне горизонтальне додавання
Інструкції горизонтального додавання додають суміжні значення у вхідному векторі одне до одного. Вихідний розмір у наведених нижче інструкціях описує ширину виконаного горизонтального додавання. Наприклад, горизонтальний «байт у слова» додає по два байти за раз і повертає результат у вигляді вектора слів, але «байт у четверне слово» додає вісім байтів разом і повертає результат у вигляді вектора чотирьох слів. Шість додаткових горизонтальних інструкцій додавання та віднімання можна знайти в SSSE3, але вони працюють з двома вхідними векторами і виконують лише дві операції.
Інструкція | Опис | Операція |
---|---|---|
VPHADDBW
| Horizontal add two signed/unsigned bytes to word | 16 bytes (a0-a15) → 8 words (r0-r7) r0 = a0+a1, r1 = a2+a3, r2 = a4+a5, … |
VPHADDBD
| Horizontal add four signed/unsigned bytes to doubleword | 16 bytes (a0-a15) → 4 doublewords (r0-r3) r0 = a0+a1+a2+a3, r1 = a4+a5+a6+a7, … |
VPHADDBQ
| Horizontal add eight signed/unsigned bytes to quadword | 16 bytes (a0-a15) → 2 quadwords (r0-r1) r0 = a0+a1+a2+a3+a4+a5+a6+a7, … |
VPHADDWD
| Horizontal add two signed/unsigned words to doubleword | 8 words (a0-a7) → 4 doublewords (r0-r3) r0 = a0+a1, r1 = a2+a3, r2 = a4+a5, … |
VPHADDWQ
| Horizontal add four signed/unsigned words to quadword | 8 words (a0-a7) → 2 quadwords (r0-r1) r0 = a0+a1+a2+a3, r1 = a4+a5+a6+a7 |
VPHADDDQ
| Horizontal add two signed/unsigned doublewords to quadword | 4 doublewords (a0-a3) → 2 quadwords (r0-r1) r0 = a0+a1, r1 = a2+a3 |
VPHSUBBW | Horizontal subtract two signed bytes to word | 16 bytes (a0-a15) → 8 words (r0-r7) r0 = a0-a1, r1 = a2-a3, r2 = a4-a5, … |
VPHSUBWD | Horizontal subtract two signed words to doubleword | 8 words (a0-a7) → 4 doublewords (r0-r3) r0 = a0-a1, r1 = a2-a3, r2 = a4-a5, … |
VPHSUBDQ | Horizontal subtract two signed doublewords to quadword | 4 doublewords (a0-a3) → 2 quadwords (r0-r1) r0 = a0-a1, r1 = a2-a3 |
Цілочисленне векторне порівняння
Цей набір векторних інструкцій використовує поле immediate кодування як додатковий аргумент, який визначає яке саме порівняння виконувати. Існує вісім можливих варіантів порівняння для кожної інструкції. Вектори порівнюються і всі порівняння, що виявилися істинними, встановлюють всі біти у відповідному регістрі призначення в 1, а помилкові порівняння - встановлюють біти в 0. Цей результат може бути безпосередньо використаний в інструкції VPCMOV - векторизованого умовного пересилання.
Інструкція | Опис | immediate | Порівняння |
---|---|---|---|
VPCOMB | Compare Vector Signed Bytes | 000 | Менше |
VPCOMW | Compare Vector Signed Words | 001 | Менше або дорівнює |
VPCOMD | Compare Vector Signed Doublewords | 010 | Більше |
VPCOMQ | Compare Vector Signed Quadwords | 011 | Більше ніж або дорівнює |
VPCOMUB | Compare Vector Unsigned Bytes | 100 | Дорівнює |
VPCOMUW | Compare Vector Unsigned Words | 101 | Не дорівнює |
VPCOMUD | Compare Vector Unsigned Doublewords | 110 | Завжди брехливе |
VPCOMUQ | Compare Vector Unsigned Quadwords | 111 | Завжди істинне |
Векторне умовне пересилання
VPCMOV працює як побітовий варіант інструкцій blend із SSE4. Для кожного біта операнда-селектора, рівного 1, виділяє підсумковий біт з першого джерела, якщо біт у селекторі дорівнює 0, вибирає підсумковий біт з другого джерела. При використанні спільно з векторними операціями порівняння XOP дозволяє реалізувати векторний тернарний оператор, або якщо в ролі другого аргументу виступає регістр призначення, умовне умовне пересилання ().
Інструкція | Опис |
---|---|
VPCMOV | Vector Conditional Move |
Цілочисленний векторний зсув та поворот
Інструкції зсуву відрізняються від подібних до набору інструкцій SSE2 в тому, що вони можуть зрушувати кожен елемент на різну кількість біт, використовуючи знакові цілі числа, що упаковані, з векторного регістра. Знак вказує напрямок зсуву або повороту, позитивні значення для зсуву вліво і негативні - для зсуву вправо Корпорація Intel реалізувала інший, несумісний набір змінних векторних зсувів та поворотів а AVX2.
Інструкція | Опис |
---|---|
VPROTB | Packed Rotate Bytes |
VPROTW | Packed Rotate Words |
VPROTD | Packed Rotate Doublewords |
VPROTQ | Packed Rotate Quadwords |
VPSHAB | Packed Shift Arithmetic Bytes |
VPSHAW | Packed Shift Arithmetic Words |
VPSHAD | Packed Shift Arithmetic Doublewords |
VPSHAQ | Packed Shift Arithmetic Quadwords |
VPSHLB | Packed Shift Logical Bytes |
VPSHLW | Packed Shift Logical Words |
VPSHLD | Packed Shift Logical Doublewords |
VPSHLQ | Packed Shift Logical Quadwords |
Векторна перестановка
VPPERM — єдина інструкція, яка поєднує інструкції PALIGNR і PSHUFB з SSSE3 і розширює їх. Деякі порівнюють її з інструкцією VPERM. Вона приймає три регістри на вхід: два джерела та селектор (третій). Кожен байт у селекторі вибирає один із байтів в одному з двох джерел для запису у вихідний регістр. Селектор може вибирати нульовий байт, змінювати порядок біт на зворотний, повторювати значний біт. Всі ефекти або входи можуть бути інвертовані.
Інструкції VPPERMIL2PD та VPPERMIL2PS – двооперандні варіанти інструкцій VPERMILPD та VPERMILPS з набору AVX. Вони, як і VPPERM, можуть вибрати вихідне значення з будь-яких полів двох вхідних регістрів.
Інструкція | Опис |
---|---|
VPPERM | Packed Permute Byte |
VPPERMIL2PD | Permute Two-Source Double-Precision Floating-Point |
VPPERMIL2PS | Permute Two-Source Single-Precision Floating-Point |
Виділення дробової частини чисел із рухомою комою
Ці інструкції виділяють дрібну частину з упакованих чисел із рухомою комою. Така частина числа може бути втрачена при перетворенні їх на ціле.
Інструкція | Опис |
---|---|
VPCMOV | Vector Conditional Move |
Див. також
Джерела
- Dave Christie (7 травня 2009), , AMD Developer blogs, архів оригіналу за 4 листопада 2013, процитовано 4 листопада 2013
- (PDF), AMD, 1 травня 2009, архів оригіналу (PDF) за 21 серпня 2018, процитовано 20 березня 2022
- Michael Larabel (3 березня 2017). . . Архів оригіналу за 14 вересня 2017. Процитовано 20 березня 2022.
But with Zen being a clean-sheet design, there are some instruction set extensions found in Bulldozer processors not found in Zen/znver1. Those no longer present include FMA4 and XOP.
- , Agner Fog, 5 грудня 2009, архів оригіналу за 12 травня 2022, процитовано 20 березня 2022
- (PDF), March 2008, архів оригіналу (PDF) за 7 серпня 2011, процитовано 17 січня 2012
- , January 2009, архів оригіналу за 29 лютого 2012, процитовано 17 січня 2012
- Ganesh Gopalasubramanian (10 березня 2015). . binutils@sourceware.org (Список розсилки). Архів оригіналу за 4 березня 2016. Процитовано 20 березня 2022.
- Amit Pawar (7 серпня 2015). . binutils@sourceware.org (Список розсилки). Архів оригіналу за 7 березня 2016. Процитовано 20 березня 2022.
- (PDF). AMD. Архів оригіналу (PDF) за 14 листопада 2021. Процитовано 13 січня 2014.
- (PDF). AMD. Архів оригіналу (PDF) за 7 січня 2013. Процитовано 13 січня 2014.
- . Intel. Архів оригіналу (PDF) за 1 лютого 2014. Процитовано 29 січня 2014.
- . Архів оригіналу за 15 січня 2014. Процитовано 13 січня 2014.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
XOP vid angl eXtended Operations rozshireni operaciyi rozshirennya naboru instrukcij x86 AMD64 anonsovane korporaciyeyu AMD 1 travnya 2009 roku Ye rozshirennyam ta rozvitkom idej realizovanih u 128 bitih instrukciyah SSE v arhitekturah x86 x86 64 Realizovano z mikroarhitekturi mikroprocesoriv AMD inshi movi 12 zhovtnya 2011 Ne pidtrimuyetsya procesorami AMD pochinayuchi z mikroarhitekturi Zen Ryzen EPIC 2017 rik U nabir instrukcij XOP vhodit kilka riznih tipiv vektornih instrukcij oskilki vin buv spochatku zadumanij yak velike onovlennya SSE Bilshist instrukcij ye cilimi ale v nabir takozh vhodyat instrukciyi dlya perestanovki chisel z ruhomoyi komoyu ta instrukciyi ekstrakciyi drobovoyi chastini IstoriyaDokladnishe SSE5 XOP ye pererobkoyu chastini idej priznachenih dlya SSE5 Nabir bulo zmineno shob zrobiti jogo bilsh shozhim na AVX ale ne dublyuvati instrukciyi Instrukciyi sho zbigayutsya z AVX buli vidaleni abo peremisheni v okremi rozshirennya napriklad vektorne mnozhennya dodavannya dlya ruhomoyi komi i peretvorennya chisel polovinnoyi tochnosti realizovano korporaciyeyu Intel yak Usi instrukciyi SSE5 dlya yakih buv analog abo ekvivalent u naborah AVX ta vikoristovuyut koduvannya zaproponovani korporaciyeyu Intel Cilochislenni instrukciyi bez ekvivalentiv AVX buli klasifikovani yak rozshirennya XOP Instrukciyi XOP koduyutsya kodami operacij sho pochinayutsya z bajta 0x8F shistnadcyatkove znachennya ale v inshomu vikoristovuyut shemu koduvannya majzhe identichnu AVX z 3 bajtovim prefiksom VEX Okremi eksperti Agner Fog rozcinili ce yak oznaka togo sho korporaciya Intel ne dozvolila AMD vikoristovuvati bud yaku chastinu velikogo kodovogo prostoru VEX Kompaniya AMD jmovirno bula zmushena vikoristovuvati vidminni kodi dlya togo shob uniknuti bud yakoyi kombinaciyi yaku mig bi v majbutnomu vikoristovuvati Intel Shema koduvannya XOP maksimalno nablizhena do VEX ale usuvaye rizik peretinu majbutnih opkodiv Intel Vikoristannya bajta 8F vimagaye shob m bit div shema koduvannya VEX mav znachennya bilshe abo dorivnyuye 8 shob uniknuti peretinu z instrukciyami viznachenimi na danij moment Bajt 0xC4 yakij vikoristovuyetsya u shemi VEX ne maye takogo obmezhennya Cherez ce vikoristannya m bitiv dlya inshih cilej u majbutnomu v XOP shemi mozhe buti utrudneno VEX ne maye obmezhen na m biti Insha mozhliva problema polyagaye v tomu sho biti pp v XOP zavzhdi mayut znachennya 00 u toj chas yak u VEX voni vstanovlyuyutsya znachennya 01 dlya vkazivki sho v instrukciyi nemaye zastarilih ekvivalentiv Ce mozhe uskladniti vikoristannya pp bitiv dlya inshih cilej u majbutnomu Analogichna problema sumisnosti vidminnosti realizacij rozshiren FMA3 ta FMA4 Intel spochatku zaproponuvav rozshirennya FMA4 v ramkah specifikaciyi AVX FMA versiyi 3 shob zaminiti 3 operandi variant FMA zaproponovanij AMD v SSE5 Pislya togo yak AMD realizuvala FMA4 Intel vidmovivsya vid FMA4 i povernuvsya do FMA3 u 5 versiyi specifikaciyi AVX FMA U berezni 2015 roku kompaniya AMD rozkrila v opisi patcha dlya paketu GNU Binutils sho Zen tretye pokolinnya arhitekturi x86 64 u pershij redakciyi znver1 Zen versiya 1 ne pidtrimuvatime TBM FMA4 XOP and LWP instrukciyi rozrobleni specialno dlya simejstva mikroarhitekturi Bulldozer Cilochislenne vektorne mnozhennya dodavannyaCi instrukciyi ye cilim analogom naboriv instrukcij FMA Vsi voni chotirioperadni instrukciyi shozhi na FMA4 i vsi voni pracyuyut nad znakovimi cilimi chislami Instrukciya Opis Operaciya VPMACSWW VPMACSSWW Multiply Accumulate with Saturation Word to Word 2x8 words a0 a7 b0 b7 8 words c0 c7 4 words r0 r7 r0 a0 b0 c0 r1 a1 b1 c1 VPMACSWD VPMACSSWD Multiply Accumulate with Saturation Low Word to Doubleword 2x8 words a0 a7 b0 b7 4 doublewords c0 c3 4 doublewords r0 r3 r0 a0 b0 c0 r1 a2 b2 c1 VPMACSDD VPMACSSDD Multiply Accumulate with Saturation Doubleword to Doubleword 2x4 doublewords a0 a3 b0 b3 4 doublewords c0 c3 4 doublewords r0 r3 r0 a0 b0 c0 r1 a1 b1 c1 VPMACSDQL VPMACSSDQL Multiply Accumulate with Saturation Low Doubleword to Quadword 2x4 doublewords a0 a3 b0 b3 2 quadwords c0 c1 2 quadwords r0 r3 r0 a0 b0 c0 r1 a2 b2 c1 VPMACSDQH VPMACSSDQH Multiply Accumulate with Saturation High Doubleword to Quadword 2x4 doublewords a0 a3 b0 b3 2 quadwords c0 c1 2 quadwords r0 r3 r0 a1 b1 c0 r1 a3 b3 c1 VPMADCSWD VPMADCSSWD Multiply Add Accumulate with Saturation Word to Doubleword 2x8 words a0 a7 b0 b7 4 doublewords c0 c3 4 doublewords r0 r3 r0 a0 b0 a1 b1 c0 r1 a2 b2 a3 b3 c1 Cilochislenne vektorne gorizontalne dodavannyaInstrukciyi gorizontalnogo dodavannya dodayut sumizhni znachennya u vhidnomu vektori odne do odnogo Vihidnij rozmir u navedenih nizhche instrukciyah opisuye shirinu vikonanogo gorizontalnogo dodavannya Napriklad gorizontalnij bajt u slova dodaye po dva bajti za raz i povertaye rezultat u viglyadi vektora sliv ale bajt u chetverne slovo dodaye visim bajtiv razom i povertaye rezultat u viglyadi vektora chotiroh sliv Shist dodatkovih gorizontalnih instrukcij dodavannya ta vidnimannya mozhna znajti v SSSE3 ale voni pracyuyut z dvoma vhidnimi vektorami i vikonuyut lishe dvi operaciyi Instrukciya Opis Operaciya VPHADDBW VPHADDUBW Horizontal add two signed unsigned bytes to word 16 bytes a0 a15 8 words r0 r7 r0 a0 a1 r1 a2 a3 r2 a4 a5 VPHADDBD VPHADDUBD Horizontal add four signed unsigned bytes to doubleword 16 bytes a0 a15 4 doublewords r0 r3 r0 a0 a1 a2 a3 r1 a4 a5 a6 a7 VPHADDBQ VPHADDUBQ Horizontal add eight signed unsigned bytes to quadword 16 bytes a0 a15 2 quadwords r0 r1 r0 a0 a1 a2 a3 a4 a5 a6 a7 VPHADDWD VPHADDUWD Horizontal add two signed unsigned words to doubleword 8 words a0 a7 4 doublewords r0 r3 r0 a0 a1 r1 a2 a3 r2 a4 a5 VPHADDWQ VPHADDUWQ Horizontal add four signed unsigned words to quadword 8 words a0 a7 2 quadwords r0 r1 r0 a0 a1 a2 a3 r1 a4 a5 a6 a7 VPHADDDQ VPHADDUDQ Horizontal add two signed unsigned doublewords to quadword 4 doublewords a0 a3 2 quadwords r0 r1 r0 a0 a1 r1 a2 a3 VPHSUBBW Horizontal subtract two signed bytes to word 16 bytes a0 a15 8 words r0 r7 r0 a0 a1 r1 a2 a3 r2 a4 a5 VPHSUBWD Horizontal subtract two signed words to doubleword 8 words a0 a7 4 doublewords r0 r3 r0 a0 a1 r1 a2 a3 r2 a4 a5 VPHSUBDQ Horizontal subtract two signed doublewords to quadword 4 doublewords a0 a3 2 quadwords r0 r1 r0 a0 a1 r1 a2 a3Cilochislenne vektorne porivnyannyaCej nabir vektornih instrukcij vikoristovuye pole immediate koduvannya yak dodatkovij argument yakij viznachaye yake same porivnyannya vikonuvati Isnuye visim mozhlivih variantiv porivnyannya dlya kozhnoyi instrukciyi Vektori porivnyuyutsya i vsi porivnyannya sho viyavilisya istinnimi vstanovlyuyut vsi biti u vidpovidnomu registri priznachennya v 1 a pomilkovi porivnyannya vstanovlyuyut biti v 0 Cej rezultat mozhe buti bezposeredno vikoristanij v instrukciyi VPCMOV vektorizovanogo umovnogo peresilannya Instrukciya Opis immediate Porivnyannya VPCOMB Compare Vector Signed Bytes 000 Menshe VPCOMW Compare Vector Signed Words 001 Menshe abo dorivnyuye VPCOMD Compare Vector Signed Doublewords 010 Bilshe VPCOMQ Compare Vector Signed Quadwords 011 Bilshe nizh abo dorivnyuye VPCOMUB Compare Vector Unsigned Bytes 100 Dorivnyuye VPCOMUW Compare Vector Unsigned Words 101 Ne dorivnyuye VPCOMUD Compare Vector Unsigned Doublewords 110 Zavzhdi brehlive VPCOMUQ Compare Vector Unsigned Quadwords 111 Zavzhdi istinneVektorne umovne peresilannyaVPCMOV pracyuye yak pobitovij variant instrukcij blend iz SSE4 Dlya kozhnogo bita operanda selektora rivnogo 1 vidilyaye pidsumkovij bit z pershogo dzherela yaksho bit u selektori dorivnyuye 0 vibiraye pidsumkovij bit z drugogo dzherela Pri vikoristanni spilno z vektornimi operaciyami porivnyannya XOP dozvolyaye realizuvati vektornij ternarnij operator abo yaksho v roli drugogo argumentu vistupaye registr priznachennya umovne umovne peresilannya Instrukciya Opis VPCMOV Vector Conditional MoveCilochislennij vektornij zsuv ta povorotInstrukciyi zsuvu vidriznyayutsya vid podibnih do naboru instrukcij SSE2 v tomu sho voni mozhut zrushuvati kozhen element na riznu kilkist bit vikoristovuyuchi znakovi cili chisla sho upakovani z vektornogo registra Znak vkazuye napryamok zsuvu abo povorotu pozitivni znachennya dlya zsuvu vlivo i negativni dlya zsuvu vpravo Korporaciya Intel realizuvala inshij nesumisnij nabir zminnih vektornih zsuviv ta povorotiv a AVX2 Instrukciya Opis VPROTB Packed Rotate Bytes VPROTW Packed Rotate Words VPROTD Packed Rotate Doublewords VPROTQ Packed Rotate Quadwords VPSHAB Packed Shift Arithmetic Bytes VPSHAW Packed Shift Arithmetic Words VPSHAD Packed Shift Arithmetic Doublewords VPSHAQ Packed Shift Arithmetic Quadwords VPSHLB Packed Shift Logical Bytes VPSHLW Packed Shift Logical Words VPSHLD Packed Shift Logical Doublewords VPSHLQ Packed Shift Logical QuadwordsVektorna perestanovkaVPPERM yedina instrukciya yaka poyednuye instrukciyi PALIGNR i PSHUFB z SSSE3 i rozshiryuye yih Deyaki porivnyuyut yiyi z instrukciyeyu VPERM Vona prijmaye tri registri na vhid dva dzherela ta selektor tretij Kozhen bajt u selektori vibiraye odin iz bajtiv v odnomu z dvoh dzherel dlya zapisu u vihidnij registr Selektor mozhe vibirati nulovij bajt zminyuvati poryadok bit na zvorotnij povtoryuvati znachnij bit Vsi efekti abo vhodi mozhut buti invertovani Instrukciyi VPPERMIL2PD ta VPPERMIL2PS dvooperandni varianti instrukcij VPERMILPD ta VPERMILPS z naboru AVX Voni yak i VPPERM mozhut vibrati vihidne znachennya z bud yakih poliv dvoh vhidnih registriv Instrukciya Opis VPPERM Packed Permute Byte VPPERMIL2PD Permute Two Source Double Precision Floating Point VPPERMIL2PS Permute Two Source Single Precision Floating PointVidilennya drobovoyi chastini chisel iz ruhomoyu komoyuCi instrukciyi vidilyayut dribnu chastinu z upakovanih chisel iz ruhomoyu komoyu Taka chastina chisla mozhe buti vtrachena pri peretvorenni yih na cile Instrukciya Opis VPCMOV Vector Conditional MoveDiv takozhAVX SSE5 x86DzherelaDave Christie 7 travnya 2009 AMD Developer blogs arhiv originalu za 4 listopada 2013 procitovano 4 listopada 2013 PDF AMD 1 travnya 2009 arhiv originalu PDF za 21 serpnya 2018 procitovano 20 bereznya 2022 Michael Larabel 3 bereznya 2017 Arhiv originalu za 14 veresnya 2017 Procitovano 20 bereznya 2022 But with Zen being a clean sheet design there are some instruction set extensions found in Bulldozer processors not found in Zen znver1 Those no longer present include FMA4 and XOP Agner Fog 5 grudnya 2009 arhiv originalu za 12 travnya 2022 procitovano 20 bereznya 2022 PDF March 2008 arhiv originalu PDF za 7 serpnya 2011 procitovano 17 sichnya 2012 January 2009 arhiv originalu za 29 lyutogo 2012 procitovano 17 sichnya 2012 Ganesh Gopalasubramanian 10 bereznya 2015 binutils sourceware org Spisok rozsilki Arhiv originalu za 4 bereznya 2016 Procitovano 20 bereznya 2022 Amit Pawar 7 serpnya 2015 binutils sourceware org Spisok rozsilki Arhiv originalu za 7 bereznya 2016 Procitovano 20 bereznya 2022 PDF AMD Arhiv originalu PDF za 14 listopada 2021 Procitovano 13 sichnya 2014 PDF AMD Arhiv originalu PDF za 7 sichnya 2013 Procitovano 13 sichnya 2014 Intel Arhiv originalu PDF za 1 lyutogo 2014 Procitovano 29 sichnya 2014 Arhiv originalu za 15 sichnya 2014 Procitovano 13 sichnya 2014