[Bug tree-optimization/55760] scalar code non using rsqrtss and rcpss

vincenzo.innocente at cern dot ch gcc-bugzilla@gcc.gnu.org
Tue Jan 8 15:29:00 GMT 2013


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

--- Comment #5 from vincenzo Innocente <vincenzo.innocente at cern dot ch> 2013-01-08 15:29:18 UTC ---
we just got "hit" by this great type of code (copysign is unknown to
scientists)

most probably gcc could optimize it for -Ofast to return copysignf(1.f,x); (x/x
is optimized in 1)


cat one.cc;c++ -Ofast -mrecip -S one.cc; cat one.s
#include<cmath>
int one(float x) {
  return x/std::abs(x);
}

    .text
    .align 4,0x90
    .globl __Z3onef
__Z3onef:
LFB86:
    movss    LC0(%rip), %xmm2
    andps    %xmm0, %xmm2
    rcpss    %xmm2, %xmm1
    mulss    %xmm1, %xmm2
    mulss    %xmm1, %xmm2
    addss    %xmm1, %xmm1
    subss    %xmm2, %xmm1
    mulss    %xmm0, %xmm1
    cvttss2si    %xmm1, %eax
    ret



More information about the Gcc-bugs mailing list