https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70708
--- Comment #15 from Marc Glisse <glisse at gcc dot gnu.org> --- (In reply to H.J. Lu from comment #13) > (In reply to Marc Glisse from comment #11) > > Since for MyMinV1 we generate no move at all, then that code should also be > > valid for MyMinV2 (no issue with sNaN in the upper part or whatever). > > Since _mm_set_sd clears upper bits, return from MyMinV2 should have upper > bits cleared. If not, it is a bug. MyMinV2 returns a double, not a __m128d. I tried to read what the ABI says about the unused upper part of SSE registers when passing/returning a double and couldn't find any information. Could you explain in more details what makes MyMinV2 so different from MyMinV1? I appear to be missing some crucial piece of information here :-(