Asembler x86/Instrukcje/SSE4/DPPS
DPPS
edytujDziała na dwóch wektorach liczb zmiennoprzecinkowych pojedynczej precyzji (każdy po 4 liczby), obliczając iloczyn skalarny dla wybranych elementów argumentu źródłowego. W argumencie docelowym na wskazanych pozycjach zapisywany jest albo wynik, albo wartość 0.
Trzeci argument rozkazu, 8-bitowa stała natychmiastowa, przechowuje dwie maski bitowe:
- na bitach 4..7 maskę określającą które elementy wchodzą w skład iloczynu skalarnego,
- na bitach 0..3 maskę określającą które elementy docelowego maja zostać wyzerowane, a które zawierać wynik.
Rozkaz DPPS xmm1, xmm2, imm8 wykonuje:
{ obliczenie iloczynu skalarnego wybranych elementów } dot := 0.0 for i:= 0 to 3 do if imm8[i+4] = 1 then dot := dot + (xmm1[i] * xmm2[i]) { zapisanie wyników } for i:= 0 to 3 do if imm8[i] = 1 then xmm1[i] := dot else xmm1[i] := 0.0