<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div>
<blockquote type="cite" class="">
<div class=""><br class="">
On May 31, 2017, at 12:47 PM, Linfeng Zhang <<a href="mailto:linfengz@google.com" class="">linfengz@google.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div dir="ltr" class="">
<div style="font-size:12.8px" class="">Hi,</div>
<div style="font-size:12.8px" class=""><br class="">
</div>
<div style="font-size:12.8px" class=""><span style="font-size:10pt;font-family:arial" class="">./configure --build x86_64-unknown-linux-gnu --host arm-linux-gnueabihf --disable-assertions --disable-check-asm --enable-intrinsics CFLAGS=-O3 --disable-shared</span><br class="">
</div>
<div style="font-size:12.8px" class=""><span style="font-size:10pt;font-family:arial" class=""><br class="">
</span></div>
<div style="font-size:12.8px" class="">When configuring with floating-point and intrinsics enabled as above, the generated <span style="font-size:12.8px" class="">config.h only has OPUS_ARM_MAY_HAVE_NEON_INTR defined (to 1), with</span></div>
<div style="font-size:12.8px" class="">
<div class="">
<div class="">/* #<span class="gmail-il">undef</span> OPUS_ARM_ASM */</div>
<div class="">/* #<span class="gmail-il">undef</span> OPUS_ARM_INLINE_ASM */<br class="">
</div>
<div class="">/* #<span class="gmail-il">undef</span> OPUS_ARM_INLINE_EDSP */<br class="">
</div>
<div class="">/* #<span class="gmail-il">undef</span> OPUS_ARM_INLINE_MEDIA */<br class="">
</div>
<div class="">/* #<span class="gmail-il">undef</span> OPUS_ARM_INLINE_NEON */<br class="">
</div>
<div class="">/* #<span class="gmail-il">undef</span> OPUS_ARM_MAY_HAVE_EDSP */<br class="">
</div>
<div class="">/* #<span class="gmail-il">undef</span> OPUS_ARM_MAY_HAVE_MEDIA */<br class="">
</div>
<div class="">/* #<span class="gmail-il">undef</span> OPUS_ARM_MAY_HAVE_NEON */<br class="">
</div>
</div>
<div class="">
<div class="">/* #<span class="gmail-il">undef</span> OPUS_ARM_PRESUME_AARCH64_NEON_<wbr class="">INTR */</div>
<div class="">/* #<span class="gmail-il">undef</span> OPUS_ARM_PRESUME_EDSP */<br class="">
</div>
<div class="">/* #<span class="gmail-il">undef</span> <span class="gmail-il">OPUS_ARM_PRESUME_MEDIA</span> */<br class="">
</div>
<div class="">/* #<span class="gmail-il">undef</span> OPUS_ARM_PRESUME_NEON */<br class="">
</div>
<div class="">/* #<span class="gmail-il">undef</span> OPUS_ARM_PRESUME_NEON_INTR */<br class="">
</div>
</div>
</div>
<div style="font-size:12.8px" class=""><br class="">
</div>
<div style="font-size:12.8px" class=""><font class="">So MAY_HAVE_NEON will be defined to <span class="gmail-il">MEDIA</span> version, which will eventually fall down to C functions in the jump table:<br class="">
</font></div>
<div style="font-size:12.8px" class=""><font class=""># define MAY_HAVE_NEON(name) MAY_HAVE_MEDIA(name)<br class="">
</font></div>
<div style="font-size:12.8px" class=""><font class=""><br class="">
</font></div>
<div style="font-size:12.8px" class=""><font class="">Therefore all NEON intrinsics optimizations in their jump tables won't get called for floating-point.</font></div>
<div style="font-size:12.8px" class=""><br class="">
</div>
<div style="font-size:12.8px" class="">Am I missing some options in my configure command, or the config is intend to do so in floating-point?</div>
<div style="font-size:12.8px" class=""><br class="">
</div>
<div style="font-size:12.8px" class="">Thanks,</div>
<div style="font-size:12.8px" class="">Linfeng</div>
</div>
</div>
</blockquote>
</div>
<br class="">
<div class="">The structure of this is pretty tangled and confusing, but what you’ll find is that the MAY_HAVE_NEON macro isn’t used in the jump tables for the two Neon intrinsics functions (silk_NSQ_noise_shape_feedback_loop_neon and celt_pitch_xcorr_float_neon)
which are used in a floating-point neon build. See silk/arm/arm_silk_map.c and celt/arm/arm_celt_map.c.</div>
<div class=""><br class="">
</div>
<div class="">So long as OPUS_ARM_MAY_HAVE_NEON_INTR and OPUS_HAVE_RTCD are set in config.h, it’ll pick up those functions, and check for them using RTCD.</div>
</div>
</body>
</html>