<div dir="ltr">Hi Arnaud,<div><br></div><div>I think you're right. Please go ahead and commit your current patch whenever you're ready. We can make the allocator-configuration patch afterwards.</div><div><br></div><div>Cheers,</div><div>Lang.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Sep 8, 2014 at 11:47 PM, Arnaud A. de Grandmaison <span dir="ltr"><<a href="mailto:arnaud.degrandmaison@arm.com" target="_blank">arnaud.degrandmaison@arm.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-GB" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Yes, that would work. I can prepare a patch for that – unless you want to do it.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Do you feel we should commit this before or after my patch is committed ? I think it makes sense to commit it after, as it would be used right away by the aarch64 backend, without having to wait for a subsequent commit.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal" style="margin-left:36.0pt"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Lang Hames [mailto:<a href="mailto:lhames@gmail.com" target="_blank">lhames@gmail.com</a>] <br><b>Sent:</b> 08 September 2014 21:40<br><b>To:</b> Arnaud De Grandmaison</span></p><div><div class="h5"><br><b>Subject:</b> Re: [PATCH] Add experimental PBQP support<u></u><u></u></div></div><p></p><div><div class="h5"><p class="MsoNormal" style="margin-left:36.0pt"><u></u> <u></u></p><div><p class="MsoNormal" style="margin-left:36.0pt">Hi Arnaud,<u></u><u></u></p><div><p class="MsoNormal" style="margin-left:36.0pt"><u></u> <u></u></p></div><div><p class="MsoNormal" style="margin-left:36.0pt">My (vague) idea is to add a TargetSubtargetInfo parameter to the register allocator create.* functions. Most of the register allocators would ignore this argument, but PBQP's create would then look like:<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:36.0pt"><u></u> <u></u></p></div><p class="MsoNormal" style="margin-left:36.0pt"><span style="font-family:"Courier New"">FunctionPass* llvm::createDefaultPBQPRegisterAllocator(const TargetSubtargetInfo &STI) {<br>  return createPBQPRegisterAllocator(STI.createPBQPRAConstraintsBuilder());<br>}</span><u></u><u></u></p><div><p class="MsoNormal" style="margin-left:36.0pt"><u></u> <u></u></p></div><div><p class="MsoNormal" style="margin-left:36.0pt">The default implementation of createPBQPRAConstraintsBuilder() would just return the standard interference builder. Targets could override this to return something different.<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:36.0pt"><u></u> <u></u></p></div><div><p class="MsoNormal" style="margin-left:36.0pt">I believe that would preserve all the use cases you described above, and avoid the hacks to the pass setup.<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:36.0pt"><u></u> <u></u></p></div><div><p class="MsoNormal" style="margin-left:36.0pt">- Lang.<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:36.0pt"><u></u> <u></u></p></div><div><p class="MsoNormal" style="margin-left:36.0pt">On Mon, Sep 8, 2014 at 12:46 PM, Arnaud A. de Grandmaison <<a href="mailto:arnaud.degrandmaison@arm.com" target="_blank">arnaud.degrandmaison@arm.com</a>> wrote:<u></u><u></u></p><div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"><div><div><p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:72.0pt"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Lang Hames [mailto:<a href="mailto:lhames@gmail.com" target="_blank">lhames@gmail.com</a>] <br><b>Sent:</b> 08 September 2014 20:06<br><b>To:</b> Arnaud De Grandmaison<br><b>Cc:</b> David Blaikie; Tim Northover; Commit Messages and Patches for LLVM<br><b>Subject:</b> Re: [PATCH] Add experimental PBQP support</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:72.0pt"> <u></u><u></u></p><div><p class="MsoNormal" style="margin-left:72.0pt">Hi Arnaud,<u></u><u></u></p><div><p class="MsoNormal" style="margin-left:72.0pt"> <u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:72.0pt">One aspect of this that Dave drew my attention to is the -aarch64-pbqp flag. I might look at tweaking the way register allocators are created so that the Target can supply a PBQP problem builder. That way the '-regalloc=pbqp' would just work. Then you could avoid the hacks in the pass manager setup.<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:72.0pt"><span style="color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I also thought about that, but without having a testcase showing it, it would have been difficult to  upstream any change.</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">At least, what we have today is flexible enough that:</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">- targets that need no specific PBQPBuilder just use the –regalloc=pbqp</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">- targets can subclass the PBQPBuilder, while still using the generic build method, like aarch64 does</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">- targets can completely override the generic build method --- and not even use it</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I think it is important to keep those 3 possibilities, so that people who want to experiment can do it easily.</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I have not been able to come up with a good solution, or at least one which is worth the changes implied. If you come up with a better solution, I will gladly use it </span><span style="font-size:11.0pt;font-family:Wingdings;color:#1f497d">J</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:36.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p></div><div><div><div><p class="MsoNormal" style="margin-left:72.0pt">If I come up with a good solution I'll let you know.<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:72.0pt"> <u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:72.0pt">-Lang.<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:72.0pt"> <u></u><u></u></p></div></div></div></div><div><div><div><p class="MsoNormal" style="margin-left:72.0pt"> <u></u><u></u></p><div><p class="MsoNormal" style="margin-left:72.0pt">On Mon, Sep 8, 2014 at 11:05 AM, Lang Hames <<a href="mailto:lhames@gmail.com" target="_blank">lhames@gmail.com</a>> wrote:<u></u><u></u></p><div><p class="MsoNormal" style="margin-left:72.0pt">Hi Arnaud,<u></u><u></u></p><div><p class="MsoNormal" style="margin-left:72.0pt"> <u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:72.0pt">The PBQP side side of this looks good to me. Thanks very much for working on this.<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:72.0pt"> <u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:72.0pt">Regards,<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:72.0pt">Lang.<u></u><u></u></p></div></div><div><div><div><p class="MsoNormal" style="margin-left:72.0pt"> <u></u><u></u></p><div><p class="MsoNormal" style="margin-left:72.0pt">On Mon, Sep 8, 2014 at 7:32 AM, Arnaud A. de Grandmaison <<a href="mailto:arnaud.degrandmaison@arm.com" target="_blank">arnaud.degrandmaison@arm.com</a>> wrote:<u></u><u></u></p><div><div><p class="MsoNormal" style="margin-left:72.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:72.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:108.0pt"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> David Blaikie [mailto:<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>] <br><b>Sent:</b> 08 September 2014 04:53<br><b>To:</b> Arnaud De Grandmaison<br><b>Cc:</b> Tim Northover; <a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a>; Lang Hames<br><b>Subject:</b> Re: [PATCH] Add experimental PBQP support</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:108.0pt"> <u></u><u></u></p><div><p class="MsoNormal" style="margin-left:108.0pt"> <u></u><u></u></p><div><p class="MsoNormal" style="margin-left:108.0pt"> <u></u><u></u></p><div><p class="MsoNormal" style="margin-left:108.0pt">On Sat, Sep 6, 2014 at 2:01 PM, Arnaud A. de Grandmaison <<a href="mailto:arnaud.degrandmaison@arm.com" target="_blank">arnaud.degrandmaison@arm.com</a>> wrote:<u></u><u></u></p><div><div><p class="MsoNormal" style="margin-left:108.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:108.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:144.0pt"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> David Blaikie [mailto:<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>] <br><b>Sent:</b> 06 September 2014 21:40<br><b>To:</b> Arnaud De Grandmaison<br><b>Cc:</b> Tim Northover; <a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a>; Lang Hames<br><b>Subject:</b> Re: [PATCH] Add experimental PBQP support</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:144.0pt"> <u></u><u></u></p><div><p class="MsoNormal" style="margin-left:144.0pt"> <u></u><u></u></p><div><p class="MsoNormal" style="margin-bottom:12.0pt;margin-left:144.0pt"> <u></u><u></u></p><div><p class="MsoNormal" style="margin-left:144.0pt">On Sat, Sep 6, 2014 at 8:30 AM, Arnaud A. de Grandmaison <<a href="mailto:arnaud.degrandmaison@arm.com" target="_blank">arnaud.degrandmaison@arm.com</a>> wrote:<u></u><u></u></p><div><div><p class="MsoNormal" style="margin-left:144.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Writing tests for a register allocator is not an easy task, as the set of all valid allocation is quite large, and can be equally good. What I have seen with the other allocators is that most testcases correspond to specific issues found in the allocator. My plan was to have an initial commit (this patch, with no real test), and then add testcases with subsequent commits as they improve specific areas of the allocation.</span><u></u><u></u></p></div></div><div><p class="MsoNormal" style="margin-left:144.0pt"> <u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:144.0pt">so this change itself doesn't add any improvements, just lays the foundation for improvements to come?<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:144.0pt"><span style="color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:108.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:108.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Correct. I see this patch as a foundation for improvements to come.</span><u></u><u></u></p></div></div></div></div></div></div><div><p class="MsoNormal" style="margin-left:108.0pt"> <u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:108.0pt">Great - perhaps you could commit the small test case you've added here ahead of time (to demonstrate that it passes without these changes), just adding more test coverage.<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:108.0pt"><span style="color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:72.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:72.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">The test is merely a sanity check that the’ –aarch64-pbqp’ option exists and produce something sane. A testcase committed ahead of time would be a duplicate of r217057, a sanity check Lang added some time ago. </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:108.0pt"> <u></u><u></u></p></div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt"><div><div><div><p class="MsoNormal" style="margin-left:108.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> This patch only uses the existing infrastructure as is,  and was necessary to run a wide range of benchmarks and diagnose where improvements should be made.</span><u></u><u></u></p></div></div></div></blockquote><div><p class="MsoNormal" style="margin-left:108.0pt"> <u></u><u></u></p></div><div><p class="MsoNormal" style="margin-bottom:12.0pt;margin-left:108.0pt">Not sure I follow here - according to you & Lang the PBQP allocator already works on these architectures. How does this patch help you diagnose where improvements are to be made?<u></u><u></u></p><p class="MsoNormal" style="margin-left:72.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">The PBQP works in the sense that the generate code is functionally correct, i.e there is no miscompilation --- no bogus register allocation. That’s a required preliminary before any performance improvement can take place. With this patch, we have everything in place to be able to compare 2 feature-wise similar versions of llvm for the AArch64/A57:</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:72.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">- LLVM with greedy + A57 FPLoadBalancing pass</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:72.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">- LLVM with PBQP + A57 target specific constraints</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:72.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Both provide the same high level features, but with different implementations.</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:108.0pt"><br>That said, if it's a natural precursor/lays the foundation for the ability to add more custom logic to the PBQP allocator for these architectures - great, let's go for it! (though I'd suggest you wait for Lang's OK here - I'm not nearly familiar enough with this stuff, unfortunately - just trying to understand the high level nature of the change you're proposing, because i'm curious)<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:108.0pt"><span style="color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:72.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">It lays the foundations for the real work to take place.</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:72.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:72.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I will definitely wait for Lang’s OK for the PBQP aspects of the patch, and Tim’s green light for the AArch64 aspects !</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:72.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:108.0pt"> <u></u><u></u></p></div><div><div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt"><div><div><div><p class="MsoNormal" style="margin-left:108.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I already have a few on my list, the first one being improving how the different costs are set and relate together (allocation cost, interference cost & spill weight) --- and this will require some modification in the generic infrastructure and a backend with extra constraints to see the effects.</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:108.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:108.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:144.0pt"> <u></u><u></u></p></div><div><div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt"><div><div><p class="MsoNormal" style="margin-left:144.0pt"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p><p class="MsoNormal" style="margin-left:144.0pt"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> David Blaikie [mailto:<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>] <br><b>Sent:</b> 06 September 2014 17:17<br><b>To:</b> Arnaud De Grandmaison<br><b>Cc:</b> Tim Northover; <a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a>; Lang Hames<br><b>Subject:</b> RE: [PATCH] Add experimental PBQP support</span><u></u><u></u></p><div><div><p class="MsoNormal" style="margin-left:144.0pt"> <u></u><u></u></p><p style="margin-left:144.0pt"><br>On Sep 6, 2014 8:08 AM, "Arnaud A. de Grandmaison" <<a href="mailto:arnaud.degrandmaison@arm.com" target="_blank">arnaud.degrandmaison@arm.com</a>> wrote:<br>><br>> Hi Dave & Lang,<br>><br>>  <br>><br>> The AArch64 does not require extra constraints for the PBQP to work, but the AArch64/A57 benefits from setting additional constraints. On the A57, some sequence of operations will execute faster if some of their operands stays in even or odd registers. The Arch64FPLoadBalancing pass has been added to do some optimization there by permuting registers in the straight forward cases, whereas this can be solved generally and elegantly with the PBQP at register allocation time.<u></u><u></u></p><p style="margin-left:144.0pt">Awesome - thanks for the explanation.<u></u><u></u></p><p style="margin-left:144.0pt">Are the improvements separable into patches per specific improvement (with corresponding tests for each)?<u></u><u></u></p><p style="margin-left:144.0pt">><br>>  <br>><br>> Cheers,<br>><br>> Arnaud<br>><br>>  <br>><br>> From: Lang Hames [mailto:<a href="mailto:lhames@gmail.com" target="_blank">lhames@gmail.com</a>] <br>> Sent: 06 September 2014 06:14<br>> To: David Blaikie<br>> Cc: Arnaud De Grandmaison; <a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a>; Tim Northover<br>> Subject: Re: [PATCH] Add experimental PBQP support<br>><br>>  <br>><br>> Hi Dave,<br>><br>>  <br>><br>> Out-of-the-box PBQP knows about the standard constraints that CodeGen models. Any Target that works with the standard allocators (E.g. greedy) should also work with PBQP. I believe Arnaud's patch is an optimisation. (Arnaud - please correct me if I'm wrong and AArch64 did require extra constraints, but I don't think it should?)<br>><br>>  <br>><br>> - Lang.<br>><br>>  <br>><br>> On Fri, Sep 5, 2014 at 3:45 PM, David Blaikie <<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>> wrote:<br>><br>> This'll probably show how little I know about register allocation - but I thought Lang was telling me the other day that PBQP is essentially a drop/opt in for any architecture without having specific code for it (learning about the register set from the tablegen files and that was all it needed).<br>><br>> Is that the case? Is the extra code in your patch then tuning, essentially - making PBQP better than the baseline table-driven PBQP for AArch64/A57? Or is my understanding incorrect?<br>><br>> - David<br>><br>>  <br>><br>> On Fri, Sep 5, 2014 at 1:49 PM, Arnaud A. de Grandmaison <<a href="mailto:arnaud.degrandmaison@arm.com" target="_blank">arnaud.degrandmaison@arm.com</a>> wrote:<br>>><br>>> I am currently investigating the benefits the PBQP register allocator could bring to the AArch64/A57.<br>>><br>>>  <br>>><br>>> This patch adds experimental support for PBQP. The PBQP is disabled by default, and can be enabled with the ‘–aarch64-pbqp’ command line option to llc when the cortex-a57 is in use.<br>>><br>>>  <br>>><br>>> I thought it would be a good thing to upstream this patch, as some other people in the community could be interested in experimenting with this allocator.<br>>><br>>>  <br>>><br>>> It passes all the tests (LNT, spec, …), but the performance of the generated code is not optimal yet. Expect some more patches in the coming days to improve the performance.<br>>><br>>>  <br>>><br>>> Cheers,<br>>><br>>> --<br>>><br>>> Arnaud A. de Grandmaison<br>>><br>>>  <br>>><br>>>  <br>>><br>>> _______________________________________________<br>>> llvm-commits mailing list<br>>> <a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>><br>>  <br>><br>>  <u></u><u></u></p></div></div></div></div></blockquote></div></div></div><p class="MsoNormal" style="margin-left:144.0pt"> <u></u><u></u></p></div></blockquote></div></div></div><p class="MsoNormal" style="margin-left:108.0pt"> <u></u><u></u></p></div></div></div></div></div><p class="MsoNormal" style="margin-left:72.0pt"> <u></u><u></u></p></div></div></div></div><p class="MsoNormal" style="margin-left:72.0pt"> <u></u><u></u></p></div></div></div></div></div></blockquote></div><p class="MsoNormal" style="margin-left:36.0pt"><u></u> <u></u></p></div></div></div></div></div></div></blockquote></div><br></div>