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

--- Comment #4 from Matthias Kretz <kretz at kde dot org> ---
(In reply to Uroš Bizjak from comment #3)
> [f]emms should be emitted by an intrinsic (_mm_empty), inserted by the
> programmer. The programmer can mix FP and MMX instructions in the same
> function, so there is no way for compiler to automatically emit emms.

But that was my original point. In #0 the programmer did not mix FP and MMX
instructions, only float and ushort [[gnu::vector_size(8)]] (which isn't even
the same type as __m64) operations. The compiler did it. ;-) In that case, I
understand 2.2.1 p3 as a requirement on the compiler. I sure agree that the use
of MMX intrinsics puts the responsibility with the developer, but use of
vector_size(8)?

> Obviously, when the function returns value in %mm0 register (or in %fp),
> emms should not be inserted at function exit.

Right. Does that mean you agree the ABI document is contradicting itself?

Reply via email to