ADDSUBPS Rozkaz działa na dwóch wektorach liczb zmiennoprzecinkowych pojedynczej precyzji. Wykonywane jest dodawanie elementów o nieparzystych indeksach, odejmowanie – parzystych. Działania realizowane przez ADDSUBPS xmm1, xmm2:

xmm1 := xmm1 - xmm2 xmm1 := xmm1 + xmm2 xmm1 := xmm1 - xmm2 xmm1 := xmm1 + xmm2

ADDSUBPD Rozkaz analogiczny do ADDSUBPS, działa na dwóch wektorach liczb zmiennoprzecinkowych podwójnej precyzji. Działania realizowane przez ADDSUBPD xmm1, xmm2:

xmm1 := xmm1 - xmm2 xmm1 := xmm1 + xmm2

HADDPS, HSUBPS Rozkazy działają na wektorach liczb zmiennoprzecinkowych pojedynczej precyzji. HADDPS dodaje, zaś HSUBPS odejmuje sąsiednie elementy wektorów, tzn. HADDPS xmm1, xmm2 wykonuje:

temp := xmm1 + xmm1 temp := xmm1 + xmm1 temp := xmm2 + xmm2 temp := xmm2 + xmm2 xmm1 := temp

natomiast HSUBPS xmm1, xmm2:

temp := xmm1 - xmm1 temp := xmm1 - xmm1 temp := xmm2 - xmm2 temp := xmm2 - xmm2 xmm1 := temp

Np.:

3 2 1 0 3 2 1 0 +-----+-----+-----+-----+ +-----+-----+-----+-----+ | d | c | b | a | | h | g | f | e | +-----+-----+-----+-----+ +-----+-----+-----+-----+ xmm1 xmm2

Wynik HADDPS:

+-----+-----+-----+-----+ xmm1 = | h+g | f+e | c+d | a+b | +-----+-----+-----+-----+

Wynik HSUBPS:

+-----+-----+-----+-----+ xmm1 = | h-g | f-e | c-d | a-b | +-----+-----+-----+-----+