I'm briefly enabling the MachineScheduler pass for x86 tonight to collect information on any failures that may show up. To properly enable the new scheduler, this hook is implemented in X86Subtarget: bool enableMachineScheduler() const LLVM_OVERRIDE { return true; } The MachineScheduler pass itself can be enabled/disabled with -enable-misched=true/false. But most of the codegen changes result rather from moving to source-order SD scheduling and subsequent register coalescing decisions. This makes it extremely challenging to keep the unit tests functioning during the transition. So you'll see unit test churn when I flip the switch. Later, sometime in July, I'll plan to make the permanent change for X86, with all unit tests switched over to source order scheduling. (I have some compile-time improvements to make first). Changing the default for ARM will follow shortly thereafter. -Andy
On Mon, Jun 24, 2013 at 2:41 AM, Andrew Trick <atrick at apple.com> wrote:> I'm briefly enabling the MachineScheduler pass for x86 tonight to collect > information on any failures that may show up. > > To properly enable the new scheduler, this hook is implemented in > X86Subtarget: > > bool enableMachineScheduler() const LLVM_OVERRIDE { return true; } > > The MachineScheduler pass itself can be enabled/disabled with > -enable-misched=true/false. But most of the codegen changes result rather > from moving to source-order SD scheduling and subsequent register > coalescing decisions. This makes it extremely challenging to keep the unit > tests functioning during the transition. So you'll see unit test churn when > I flip the switch. >This is really cool. Is there a way to provide a flag to enable the whole thing so that folks can help you test stuff in advance of making it the default? (Yes, I'm volunteering. =D) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130624/bd015f5d/attachment.html>
On Jun 24, 2013, at 2:47 AM, Chandler Carruth <chandlerc at google.com> wrote:> > On Mon, Jun 24, 2013 at 2:41 AM, Andrew Trick <atrick at apple.com> wrote: > I'm briefly enabling the MachineScheduler pass for x86 tonight to collect information on any failures that may show up. > > To properly enable the new scheduler, this hook is implemented in X86Subtarget: > > bool enableMachineScheduler() const LLVM_OVERRIDE { return true; } > > The MachineScheduler pass itself can be enabled/disabled with -enable-misched=true/false. But most of the codegen changes result rather from moving to source-order SD scheduling and subsequent register coalescing decisions. This makes it extremely challenging to keep the unit tests functioning during the transition. So you'll see unit test churn when I flip the switch. > > This is really cool. Is there a way to provide a flag to enable the whole thing so that folks can help you test stuff in advance of making it the default? (Yes, I'm volunteering. =D)I'll probably turn it off soon ;) If want the same behavior as the target hook you can use these flags: -pre-RA-sched=source -join-globalcopies -enable-misched Thanks for any testing! Bug reports would be great. -Andy -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130624/83ad28ec/attachment.html>