Martin J. O'Riordan via llvm-dev
2016-Jan-17 11:27 UTC
[llvm-dev] Need help with changes to 'ScheduleDAGInstrs' on the v3.8 branch
I am stuck trying to adapt my out-of-target implementation to build on SVN head (actually the v3.8 branch, rev #257626). This is currently working on the v3.7.1 sources, but the changes to 'llvm::ScheduleDAGInstrs' have me stumped as to how to revise my implementation to track the changes to this class. Our 'SHAVEAsmScheduler' derives from 'ScheduleDAGInstrs' and uses both the 'IsPostRA' and 'LiveIntervals' that were in 'ScheduleDAGInstrs', but which have now been removed. Are there any guidelines as to how implementations such as ours which are still using a legacy scheduling model should be migrated to whatever the preferred scheduling model is? I expect that this code was originally written a long time ago, probably based on LLVM v2.9 or v3.0 in 2011, and LLVM would have had a significantly different architecture then. Thanks, MartinO
Matthias Braun via llvm-dev
2016-Jan-18 01:31 UTC
[llvm-dev] Need help with changes to 'ScheduleDAGInstrs' on the v3.8 branch
> On Jan 17, 2016, at 3:27 AM, Martin J. O'Riordan via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > I am stuck trying to adapt my out-of-target implementation to build on SVN > head (actually the v3.8 branch, rev #257626). This is currently working on > the v3.7.1 sources, but the changes to 'llvm::ScheduleDAGInstrs' have me > stumped as to how to revise my implementation to track the changes to this > class. > > Our 'SHAVEAsmScheduler' derives from 'ScheduleDAGInstrs' and uses both the > 'IsPostRA' and 'LiveIntervals' that were in 'ScheduleDAGInstrs', but which > have now been removed.Simple: Just add a LiveIntervals field to your derived class (just initialize it with the reference you previously used when calling the ScheduleDAGInstrs constructor). For IsPostRA you probably know yourself whether your pass runs before or after register allocation and can replace all references to it with true or false, if it can do both then add another member to your derived class.> Are there any guidelines as to how implementations such as ours which are > still using a legacy scheduling model should be migrated to whatever the > preferred scheduling model is? I expect that this code was originally > written a long time ago, probably based on LLVM v2.9 or v3.0 in 2011, and > LLVM would have had a significantly different architecture then.The preferred way is the TargetSchedModel (SchedMachineModel in the tablegen files). The previously used itineraries are still available though. - Matthias
Martin J. O'Riordan via llvm-dev
2016-Jan-18 15:47 UTC
[llvm-dev] Need help with changes to 'ScheduleDAGInstrs' on the v3.8 branch
Thanks Matthias, That did the trick :-) It is our intention to rewrite the scheduler using the prescribed interface. I don't think that we can re-implement without the itineraries though. Are these being deprecated too? All the best, MartinO -----Original Message----- From: Matthias Braun [mailto:matze at braunis.de] Sent: 18 January 2016 1:32 To: Martin.ORiordan at Movidius.com Cc: LLVM Developers Subject: Re: [llvm-dev] Need help with changes to 'ScheduleDAGInstrs' on the v3.8 branch> On Jan 17, 2016, at 3:27 AM, Martin J. O'Riordan via llvm-dev<llvm-dev at lists.llvm.org> wrote:> > I am stuck trying to adapt my out-of-target implementation to build on > SVN head (actually the v3.8 branch, rev #257626). This is currently > working on the v3.7.1 sources, but the changes to > 'llvm::ScheduleDAGInstrs' have me stumped as to how to revise my > implementation to track the changes to this class. > > Our 'SHAVEAsmScheduler' derives from 'ScheduleDAGInstrs' and uses both > the 'IsPostRA' and 'LiveIntervals' that were in 'ScheduleDAGInstrs', > but which have now been removed.Simple: Just add a LiveIntervals field to your derived class (just initialize it with the reference you previously used when calling the ScheduleDAGInstrs constructor). For IsPostRA you probably know yourself whether your pass runs before or after register allocation and can replace all references to it with true or false, if it can do both then add another member to your derived class.> Are there any guidelines as to how implementations such as ours which > are still using a legacy scheduling model should be migrated to > whatever the preferred scheduling model is? I expect that this code > was originally written a long time ago, probably based on LLVM v2.9 or > v3.0 in 2011, and LLVM would have had a significantly differentarchitecture then. The preferred way is the TargetSchedModel (SchedMachineModel in the tablegen files). The previously used itineraries are still available though. - Matthias
Apparently Analagous Threads
- [LLVMdev] Instruction Scheduling - migration from v3.1 to v3.2
- [LLVMdev] ScheduleDAGInstrs computes deps using IR Values that may be invalid
- [LLVMdev] ValueTracking's GetUnderlyingObject vs. ScheduleDAGInstrs' getUnderlyingObject
- v3.8-rc6: btrfs-transacti Tainted: GF in btrfs_orphan_commit_root
- [LLVMdev] Latency of true depency of store followed by aliased load in ScheduleDAGInstrs