[opus] Opus floating-point NEON jump table question
Jean-Marc Valin
jmvalin at jmvalin.ca
Thu Jun 1 16:52:02 UTC 2017
Hi Linfeng,
So right now I think all the ARM optimizations happen to be for
fixed-point, but it doesn't have to be that way. On x86 we have rtcd for
both float and fixed-point and I think on ARM it's also starting to make
sense considering most ARM CPUs now have a decent FPU and the fact that
generally float has slightly better quality than fixed.
Cheers,
Jean-Marc
On 31/05/17 12:47 PM, Linfeng Zhang wrote:
> Hi,
>
> ./configure --build x86_64-unknown-linux-gnu --host arm-linux-gnueabihf
> --disable-assertions --disable-check-asm --enable-intrinsics CFLAGS=-O3
> --disable-shared
>
> When configuring with floating-point and intrinsics enabled as above,
> the generated config.h only has OPUS_ARM_MAY_HAVE_NEON_INTR defined (to
> 1), with
> /* #undef OPUS_ARM_ASM */
> /* #undef OPUS_ARM_INLINE_ASM */
> /* #undef OPUS_ARM_INLINE_EDSP */
> /* #undef OPUS_ARM_INLINE_MEDIA */
> /* #undef OPUS_ARM_INLINE_NEON */
> /* #undef OPUS_ARM_MAY_HAVE_EDSP */
> /* #undef OPUS_ARM_MAY_HAVE_MEDIA */
> /* #undef OPUS_ARM_MAY_HAVE_NEON */
> /* #undef OPUS_ARM_PRESUME_AARCH64_NEON_INTR */
> /* #undef OPUS_ARM_PRESUME_EDSP */
> /* #undef OPUS_ARM_PRESUME_MEDIA */
> /* #undef OPUS_ARM_PRESUME_NEON */
> /* #undef OPUS_ARM_PRESUME_NEON_INTR */
>
> So MAY_HAVE_NEON will be defined to MEDIA version, which will eventually
> fall down to C functions in the jump table:
> # define MAY_HAVE_NEON(name) MAY_HAVE_MEDIA(name)
>
> Therefore all NEON intrinsics optimizations in their jump tables won't
> get called for floating-point.
>
> Am I missing some options in my configure command, or the config is
> intend to do so in floating-point?
>
> Thanks,
> Linfeng
>
>
>
> _______________________________________________
> opus mailing list
> opus at xiph.org
> http://lists.xiph.org/mailman/listinfo/opus
>
More information about the opus
mailing list