http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53395

--- Comment #1 from Dominique d'Humieres <dominiq at lps dot ens.fr> 2012-05-18 
11:24:06 UTC ---
The assembly code for -O3 is almost the same for revisions 187182 and 187183.
However with '-O3 -ffast-math', revision 187182 gives for the loop

L12:
    movapd    %xmm2, %xmm1
L9:
    movsd    8(%rsi), %xmm0
    andpd    %xmm3, %xmm0
    comisd    %xmm0, %xmm1
    movapd    %xmm0, %xmm2
    maxsd    %xmm1, %xmm2
    cmovb    %edx, %eax
    addl    $1, %edx
    addq    $8, %rsi
    cmpl    %ecx, %edx
    jne    L12

while revision 187183 gives

L6:
    movapd    %xmm2, %xmm1
L3:
    movsd    8(%rsi), %xmm0
    movapd    %xmm1, %xmm3
    andpd    %xmm4, %xmm0
    comisd    %xmm0, %xmm1
    movapd    %xmm0, %xmm2
    cmplesd    %xmm1, %xmm2
    cmovb    %edx, %eax
    addl    $1, %edx
    addq    $8, %rsi
    cmpl    %ecx, %edx
    andpd    %xmm2, %xmm3
    andnpd    %xmm0, %xmm2
    orpd    %xmm3, %xmm2
    jne    L6

(for the later -ffast-math only change ucomisd to comisd).

Reply via email to