[llvm-commits] Hexagon VLIW instruction scheduler framework patch for review

Andrew Trick atrick at apple.com
Wed Feb 1 12:35:20 PST 2012


On Jan 31, 2012, at 11:42 PM, Andrew Trick <atrick at apple.com> wrote:

> On Jan 31, 2012, at 7:18 AM, Sergei Larin <slarin at codeaurora.org> wrote:
>> 
>> From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-bounces at cs.uiuc.edu] On Behalf Of Sergei Larin
>> Sent: Friday, January 27, 2012 10:47 AM
>> To: llvm-commits at cs.uiuc.edu
>> Subject: [llvm-commits] Hexagon VLIW instruction scheduler framework patch for review
>>  
>>  
>>   Hello everybody,
>>  
>>     Attached is initial patch for a VLIW specific scheduler framework that utilizes deterministic finite automaton (DFA) .
>>  
>> Several key points:
>> -          The scheduler is largely based on the existing framework, but introduces several VLIW specific concepts. It could be classified as a top down list scheduler, critical path first, with DFA used for parallel resources modeling. It also models and tracks register pressure in the way similar to the current RegPressure scheduler. It employs a slightly different way to compute “cost” function for all SUs in AQ which allows for somewhat easier balancing of multiple heuristic inputs. Current version does _not_ generates bundles/packets (but models them internally). It could be easily modified to do so, and it is our plan to make it a part of bundle generation in the near future.
>> -          The scheduler is enabled for the Hexagon backend. Comparing to any existing scheduler, for this VLIW target this code produces between 1.9% slowdown and 11% speedup on our internal test suite. This test set comprised from a variety of real world applications ranging from DSP specific applications to SPEC. Some DSP kernels (when taken out of context) enjoy up to 20% speedup when compared to the “default” scheduling mechanism (RegPressure pre-RA + post RA). Main reason for this kind of corner case behavior is long chains of independent memory accesses that are conservatively serialized by the default scheduler (and there is no HW scheduler to sort it out at the run time).
>> -          This patch is an initial submission with a bare minimum of features, and more heuristics will be added to it later. We prefer to submit it in stages to simplify review process and improve SW management.
>> -          Patch also contains minor updates to two Hexagon specific tests in order to compensate for new order of instructions generated by the Hexagon backend __with scheduler disabled__.
>> -          SVN revision 149130. LLVM verification test run for x86 platform detects no additional failures.
>>  
>>   Comments and reviews are eagerly anticipated J

Sergei,

Let me know if these superficial changes are ok with you, and I'll commit (or if you can commit, go ahead):


For the record, I don't understand how your register pressure tracking works. I don't think it matters, because these are really target specific heuristics masquerading as machine independent code--following the same style as the rest of the scheduler. So if it works for you I'm ok with it.

-Andy

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120201/be81438b/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-ScheduleVLIW-only-works-on-SelectionDAG-rename-it-ac.patch
Type: application/octet-stream
Size: 64168 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120201/be81438b/attachment.obj>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120201/be81438b/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-Update-CMakeLists.txt-with-new-files.patch
Type: application/octet-stream
Size: 984 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120201/be81438b/attachment-0001.obj>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120201/be81438b/attachment-0002.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0003-Trashold-typo.patch
Type: application/octet-stream
Size: 1430 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120201/be81438b/attachment-0002.obj>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120201/be81438b/attachment-0003.html>


More information about the llvm-commits mailing list