<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">[Sorry for the **long** delay in responding.]</div><div class="gmail_quote"><br></div><div class="gmail_quote">Andy Polyakov <span dir="ltr"><<a href="mailto:appro@openssl.org" target="_blank">appro@openssl.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><a href="http://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=11208dcfb9105e8afa37233185decefd45e89e17" rel="noreferrer" target="_blank">http://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=11208dcfb9105e8afa37233185decefd45e89e17</a><br>
made whole assembly pack Thumb2-friendly, so that now you should be able<br>
to compile all modules. Please, double-check.</blockquote><div><br></div><div>This is awesome!</div><div><br></div><div>I have a question about the `it` and `itt` instructions you inserted. You wrapped them in `#ifdef __thumb2__`, which is not wrong, but AFAICT is usually unnecessary. Is this to support some old assemblers that don't compile `it` (etc.) into nothing for non-Thumb builds?</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">There is no option to<br>
disable NEON (yet?), because a) I want to expose it to more build cases<br>
to catch eventual bugs; b) would like to suggest idea of supporting<br>
Cortex-M with -march=armv6t2 -mthumb. Latter means that you'll loose<br>
some performance, because it won't utilize word load instruction's<br>
capability to handle misaligned access in ARMv7. But on the other hand<br>
it won't have ideas about compiling NEON, and you'll be excused to think<br>
about which particular Cortex-M is targeted, one will be able to cover<br>
all with single config/buid. Can it be viable compromise? One would<br>
still be able to tune for favorite Mx...</blockquote><div><br></div><div>For Cortex-M4 and friends, one would really want to use the full <span style="color:rgb(84,84,84);line-height:18.2px">ARMv7-M</span> instruction set (i.e. not compile for armv6t2). In general Cortex-M platforms are so limited that every bit of performance and space savings matters. So, I think it is definitely worthwhile to support the non-NEON <span style="color:rgb(84,84,84);line-height:18.2px">ARMv7-M configuration. One easy way to do this would be to avoid building NEON code when </span><span style="color:rgb(51,51,153);font-family:'Lucida Sans Typewriter','Courier New',Courier,monospace;font-size:11.7px">__TARGET_PROFILE_M </span>is defined. Alternatively, similar to what BoringSSL did, you could have an option that says "instead of doing runtime feature detection, instead detect features at compile time based on <span style="color:rgb(51,51,153);font-family:'Lucida Sans Typewriter','Courier New',Courier,monospace;font-size:11.7px">__ARM_NEON__ </span>and the like." I think such a configuration would also help the C compiler do whole-program optimization better.</div><div><br></div><div>Again, thanks for doing this!</div><div><br></div><div>Cheers,</div><div>Brian</div></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><a href="https://briansmith.org/" target="_blank">https://briansmith.org/</a></div><div><br></div></div></div></div></div></div></div>
</div></div>