Currently if you use f128 in 64-bit mode with sse disabled and mmx enabled, you get an error about not being able to use an SSE register for a return. And then later we throw an assert trying to emit an xmm register copy.
Changing this to check SSE instead of MMX at least stops us from printing the error and asserting.
I'm still not sure this is correct though. Looking at some assembly with sse/mmx enabled we think the f128 library functions like add return their result in xmm0. But if you disable sse/mmx we then think they return their result in rax/rdx. So unless the library functions return their result both ways, I don't think this is correct.
Here's an example that currently crashes when compiled with "clang -c -mno-mmx"
void foo(__float128 a, __float128 b, __float128 *c) { *c = a + b; }