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

Reply via email to