https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86866
Bug ID: 86866 Summary: MMX intrinsics / x87 registers aliasing Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: konovalov.alv at ya dot ru Target Milestone: --- Each 64-bit MMX register corresponds to the mantissa part of an 80-bit x87 register. But the GCC considers the MMX and X87 registers independent. For example: #include <mmintrin.h> #include <stdio.h> int main() { float x = 3.14; __m64 y = _mm_or_si64(_m_from_int(1), _m_from_int(2)); (void)y; printf("%f\n", x); } If I build this code using 387 floating-point coprocessor, program prints wrong result: bash-4.2$ gcc -mfpmath=387 -O0 -g3 test2.c -o test bash-4.2$ ./test -nan