Instrucțiunea PCMPEQB (Packed Compare Equal Bytes) compară fiecare octet din XMM1 cu octetul corespondent din XMM2. Dacă octeții sunt egali, setează toți biții octetului rezultat la 0xFF (255); altfel, îi setează la 0x00.
; Căutarea caracterului '\n' (cod ASCII 10) într-un bloc de 16 caractere:
lea rsi, [rel buffer_text]
movdqu xmm0, [rsi] ; Încarcă 16 octeți de text
; Creăm un vector XMM1 cu caracterul '\n' repetat în toți cei 16 octeți:
mov eax, 10
movd xmm1, eax
punpcklbw xmm1, xmm1
pshuflw xmm1, xmm1, 0 ; XMM1 conține acum [10, 10, 10, ... 10]
pcmpeqb xmm0, xmm1 ; Octeții potriviți devin 0xFF, ceilalți 0x00
Accelerare parsere: Combinat cu PMOVMSKB, transformă căutarea de caractere într-un filtru masiv de 16 sau 32 octeți pe iterație.
Întrebări & Exemple de Cod:
PCMPEQB și PCMPGTB în x86_64: Comparații Vectoriale SIMD pe OctețiAi o nelămurire despre utilizarea comenzii
PCMPEQB și PCMPGTB în x86_64: Comparații Vectoriale SIMD pe Octețisau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.