[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