[llvm] r184705 - Temporarily enable MI-Sched on X86.

Andrew Trick atrick at apple.com
Wed Jun 26 22:27:15 PDT 2013



Sent from my iPhone

On Jun 25, 2013, at 3:19 PM, Tom Stellard <tom at stellard.net> wrote:

> On Mon, Jun 24, 2013 at 09:13:21AM -0000, Andrew Trick wrote:
>> Author: atrick
>> Date: Mon Jun 24 04:13:20 2013
>> New Revision: 184705
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=184705&view=rev
>> Log:
>> Temporarily enable MI-Sched on X86.
>> 
>> Sorry for the unit test churn. I'll try to make the change permanently
>> next time.
> 
> Hi Andy,
> 
> This breaks a few piglit tests that we use for testing Mesa with the
> R600 backend.  I've tracked the problem down to the R600 target registering
> its scheduler as the default using:
> 
> MachineSchedRegistry::setDefault(createR600MachineScheduler);
> 
> This is problematic, because the test program compiles code using the
> R600 target and then the X86_64 target, so it ends up using the R600
> scheduler on the X86_64 code, which does not work very well.
> 
> I'm looking at MachineScheduler::runOnMachineFunction() where the
> scheduler is initialized, and I can't see any way to specify the scheduler
> other than using the global registry.  Are we doing something wrong in
> the R600 backend, or will we need to make the default scheduler a
> property of the TargetSubtargetInfo class?

I see how this could happen.  Actually not sure why we haven't noticed it yet. 

Maybe the default scheduler factory should call a target hook. If the hook isn't implemented it falls back to creating a converging scheduler (I'm about to rename it "generic" scheduler).

I'll try to remember to add this before reenabling. If I forget, yell at me. 

Andy



More information about the llvm-commits mailing list