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.