Hi,

On Thu, Jul 26, 2012 at 2:39 PM, Diego Biurrun <di...@biurrun.de> wrote:
> On Thu, Jul 26, 2012 at 01:50:17PM -0700, Ronald S. Bultje wrote:
>>
>> discussion thread. We currently use HAVE_SSSE3 and related macros to
>> indicate that we want to compile these and that our compiler tools are
>> good enough to know what to do with it. As a result, we currently use
>> HAVE_AVX around all avx code (yasm only - we don't have any avx inline
>> asm), HAVE_SSSE3 around some yasm and all inline asm code that uses
>> ssse3 instructions, and sometimes HAVE_SSE/2 around inline asm using
>> xmm regs. There is no HAVE_SSE4. HAVE_MMX2 is almost never used but
>> does exist.
>
> Do we need HAVE_SSE4?  It should be easy enough to add.
>
>> HAVE_MMX is something entirely different and is used as an
>> alternative form of ARCH_X86.
>
> No, HAVE_MMX is just that.  True, it's abused in some places where
> ARCH_X86 would be better (when invoking init functions), but that
> is an issue that needs to be addressed at some point.
>
>> In addition to that, we're using inline asm checks to test whether to
>> enable HAVE_SSSE3 and HAVE_SSE2 (line 2850 of configure).
>>
>> Can we split these macros in something for yasm vs something for
>> inline asm? This means e.g. that we can use ssse3 if yasm (but not
>> inline asm) supports it, if inline asm is lacking, etc.
>
> What is your goal?  Do you want to write something like
>
>   #if HAVE_INLINE_SSSE3
>
> instead of
>
>   #if HAVE_SSSE3 && HAVE_INLINE_ASM
>
> ?

Right now, in practice:

HAVE_SSSE3 means "we support inline ssse3"
HAVE_SSE2 means "we support inline sse2"
HAVE_AVX means "we support yasm avx" but depends on HAVE_SSSE3

I wonder whether it makes sense to have a "generic" HAVE_SSSE3 anyway
- when would we use it, what would it mean? I think in practice, we
probably want a HAVE_INLINE_SSSE3, as you said, because yes, there's
compilers that don't support this, but do support HAVE_INLINE_ASM in
general. Likewise, HAVE_AVX could be renamed HAVE_YASM_AVX or so.
Having HAVE_YASM_SSSE3 seems pointless, I don't think we support any
yasm/nasm version that doesn't understand ssse3, so it'd always be 1.
However, this would make it clear that HAVE_SSSE3 and HAVE_AVX don't
and shouldn't depend on each other.

Ronald
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to