SSE - Streaming SIMD Extension
Operacje warunkowe - przykład
section .data 
const40  'MMMMMMMMMMMMMMMM' 
star     '****************' 
 
section .text
 
; if(x <= 'M') x = '*';
 
sse_if:
    movdqu  xmm0, [rdi]       ; MOVe Double Quadword [Aligned]
    movdqu  xmm1, [const40]  ; wektor stałych 40
    movdqa  xmm2, xmm0       ; 
 
    pcmpgtb xmm2, xmm1       ; xmm2  zawiera maske
 
    movdqa  xmm1, [star]
 
    pand    xmm0, xmm2       ; zerujemy znaki mniejsze niż M      
    pandn   xmm2, xmm1       ; ustawiamy tam gwiazdki
    por     xmm0, xmm2       ; sumujemy 
 
    movdqu  [rdi], xmm0
 
    ret

Przykład

Kod asemblerowy
Kod C


Tomasz Kapela, Kraków 2011-2020