<div dir="ltr"><br><div>As a follow up to this, I captured the generated code in case someone wants to investigate the performance gap discovered in this PR, namely that using LT, GT, EQ seems to be significantly faster than using semantically equal LE, GE, NE operations.</div><div><br></div><div>Full generated code:</div><div><br></div><div>LE code (slower) : <a href="https://gist.github.com/eirbjo/c164a857a32abc0f140668e39634b248">https://gist.github.com/eirbjo/c164a857a32abc0f140668e39634b248</a> </div><div>LT code (faster): <a href="https://gist.github.com/eirbjo/f558947e8200a283eda601a5aa4905e9">https://gist.github.com/eirbjo/f558947e8200a283eda601a5aa4905e9</a><br></div><div><br></div><div>A side-by-side diff does reveal some differences. Particularly, the slower LE code has this chunk:</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">vpcmpgtb              %ymm11, %ymm12, %ymm0<br>vpcmpeqd         %ymm1, %ymm1, %ymm1<br>vpxor              %ymm0, %ymm1, %ymm0<br>vpcmpgtb           %ymm7, %ymm11, %ymm1<br>vpcmpeqd          %ymm2, %ymm2, %ymm2<br>vpxor              %ymm1, %ymm2, %ymm1<br>vpand              %ymm1, %ymm0, %ymm14<br>vpcmpgtb          %ymm6, %ymm11, %ymm0<br>vpcmpeqd          %ymm1, %ymm1, %ymm1<br>vpxor              %ymm0, %ymm1, %ymm0<br>vpcmpgtb           %ymm11, %ymm5, %ymm1<br>vpcmpeqd          %ymm2, %ymm2, %ymm2<br>vpxor              %ymm1, %ymm2, %ymm1<br>vpand              %ymm1, %ymm0, %ymm0<br>vpcmpeqb           %ymm4, %ymm11, %ymm1<br>vpcmpeqd          %ymm13, %ymm13, %ymm13<br>vpxor           %ymm1, %ymm13, %ymm1<br>vpand             %ymm1, %ymm0, %ymm0<br>vpor               %ymm0, %ymm14, %ymm0<br>vpand             %ymm3, %ymm0, %ymm0<br>vpor               %ymm0, %ymm8, %ymm0<br></blockquote><div><br></div><div>While in the similar area, the faster LT code has just this:</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">vpcmpgtb                %ymm11, %ymm9, %ymm2<br>vpand             %ymm1, %ymm2, %ymm1<br>vpor               %ymm0, %ymm1, %ymm0<br>vpand              %ymm8, %ymm0, %ymm0<br>vpor               %ymm0, %ymm3, %ymm0</blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">nopl           (%rax) </blockquote><div><br></div><div>My machine code reading  skills stops here, I just wanted to capture this in case this someone sees an obvious avenue for improvements.<br></div><div><br></div><div>Thanks,</div><div>Eirik.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Feb 28, 2023 at 8:26 PM Viswanathan, Sandhya <<a href="mailto:sandhya.viswanathan@intel.com">sandhya.viswanathan@intel.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="msg7653924128497292127">





<div lang="EN-US" style="overflow-wrap: break-word;">
<div class="m_7653924128497292127WordSection1">
<p class="MsoNormal">Hi Eirik,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">I have created a JBS entry based on your PR description:<u></u><u></u></p>
<p class="MsoNormal"><a href="https://bugs.openjdk.org/browse/JDK-8303401" target="_blank">https://bugs.openjdk.org/browse/JDK-8303401</a><u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Thanks,<u></u><u></u></p>
<p class="MsoNormal">Sandhya<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in">
<p class="MsoNormal"><b>From:</b> Eirik Bjørsnøs <<a href="mailto:eirbjo@gmail.com" target="_blank">eirbjo@gmail.com</a>> <br>
<b>Sent:</b> Tuesday, February 28, 2023 8:05 AM<br>
<b>To:</b> Viswanathan, Sandhya <<a href="mailto:sandhya.viswanathan@intel.com" target="_blank">sandhya.viswanathan@intel.com</a>><br>
<b>Cc:</b> <a href="mailto:panama-dev@openjdk.org" target="_blank">panama-dev@openjdk.org</a><br>
<b>Subject:</b> Re: Vectorized latin1 equalsIgnoreCase<u></u><u></u></p>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Fri, Feb 24, 2023 at 2:17 AM Viswanathan, Sandhya <<a href="mailto:sandhya.viswanathan@intel.com" target="_blank">sandhya.viswanathan@intel.com</a>> wrote:<u></u><u></u></p>
</div>
<div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<div>
<p class="MsoNormal">Yes, it will be wonderful to add this benchmark. Please go ahead and create a PR.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">If there are objections to adding it to mainline JDK, we could fall back to the panama-vectror vectorIntrinsics branch.<u></u><u></u></p>
</div>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Hi Sandhya!<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">I've created a PR here:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"><a href="https://github.com/openjdk/jdk/pull/12790" target="_blank">https://github.com/openjdk/jdk/pull/12790</a><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Since I don't have access to create JBS issues, I would need help with that before this can proceed to review.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Eirik.<u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>

</div></blockquote></div>