[Bug c++/68125] New: std::sqrt prevent use of associative math

vincenzo.innocente at cern dot ch gcc-bugzilla@gcc.gnu.org
Wed Oct 28 06:57:00 GMT 2015


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68125

            Bug ID: 68125
           Summary: std::sqrt prevent use of associative math
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vincenzo.innocente at cern dot ch
  Target Milestone: ---

with -Ofast

the code generated differs
float rsqrt1(float a, float x, float y) {
   return a/std::sqrt(x)/std::sqrt(y);
}

float rsqrt2(float a, float x, float y) {
   return a/sqrtf(x)/sqrtf(y);
}

rsqrt1(float, float, float):
        sqrtss  %xmm2, %xmm2
        sqrtss  %xmm1, %xmm1
        mulss   %xmm2, %xmm1
        divss   %xmm1, %xmm0
        ret
rsqrt2(float, float, float):
        mulss   %xmm1, %xmm2
        rsqrtss %xmm2, %xmm1
        mulss   %xmm1, %xmm2
        mulss   %xmm1, %xmm2
        mulss   .LC9(%rip), %xmm1
        addss   .LC8(%rip), %xmm2
        mulss   %xmm1, %xmm2
        mulss   %xmm2, %xmm0
        ret



More information about the Gcc-bugs mailing list