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 | +-----+-----+-----+-----+