Sanjiv Gupta wrote:> On Wed, 2010-04-14 at 11:33 -0400, Andrew Friedley wrote: >> I've found that I need to set the -pre-RA-sched parameter when using >> tools like llc to get the kind of instruction scheduling I want. >> >> However I'm normally generating and running code on the fly using the >> JIT, and can't figure out how to set the -pre-RA-sched option anywhere >> other than on the command line for the provided tools. So what code >> would I write (or where is the API?) to change the pre-regalloc >> instruction scheduler algorithm? > > Does this thing below in TargetLowering help? > > /// setSchedulingPreference - Specify the target scheduling preference. > void setSchedulingPreference(SchedPreference Pref)Thanks! That doesn't look like what -pre-RA-sched eventually maps to, but it looks like the switch I want to change. Pardon my ignorance, but I have no idea how I'm supposed to get to a point where I can call this when all I have is a module and an execution engine. Better yet, how would I go about figuring this out from the documentation? I'm having no luck at all finding these things. Andrew
Sorry for responding to my own message but I would really appreciate some help with this. Looking through the documentation again this morning I noticed that setSchedulingPreference is a protected method of LLVMTargetLowering, so it looks like it's not something I can call directly anyway. Furthermore it's only called from one place with a hard-coded value for any particular platform. Andrew Andrew Friedley wrote:> Sanjiv Gupta wrote: >> On Wed, 2010-04-14 at 11:33 -0400, Andrew Friedley wrote: >>> I've found that I need to set the -pre-RA-sched parameter when using >>> tools like llc to get the kind of instruction scheduling I want. >>> >>> However I'm normally generating and running code on the fly using the >>> JIT, and can't figure out how to set the -pre-RA-sched option anywhere >>> other than on the command line for the provided tools. So what code >>> would I write (or where is the API?) to change the pre-regalloc >>> instruction scheduler algorithm? >> Does this thing below in TargetLowering help? >> >> /// setSchedulingPreference - Specify the target scheduling preference. >> void setSchedulingPreference(SchedPreference Pref) > > Thanks! That doesn't look like what -pre-RA-sched eventually maps to, > but it looks like the switch I want to change. Pardon my ignorance, but > I have no idea how I'm supposed to get to a point where I can call this > when all I have is a module and an execution engine. > > Better yet, how would I go about figuring this out from the > documentation? I'm having no luck at all finding these things. > > Andrew > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Hi Andrew, On 04/19/10 14:27, Andrew Friedley wrote:> Sorry for responding to my own message but I would really appreciate > some help with this. > > Looking through the documentation again this morning I noticed that > setSchedulingPreference is a protected method of LLVMTargetLowering, so > it looks like it's not something I can call directly anyway. > Furthermore it's only called from one place with a hard-coded value for > any particular platform. > > Andrew Friedley wrote: > >> Sanjiv Gupta wrote: >> >>> On Wed, 2010-04-14 at 11:33 -0400, Andrew Friedley wrote: >>> >>>> I've found that I need to set the -pre-RA-sched parameter when using >>>> tools like llc to get the kind of instruction scheduling I want. >>>> >>>> However I'm normally generating and running code on the fly using the >>>> JIT, and can't figure out how to set the -pre-RA-sched option anywhere >>>> other than on the command line for the provided tools. So what code >>>> would I write (or where is the API?) to change the pre-regalloc >>>> instruction scheduler algorithm? >>>> >>> Does this thing below in TargetLowering help? >>> >>> /// setSchedulingPreference - Specify the target scheduling preference. >>> void setSchedulingPreference(SchedPreference Pref) >>> >> Thanks! That doesn't look like what -pre-RA-sched eventually maps to, >> but it looks like the switch I want to change. Pardon my ignorance, but >> I have no idea how I'm supposed to get to a point where I can call this >> when all I have is a module and an execution engine. >> >> Better yet, how would I go about figuring this out from the >> documentation? I'm having no luck at all finding these things. >>You can programmatically pass command-line options using something like: #include "llvm/Support/CommandLine.h" int main() { ... char *opts[] = { "dummy", "-fast-isel", "-fast-isel-verbose", "-pre-RA-sched=fast", }; cl::ParseCommandLineOptions(4, opts, "Blah"); ... } Could be that you need to include more headers, as I cut this piece from my own more extensive code. HTH, Paul