• [^] # Re: concrete

    Posté par (site web personnel) . En réponse au journal Alpha: une machine bêta avec écran.. Évalué à 1.

    dans un cas tu as :

     movapd %xmm0, %xmm3
     movsd %xmm0, 80(%esp)
     addsd %xmm0, %xmm3
     movsd %xmm2, (%esp)
     movsd %xmm3, 152(%esp)
     movsd %xmm1, 48(%esp)
     call _tan
     movsd 152(%esp), %xmm2
     movsd 48(%esp), %xmm1
     movsd %xmm1, (%esp)
     fstpl 136(%esp)
     addsd 136(%esp), %xmm2
     movsd %xmm2, 152(%esp)
     movsd LC8, %xmm2
     mulsd 144(%esp), %xmm2
     movsd %xmm2, 64(%esp)
     call _cos
     ...
    
    

    et dans l'autre tu as:

     fstp %st(0)
     fstp %st(2)
     fstpl (%esp)
     fstpt 64(%esp)
     fstpl 96(%esp)
     fstpl 80(%esp)
     fstpt 48(%esp)
     call _tan
     fldt 64(%esp)
     fadd %st(0), %st
     fadd %st(1), %st
     fstpl 136(%esp)
     fldl 160(%esp)
     fstpl (%esp)
     fstpt 64(%esp)
     call _cos
     ...
    
    

    donc c'est normal que les temps soient les mêmes puisqu'elles appellent les memes fonctions. Il faut utiliser fast-math pour le forcer à choisir (et inliner) les implementations x87 ou sse.