On Wed, 9 Jan 2013, Ronald S. Bultje wrote:
Hi,
On Wed, Jan 9, 2013 at 12:57 PM, Martin Storsjö <[email protected]> wrote:
This is a fallback for cases where building with yasm enabled, but
the compiler doesn't support inline asm (or it is disabled by the
user), and the compiler doesn't support the _mm_empty intrinsic (like
gcc, if the user hasn't added -mmmx to the cflags).
Is there a real-world case where this makes happens? It's a little
much to have three versions of the same function...
The "real-world" case was when Daniel was working on the yasmified yadif,
and suddenly got a bunch of fate failures when building with
--disable-inline-asm, baffling everybody - this is the issue I'm trying to
fix. But since gcc does support the intrinsics if set up properly, he
could also have fixed it by adding -mmmx to the cflags.
But the point is mainly that since external and inline asm are totally
independent now, the yasm code is enabled just as soon as the yasm tool is
available, but the yasm code has the hidden implicit dependency on a
working emms_c() function. So with this, if you have external yasm
functions, you will also be sure to have a working emms_c(). (And
conversely, if you only have inline asm but no yasm, you will always have
the inline asm version of emms_c, so there's no hidden dependency in the
other direction either.) Given that this function itself is miniscule (3
bytes), it's not a too big burden if it avoids the implicit cross
dependencies, even if it won't be used in most cases.
// Martin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel