Asembler x86/Instrukcje/SSE4/BLENDP: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
m przeniesiony z Wikipedii
Lethern (dyskusja | edycje)
m odtworzenie
Linia 1:
'''BLENDPS''', '''BLENDPD''' działają na wektorach — odpowiednio — słów 32- i 64-bitowych. Nadpisują w wektorze docelowym tylko te elementy z wektora źródłowego, dla których odpowiadające im bity w masce bitowe są ustawione. Maska bitowa jest trzecim argumentem rozkazów, 8-bitową stałą natychmiastową i w zależności od długości wektorów obejmuje — odpowiednio — 4 albo 2 najmłodsze bity.
 
Rozkazowi <tt>BLENDPS xmm1, xmm2, imm8</tt> odpowiada:
 
for i:=0 to 3 do
if imm8[i] = 1 then { bit ustawiony? }
xmm1[i] := xmm2[i]
 
 
'''BLENDVPS''', '''BLENDVPD''' działają na wektorach — odpowiednio — liczb zmiennoprzecinkowych pojedynczej oraz podwójnej precyzji. Wykonują dokładnie to samo działanie, co inne wymienione wcześniej rozkazy {{linkinstr_x86|BLENDPx}}, różnica polega na sposobie zapisu maski bitowej. Rozkazy <tt>BLENVPx</tt> jako '''domyślny''' argument przyjmują rejestr <tt>XMM0</tt>, a o tym, czy dany element ma zostać przepisany, decydują '''najstarsze''' bity kolejnych słów <tt>XMM0</tt>.
 
Np. rozkazowi <tt>BLENDVPS xmm1, xmm2</tt> odpowiada:
 
for i:=0 to 3 do
if (XMM0[i] AND 0x80000000) = 0x80000000 then { najstarszy bit 32-bitowego słowa ustawiony? }
xmm1[i] := xmm2[i]
 
 
'''PBLENDVB''' działaj na wektorach bajtów. Wykonuje dokładnie to samo działanie, co inne wymienione wcześniej rozkazy {{linkinstr_x86|BLENDPx}}, różnica polega na sposobie zapisu maski bitowej. Rozkaz '''PBLENDVB''' jako '''domyślny''' argument przyjmują rejestr <tt>XMM0</tt>, a o tym, czy dany element ma zostać przepisany, decydują '''najstarsze''' bity kolejnych elementów <tt>XMM0</tt>.
 
Linia 8 ⟶ 26:
xmm1[i] := xmm2[i]
</source>
 
 
'''PBLENDW''' działaj na wektorach słów 16--bitowych. Nadpisuje w wektorze docelowym tylko te elementy z wektora źródłowego, dla których odpowiadające im bity w masce bitowe są ustawione. Maska bitowa jest trzecim argumentem rozkazów, 8-bitową stałą natychmiastową.
 
Rozkazowi <tt>PBLENDW xmm1, xmm2, imm8</tt> odpowiada:
 
for i:=0 to 7 do
if imm8[i] = 1 then { bit ustawiony? }
xmm1[i] := xmm2[i]