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

Steven Bosscher <steven at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |NEW
   Last reconfirmed|2016-04-19 00:00:00         |2019-3-4

--- Comment #7 from Steven Bosscher <steven at gcc dot gnu.org> ---
"g++ (Compiler-Explorer-Build) 9.0.1 20190303 (experimental)":

#include <x86intrin.h>

double sqrt_up(double x){
  __m128d y = { x, 0 };
  return _mm_cvtsd_f64(_mm_sqrt_round_sd(y, y,
_MM_FROUND_TO_POS_INF|_MM_FROUND_NO_EXC));
}

double f(double x)
{
  return __builtin_sqrt(x);
}


sqrt_up(double):
        vmovq   %xmm0, %xmm0
        vsqrtsd {ru-sae}, %xmm0, %xmm0, %xmm0
        ret
f(double):
        vsqrtsd %xmm0, %xmm0, %xmm0
        ret

Reply via email to