Арифметические операции с плавающей точкой в SSE/AVX

Последнее обновление: 03.07.2023

Расширения SSE/AVX предоставляют инструкции для паралелльных операций с плавающей точкой:

  • addps: складывает 4 дорожки операндов с числами с плавающей точкой одинарной точности

  • addpd: складывает 2 дорожки операндов с числами с плавающей точкой двойной точности

  • vaddps: складывает 4 дорожки (128-битная версия) или 8 дорожек (256-битная версия) с числами с плавающей точкой одинарной точности

  • vaddpd: складывает 2 дорожки (128-битная версия) или 4 дорожки (256-битная версия) с числами с плавающей точкой двойной точности

  • subps: вычитает 4 дорожки операндов с числами с плавающей точкой одинарной точности

  • subpd: вычитает 2 дорожки операндов с числами с плавающей точкой двойной точности

  • vsubps: вычитает 4 дорожки (128-битная версия) или 8 дорожек (256-битная версия) с числами с плавающей точкой одинарной точности

  • vsubpd: вычитает 2 дорожки (128-битная версия) или 4 дорожки (256-битная версия) с числами с плавающей точкой двойной точности

  • mulps: перемножает 4 дорожки операндов с числами с плавающей точкой одинарной точности

  • mulpd: перемножает 2 дорожки операндов с числами с плавающей точкой двойной точности

  • vmulps: перемножает 4 дорожки (128-битная версия) или 8 дорожек (256-битная версия) с числами с плавающей точкой одинарной точности

  • vmulpd: перемножает 2 дорожки (128-битная версия) или 4 дорожки (256-битная версия) с числами с плавающей точкой двойной точности

  • divps: делит 4 дорожки операндов с числами с плавающей точкой одинарной точности

  • divpd: делит 2 дорожки операндов с числами с плавающей точкой двойной точности

  • vdivps: делит 4 дорожки (128-битная версия) или 8 дорожек (256-битная версия) с числами с плавающей точкой одинарной точности

  • vdivpd: делит 2 дорожки (128-битная версия) или 4 дорожки (256-битная версия) с числами с плавающей точкой двойной точности

  • maxps: вычисляет максимальное в каждой из 4 пар чисел с плавающей точкой одинарной точности

  • maxpd: вычисляет максимальное в каждой из 2 пар чисел с плавающей точкой двойной точности

  • vmaxps: вычисляет максимальное в каждой из 4 (для 128-битной версии) или 8 (для 256-битной версии) пар чисел с плавающей точкой одинарной точности

  • vmaxpd: вычисляет максимальное в каждой из 2 (для 128-битной версии) или 4 (для 256-битной версии) пар чисел с плавающей точкой двойной точности

  • minps: вычисляет минимальное в каждой из 4 пар чисел с плавающей точкой одинарной точности

  • minpd: вычисляет минимальное в каждой из 2 пар чисел с плавающей точкой двойной точности

  • vminps: вычисляет минимальное в каждой из 4 (для 128-битной версии) или 8 (для 256-битной версии) пар чисел с плавающей точкой одинарной точности

  • vminpd: вычисляет минимальное в каждой из 2 (для 128-битной версии) или 4 (для 256-битной версии) пар чисел с плавающей точкой двойной точности

  • sqrtps: вычисляет квадратный корень для каждого из 4 чисел с плавающей точкой одинарной точности

  • sqrtpd: вычисляет квадратный корень для 2 чисел с плавающей точкой двойной точности

  • vsqrtps: вычисляет квадратный корень для каждого из 4 (для 128-битной версии) или 8 (для 256-битной версии) чисел с плавающей точкой одинарной точности

  • vsqrtpd: вычисляет квадратный корень для каждого из 2 (для 128-битной версии) или 4 (для 256-битной версии) чисел с плавающей точкой двойной точности

  • rsqrtps: вычисляет приблизительно обратный квадратный корень для каждого из 4 чисел с плавающей точкой одинарной точности

  • vrsqrtps: вычисляет приблизительно обратный квадратный корень для каждого из 4 (для 128-битной версии) или 8 (для 256-битной версии) чисел с плавающей точкой одинарной точности

Общий синтаксис инструкций на примере v(addps):

addps xmmdest, xmmsrc/mem128

vaddps xmmdest, xmmsrc1, xmmsrc2/mem128
vaddps ymmdest, ymmsrc1, ymmsrc2/mem256

Инструкции вычисления квадратного корня принимают один операнд:

sqrtps xmmdest, xmmsrc/mem128

vsqrtps xmmdest, xmmsrc/mem128
vsqrtps ymmdest, ymmsrc/mem256
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850