<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi  Krzysztof,<div class=""><br class=""></div><div class="">Thanks for that. This makes a lot of sense.</div><div class=""><br class=""></div><div class="">John.<br class=""><div class=""><font face="Calibri, sans-serif" size="4" class=""><br class=""></font></div><div class=""><font face="Calibri, sans-serif" size="4" class=""><br class=""></font></div><div class=""><font face="Calibri, sans-serif" size="4" class=""><br class=""></font><div><blockquote type="cite" class=""><div class="">On 2 Jul 2019, at 16:40, Krzysztof Parzyszek <<a href="mailto:kparzysz@quicinc.com" class="">kparzysz@quicinc.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="WordSection1" style="page: WordSection1; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Hi John,<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">The approach I took here was to deal with the intrinsics once they’re generated.  The hardware loop code tries to evaluate the iteration count, and when it fails to do so, it skips the loop.  The complication with unsigned overflow as a loop exit condition is that it makes calculating of the iteration count harder, and the current code for hardware loop doesn’t handle it.  It should be possible to expand it, but it would be a non-trivial amount of work.  Instead, I decided to rewrite the simple cases of unsigned add/sub, where the overflow condition can be rewritten in a way that is currently recognized.<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Varying increments are not translatable into a hardware loop, but increments that are not 1 are, as long as we can calculate the iteration count (the hardware loop instruction takes a register containing the iteration count as an operand).  My guess is that if there was a loop with a non-unit increment, whose exit condition was an unsigned overflow, that loop would not have been handled by the hardware loop generation to begin with, so only dealing with +/-1 should be sufficient.  In the long term improving the hardware loop generation would be a better approach, but it’s more work.<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 9pt; font-family: Consolas;" class="">--<span class="Apple-converted-space"> </span></span><span style="font-size: 9pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">Krzysztof Parzyszek <span class="Apple-converted-space"> </span><a href="mailto:kparzysz@quicinc.com" style="color: purple; text-decoration: underline;" class=""><span style="color: rgb(5, 99, 193);" class="">kparzysz@quicinc.com</span></a>   LLVM compiler development<o:p class=""></o:p></span></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div class=""><div style="border-style: solid none none; border-top-width: 1pt; border-top-color: rgb(225, 225, 225); padding: 3pt 0in 0in;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class="">From:</b><span class="Apple-converted-space"> </span>Joan Lluch <<a href="mailto:joan.lluch@icloud.com" style="color: purple; text-decoration: underline;" class="">joan.lluch@icloud.com</a>><span class="Apple-converted-space"> </span><br class=""><b class="">Sent:</b><span class="Apple-converted-space"> </span>Tuesday, July 2, 2019 8:45 AM<br class=""><b class="">To:</b><span class="Apple-converted-space"> </span>Krzysztof Parzyszek <<a href="mailto:kparzysz@quicinc.com" style="color: purple; text-decoration: underline;" class="">kparzysz@quicinc.com</a>><br class=""><b class="">Cc:</b><span class="Apple-converted-space"> </span><a href="mailto:llvm-dev@lists.llvm.org" style="color: purple; text-decoration: underline;" class="">llvm-dev@lists.llvm.org</a>; Sanjay Patel <<a href="mailto:spatel@rotateright.com" style="color: purple; text-decoration: underline;" class="">spatel@rotateright.com</a>><br class=""><b class="">Subject:</b><span class="Apple-converted-space"> </span>[EXT] Re: [llvm-dev] [hexagon][PowerPC] code regression (sub-optimal code) on LLVM 9 when generating hardware loops, and the "llvm.uadd" intrinsic.<o:p class=""></o:p></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Hi Krzysztof,<o:p class=""></o:p></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Thank you very much for such a quick reaction. This is very much appreciated.<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">I have pulled your code from the main LLVM repo and found that it works fine!. However, after looking at it I have a question about it. My understanding is that your code only replaces uaddo, usubo with ‘1’ as the second operand. This certainly solves the hardware loop problem and I assume it’s enough, as there’s no possible loops with scalable increments?<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">I also want to mention that based on the reply I received from Sanjay, I also tried to override ‘shouldFormOverflowOp’ to always return false. This also solves the issue, but of course it prevents the ‘.with.overflow’ intrinsics to be generated at all. My understanding is that this fully mimics LLVM 7.0 behaviour, but I do not have the required knowledge on Hexagon to give an opinion about whether this is useful. I’m just posting this as a matter of information<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Thanks again!<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">John<o:p class=""></o:p></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div class=""><blockquote style="margin-top: 5pt; margin-bottom: 5pt;" class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">On 1 Jul 2019, at 17:51, Krzysztof Parzyszek <<a href="mailto:kparzysz@quicinc.com" style="color: purple; text-decoration: underline;" class="">kparzysz@quicinc.com</a>> wrote:<o:p class=""></o:p></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">The Hexagon part is fixed in r364790.<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 9pt; font-family: Consolas;" class="">--<span class="apple-converted-space"> </span></span><o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">Krzysztof Parzyszek <span class="apple-converted-space"> </span><a href="mailto:kparzysz@quicinc.com" style="color: purple; text-decoration: underline;" class=""><span style="color: rgb(5, 99, 193);" class="">kparzysz@quicinc.com</span></a>   LLVM compiler development</span><o:p class=""></o:p></div></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div><div class=""><div style="border-style: solid none none; border-top-width: 1pt; border-top-color: rgb(225, 225, 225); padding: 3pt 0in 0in;" class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class="">From:</b><span class="apple-converted-space"> </span>llvm-dev <<a href="mailto:llvm-dev-bounces@lists.llvm.org" style="color: purple; text-decoration: underline;" class="">llvm-dev-bounces@lists.llvm.org</a>><span class="apple-converted-space"> </span><b class="">On Behalf Of<span class="apple-converted-space"> </span></b>Joan Lluch via llvm-dev<br class=""><b class="">Sent:</b><span class="apple-converted-space"> </span>Sunday, June 30, 2019 2:04 PM<br class=""><b class="">To:</b><span class="apple-converted-space"> </span>llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" style="color: purple; text-decoration: underline;" class="">llvm-dev@lists.llvm.org</a>><br class=""><b class="">Subject:</b><span class="apple-converted-space"> </span>[EXT] [llvm-dev] [hexagon][PowerPC] code regression (sub-optimal code) on LLVM 9 when generating hardware loops, and the "llvm.uadd" intrinsic.<o:p class=""></o:p></div></div></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Hi All,<o:p class=""></o:p></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">The following code :<o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif; color: rgb(186, 45, 162);" class="">void</span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">hexagon2(<span class="apple-converted-space"> </span><span style="color: rgb(186, 45, 162);" class="">int</span><span class="apple-converted-space"> </span>*a,<span class="apple-converted-space"> </span><span style="color: rgb(186, 45, 162);" class="">int</span><span class="apple-converted-space"> </span>*res )</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> <span class="apple-converted-space"> </span><span style="color: rgb(186, 45, 162);" class="">int</span><span class="apple-converted-space"> </span>i =<span class="apple-converted-space"> </span><span style="color: rgb(39, 42, 216);" class="">100</span>; </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> <span class="apple-converted-space"> </span><span style="color: rgb(186, 45, 162);" class="">while</span><span class="apple-converted-space"> </span>( i-- ) {</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">    *res++ = *a++;</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">  }</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">}</span><o:p class=""></o:p></div></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">gets compiled as a sub-optimal Software loop on LLVM 9.0 instead of a Hardware loop, whereas it was compiled as a Hardware Loop in LLVM 7.0. <o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">This is the final assembly code generated by LLVM 9.0 :<o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div class=""><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.text</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.file<span class="apple-tab-span">               </span><span class="apple-converted-space"> </span><span style="color: rgb(209, 47, 27);" class="">"main.c"</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.globl<span class="apple-tab-span">           </span><span class="apple-converted-space"> </span>hexagon2               <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// -- Begin function hexagon2</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.p2align<span class="apple-tab-span">     </span><span class="apple-converted-space"> </span><span style="color: rgb(39, 42, 216);" class="">2</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.type<span class="apple-tab-span">            </span><span class="apple-converted-space"> </span>hexagon2,@function</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">hexagon2:                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// @hexagon2</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif; color: rgb(0, 132, 0);" class="">// %bb.0:                               // %entry.old</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">p0 = cmp.gtu(r0,r1); if (p0.new) jump:nt .LBB0_<span style="color: rgb(39, 42, 216);" class="">5</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">r2 = r0</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">allocframe(<span style="color: rgb(0, 132, 0);" class="">#0)</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">}                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// encoding: [A,0x41'A',A,0x15'A',0x00,0x3c,0x02,0x70]</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                       <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">//   fixup A - offset: 0, value: .LBB0_5, kind: fixup_Hexagon_B9_PCREL</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif; color: rgb(0, 132, 0);" class="">// %bb.1:                               // %entry.old</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">r0 = sub(r1,r0)</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">}                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// encoding: [0x00,0xc1,0x20,0xf3]</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">if (p0.new) jump:nt .LBB0_<span style="color: rgb(39, 42, 216);" class="">5</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">p0 = cmp.gt(r0,<span style="color: rgb(0, 132, 0);" class="">#399)</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">}                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// encoding: [A,0x48'A',A,0x5c'A',0xe0,0xf1,0x40,0x75]</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                       <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">//   fixup A - offset: 0, value: .LBB0_5, kind: fixup_Hexagon_B15_PCREL</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif; color: rgb(0, 132, 0);" class="">// %bb.2:</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">r0 =<span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">#-100</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">}                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// encoding: [0x80,0xf3,0xdf,0x78]</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.LBB0_<span style="color: rgb(39, 42, 216);" class="">3</span>:                               <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// %while.body</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                       <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// =>This Inner Loop Header: Depth=1</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">r3 = add(r0,<span style="color: rgb(0, 132, 0);" class="">#1)</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">r4 = memw(r2++<span style="color: rgb(0, 132, 0);" class="">#4)</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">memw(r1++<span style="color: rgb(0, 132, 0);" class="">#4) = r4.new</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">}                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// encoding: [0x23,0x40,0x00,0xb0,0x24,0x40,0x82,0x9b,0x08,0xd2,0xa1,0xab]</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">p0 = cmp.gtu(r0,r3); if (!p0.new) jump:t .LBB0_<span style="color: rgb(39, 42, 216);" class="">3</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">r0 = r3</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">}                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// encoding: [A,0x63'A',0x40'A',0x15'A',0x00,0xc0,0x63,0x70]</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                       <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">//   fixup A - offset: 0, value: .LBB0_3, kind: fixup_Hexagon_B9_PCREL</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif; color: rgb(0, 132, 0);" class="">// %bb.4:                               // %while.end</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">r31:<span style="color: rgb(39, 42, 216);" class="">30</span><span class="apple-converted-space"> </span>= dealloc_return(r30):raw</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">}                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// encoding: [0x1e,0xc0,0x1e,0x96]</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.LBB0_<span style="color: rgb(39, 42, 216);" class="">5</span>:                               <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// %while.body.rtli</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">call memmove</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">r1:<span style="color: rgb(39, 42, 216);" class="">0</span><span class="apple-converted-space"> </span>= combine(r2,r1)</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">r2 =<span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">#400</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">}                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// encoding: [A,0x40'A',A,0x5a'A',0x00,0x41,0x02,0xf5,0x02,0xf2,0x00,0x78]</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                       <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">//   fixup A - offset: 0, value: memmove, kind: fixup_Hexagon_B22_PCREL</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">r31:<span style="color: rgb(39, 42, 216);" class="">30</span><span class="apple-converted-space"> </span>= dealloc_return(r30):raw</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">}                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// encoding: [0x1e,0xc0,0x1e,0x96]</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.Lfunc_end0:</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.size<span class="apple-tab-span">             </span><span class="apple-converted-space"> </span>hexagon2, .Lfunc_end0-hexagon2</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                       <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// -- End function</span></span><o:p class=""></o:p></div></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">This is the assembly code generated by LLVM 7.0 :</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.text</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.file<span class="apple-tab-span">               </span><span class="apple-converted-space"> </span><span style="color: rgb(209, 47, 27);" class="">"main.c"</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.globl<span class="apple-tab-span">           </span><span class="apple-converted-space"> </span>hexagon2               <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// -- Begin function hexagon2</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.p2align<span class="apple-tab-span">     </span><span class="apple-converted-space"> </span><span style="color: rgb(39, 42, 216);" class="">2</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.type<span class="apple-tab-span">            </span><span class="apple-converted-space"> </span>hexagon2,@function</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">hexagon2:                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// @hexagon2</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif; color: rgb(0, 132, 0);" class="">// %bb.0:                               // %entry.old</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">p0 = cmp.gtu(r0,r1); if (p0.new) jump:nt .LBB0_<span style="color: rgb(39, 42, 216);" class="">5</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">r2 = r0</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">allocframe(<span style="color: rgb(0, 132, 0);" class="">#0)</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">}                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// encoding: [A,0x41'A',A,0x15'A',0x00,0x3c,0x02,0x70]</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                       <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">//   fixup A - offset: 0, value: .LBB0_5, kind: fixup_Hexagon_B9_PCREL</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif; color: rgb(0, 132, 0);" class="">// %bb.1:                               // %entry.old</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">r0 = sub(r1,r0)</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">}                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// encoding: [0x00,0xc1,0x20,0xf3]</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">if (p0.new) jump:nt .LBB0_<span style="color: rgb(39, 42, 216);" class="">5</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">p0 = cmp.gt(r0,<span style="color: rgb(0, 132, 0);" class="">#399)</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">}                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// encoding: [A,0x48'A',A,0x5c'A',0xe0,0xf1,0x40,0x75]</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                       <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">//   fixup A - offset: 0, value: .LBB0_5, kind: fixup_Hexagon_B15_PCREL</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif; color: rgb(0, 132, 0);" class="">// %bb.2:                               // %while.body.preheader</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">loop0(.LBB0_<span style="color: rgb(39, 42, 216);" class="">3</span>,<span style="color: rgb(0, 132, 0);" class="">#100)</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">}                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// encoding: [0x20'A',0xc0'A',0x03'A',0x69'A']</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                       <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">//   fixup A - offset: 0, value: .LBB0_3, kind: fixup_Hexagon_B7_PCREL</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.Ltmp0:                                <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// Block address taken</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.LBB0_<span style="color: rgb(39, 42, 216);" class="">3</span>:                               <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// %while.body</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                       <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// =>This Inner Loop Header: Depth=1</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">r0 = memw(r2++<span style="color: rgb(0, 132, 0);" class="">#4)</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">memw(r1++<span style="color: rgb(0, 132, 0);" class="">#4) = r0.new</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">} :endloop0                    <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// encoding: [0x20,0x80,0x82,0x9b,0x08,0xd2,0xa1,0xab]</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif; color: rgb(0, 132, 0);" class="">// %bb.4:                               // %while.end</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">r31:<span style="color: rgb(39, 42, 216);" class="">30</span><span class="apple-converted-space"> </span>= dealloc_return(r30):raw</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">}                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// encoding: [0x1e,0xc0,0x1e,0x96]</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.LBB0_<span style="color: rgb(39, 42, 216);" class="">5</span>:                               <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// %while.body.rtli</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">call memmove</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">r1:<span style="color: rgb(39, 42, 216);" class="">0</span><span class="apple-converted-space"> </span>= combine(r2,r1)</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">r2 =<span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">#400</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">}                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// encoding: [A,0x40'A',A,0x5a'A',0x00,0x41,0x02,0xf5,0x02,0xf2,0x00,0x78]</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                       <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">//   fixup A - offset: 0, value: memmove, kind: fixup_Hexagon_B22_PCREL</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">{</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                               </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">r31:<span style="color: rgb(39, 42, 216);" class="">30</span><span class="apple-converted-space"> </span>= dealloc_return(r30):raw</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">}                              <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// encoding: [0x1e,0xc0,0x1e,0x96]</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.Lfunc_end0:</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span class="apple-tab-span"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                       </span></span><span class="apple-converted-space"><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span></span><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">.size<span class="apple-tab-span">             </span><span class="apple-converted-space"> </span>hexagon2, .Lfunc_end0-hexagon2</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class="">                                       <span class="apple-converted-space"> </span><span style="color: rgb(0, 132, 0);" class="">// -- End function</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Monaco, serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">The code generated by LLVM 7.0 is better than LLVM 9.0 because 9.0 did not made use of Hardware loops.  This is in my opinion a bad regression from some earlier version. This is not an isolated case, more cases of the same LLVM 9 ‘defect’ are easy to find.</span><o:p class=""></o:p></div></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">I have investigated the issue and I identified the root cause of it, which is related with the initial use of the “llvm.uadd" intrinsic in LLVM 9.0 to increment the loop Induction Variable, instead of an “add” instruction like LLVM 7.0. </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">This is the while.body excerpt after "CodeGen Prepare” in LLVM 9.0</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">while.body:                                       ; preds = %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">entry.old</span>, %while.body</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %lsr.iv = phi i32 [<span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">%math</span>, %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">while.body</span><span class="apple-converted-space"> </span>], [<span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">-100</span>, %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">entry.old</span><span class="apple-converted-space"> </span>]</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %res.addr.04 = phi i32* [ %cgep1, %while.body ], [ %res, %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">entry.old</span><span class="apple-converted-space"> </span>]</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %a.addr.03 = phi i32* [ %cgep, %while.body ], [ %a, %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">entry.old</span><span class="apple-converted-space"> </span>]</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %6 = load i32, i32* %a.addr.03, align 4, !tbaa !2</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  store i32 %6, i32* %res.addr.04, align 4, !tbaa !2</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">7</span><span class="apple-converted-space"> </span>=<span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">call</span><span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">{</span><span class="apple-converted-space"> </span>i32<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">,</span><span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">i1 } @llvm.uadd.with.overflow.i32(i32<span class="apple-converted-space"> </span></span>%lsr.iv,<span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">i32<span class="apple-converted-space"> </span></span>1<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">)</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">math</span><span class="apple-converted-space"> </span>=<span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">extractvalue</span><span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">{</span><span class="apple-converted-space"> </span>i32<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">,</span><span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">i1 }<span class="apple-converted-space"> </span></span>%<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">7</span>, 0</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: rgb(212, 237, 244);" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %ov = extractvalue { i32, i1 } %7, 1</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %cgep = getelementptr inbounds i32, i32* %a.addr.03, i32 1</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %cgep1 = getelementptr inbounds i32, i32* %res.addr.04, i32 1</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  br i1 %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">ov</span>, label %while.end, label %while.body</span><o:p class=""></o:p></div></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">And this is the same excerpt on  LLVM 7.0</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">while.body:                                       ; preds = %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">while.body.preheader</span>, %while.body</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %lsr.iv = phi i32 [<span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">-100</span>, %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">while.body.preheader</span><span class="apple-converted-space"> </span>], [<span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">%lsr.iv.next</span>, %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">while.body</span><span class="apple-converted-space"> </span>]</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %res.addr.04 = phi i32* [ %cgep1, %while.body ], [ %res, %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">while.body.preheader</span><span class="apple-converted-space"> </span>]</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %a.addr.03 = phi i32* [ %cgep, %while.body ], [ %a, %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">while.body.preheader</span><span class="apple-converted-space"> </span>]</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %6 = load i32, i32* %a.addr.03, align 4, !tbaa !2</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  store i32 %6, i32* %res.addr.04, align 4, !tbaa !2</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">lsr.iv.next</span><span class="apple-converted-space"> </span>=<span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">add</span><span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">nsw</span><span class="apple-converted-space"> </span>i32 %lsr.iv, 1</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">tobool</span><span class="apple-converted-space"> </span>=<span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">icmp</span><span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">eq</span><span class="apple-converted-space"> </span>i32 %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">lsr.iv.next</span>, 0</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %cgep = getelementptr inbounds i32, i32* %a.addr.03, i32 1</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %cgep1 = getelementptr inbounds i32, i32* %res.addr.04, i32 1</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  br i1 %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">tobool</span>, label %while.end, label %while.body</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class=""> </span><o:p class=""></o:p></div></div></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">LLVM 9 uses “llvm.uadd”. This finally prevents the “Hexagon Hardware Loops” pass to recognise a hardware loop pattern, resulting in sub-optimal code, specially compared with what LLVM 7.0 produces.</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">The code (excerpt) just before the Hexagon Hardware Loops pass on LLVM 9 is this:</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">5</span>:</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">; predecessors: %bb.1</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  successors: %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">3</span>(0x80000000); %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">3</span>(<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">100.00</span>%)</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">8</span>:intregs = A2_tfrsi -100</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  J2_jump %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">3</span>, implicit-def $pc</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class=""><br class=""><br class=""><br class=""></span><o:p class=""></o:p></div></div></div></div><div class=""><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">3</span>.while.body:</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">; predecessors: %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">3</span>, %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">5</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  successors: %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">4</span>(0x04000000), %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">3</span>(0x7c000000); %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">4</span>(3.12%), %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">3</span>(96.88%)</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %0:intregs = PHI %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">8</span>:intregs, %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">5</span>, %3:intregs, %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">3</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %1:intregs = PHI %7:intregs, %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">5</span>, %5:intregs, %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">3</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %2:intregs = PHI %6:intregs, %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">5</span>, %4:intregs, %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">3</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">13</span>:intregs, %4:intregs = L2_loadri_pi %2:intregs<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">(tied-def 1)</span>, 4 :: (load 4 from %ir.a.addr.03, !tbaa !2)</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %5:intregs = S2_storeri_pi %1:intregs<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">(tied-def 0)</span>, 4, %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">13</span>:intregs :: (store 4 into %ir.res.addr.04, !tbaa !2)</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %3:intregs = A2_addi %0:intregs, 1</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">14</span>:predregs =<span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">C2_cmpgtu</span><span class="apple-converted-space"> </span>%<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">0</span>:intregs,<span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">%3:intregs</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  J2_jumpf %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">14</span>:predregs, %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">3</span>, implicit-def dead $pc</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  J2_jump %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">4</span>, implicit-def dead $pc</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""><br class=""><br class=""><br class=""></span><o:p class=""></o:p></div></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">The same code on LLVM 7 is this:</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class=""><br class=""><br class=""><br class=""></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">2.while.body.preheader</span>:</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">; predecessors: %bb.1</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  successors: %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">4</span>(0x80000000); %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">4</span>(<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">200.00</span>%)</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">11</span>:intregs = A2_tfrsi -100</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  J2_jump %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">4</span>, implicit-def<span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">dead<span class="apple-converted-space"> </span></span>$pc</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class=""><br class=""><br class=""><br class=""></span><o:p class=""></o:p></div></div></div></div><div class=""><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">4</span>.while.body:</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">; predecessors: %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">2</span>, %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">4</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  successors: %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">5</span>(0x04000000), %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">4</span>(0x7c000000); %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">5</span>(3.12%), %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">4</span>(96.88%)</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %0:intregs = PHI %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">11</span>:intregs, %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">2</span>, %3:intregs, %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">4</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %1:intregs = PHI %7:intregs, %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">2</span>, %5:intregs, %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">4</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %2:intregs = PHI %6:intregs, %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">2</span>, %4:intregs, %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">4</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">12</span>:intregs, %4:intregs = L2_loadri_pi %2:intregs, 4 :: (load 4 from %ir.a.addr.03, !tbaa !2)</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %5:intregs = S2_storeri_pi %1:intregs, 4, %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">12</span>:intregs :: (store 4 into %ir.res.addr.04, !tbaa !2)</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %3:intregs = A2_addi %0:intregs, 1</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">13</span>:predregs =<span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">C2_cmpeqi</span><span class="apple-converted-space"> </span>%<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">3</span>:intregs,<span class="apple-converted-space"> </span><span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">0</span></span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  J2_jumpf %<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">13</span>:predregs, %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">4</span>, implicit-def dead $pc</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 8.5pt; font-family: Menlo, serif;" class="">  J2_jump %bb.<span style="background-color: rgb(212, 237, 244); background-position: initial initial; background-repeat: initial initial;" class="">5</span>, implicit-def dead $pc</span><o:p class=""></o:p></div></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">The differences above allow LLVM 7 to turn %13, %3, %11 into a hardware Loop as shown in the assembly code earlier in this message. However, LLVM 9 can’t identify a Hardware loop pattern due to the odd C2_cmpgtu instruction that gets generated. This instruction is a consequence of the introduction of the “llvm.addu” intrinsic that I showed earlier.</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">I am presenting here the case of Hexagon, but I suspect the same sub-optimal code may happen for the PowerPC (not checked yet).</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">All the code excerpts were obtained with -Os flags</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">I’m highly interested in getting in contact with someone familiar with the Hexagon/PowerPC targets regarding this subject. Any pointers to the right persons would be appreciated. My interest comes from the fact that I am proposing an improvement on the LSR pass that affects all targets and I need hardware loops to be properly generated in LLVM 9 like they used to be in LLVM 7. </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">Thanks</span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> </span><o:p class=""></o:p></div></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; background-color: white;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">John.</span></div></div></div></div></div></blockquote></div></div></div></div></div></blockquote></div><br class=""></div></div></body></html>