[Bug target/70708] Suboptimal code generated when using _mm_set_sd (X64)

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Apr 18 13:29:00 GMT 2016


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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2016-04-18
     Ever confirmed|0                           |1

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
If there were not PR61810 then

double MyMinV2(double a, double b) {
    double undef = undef;
    __m128d x = (__m128d) { a, undef };
    __m128d y = (__m128d) { b, undef };
    return _mm_cvtsd_f64(_mm_min_sd(x, y));
}

would work.  Currently it does

MyMinV2:
.LFB525:
        .cfi_startproc
        movhpd  .LC0(%rip), %xmm0
        movhpd  .LC0(%rip), %xmm1
        minsd   %xmm1, %xmm0

so as if you'd use 0.0 for undef.  Might be still "better" than going
through the stack.


More information about the Gcc-bugs mailing list