Asembler x86/Instrukcje/SSE4/DPPS
Wygląd
(Przekierowano z Asembler X86/Instrukcje/SSE4/DPPS)
DPPS
[edytuj]Dział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