Martin J. O'Riordan via llvm-dev
2016-Mar-08 15:15 UTC
[llvm-dev] Head revision #262824 - breaks Movidius Out-of-Tree target
Hi LLVM-Dev, I have just integrated the changes from top-of-tree at SVN #262824 (yesterday) having been previously at #262217 (a week ago). I am getting the following error for every instruction: CUSTOMBUILD : error : No schedule information for instruction 'FOOBAR' What has changed that would cause this and how can I fix it in my target? Thanks, MartinO -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160308/0d764089/attachment.html>
Tim Northover via llvm-dev
2016-Mar-08 15:25 UTC
[llvm-dev] Head revision #262824 - breaks Movidius Out-of-Tree target
Hi Martin, On 8 March 2016 at 07:15, Martin J. O'Riordan via llvm-dev <llvm-dev at lists.llvm.org> wrote:> CUSTOMBUILD : error : No schedule information for instruction 'FOOBAR'I think this is r262384, which turns an incomplete scheduling model into an error. The commit message gives some suggestions for fixing it. Cheers. Tim.
Martin J. O'Riordan via llvm-dev
2016-Mar-08 15:51 UTC
[llvm-dev] Head revision #262824 - breaks Movidius Out-of-Tree target
Thanks Tim, But I don't understand why it has suddenly become incomplete having been working fine for years, or what it means by incomplete. The message simply says: Incomplete schedule models found. - Consider setting 'CompleteModel = 0' while developing new models. - Pseudo instructions can be marked with 'hasNoSchedulingInfo = 1'. - Instructions should usually have Sched<[...]> as a superclass, you may temporarily use an empty list. Is there a design document that explains the nature of this change so that I can better understand the implications? Our scheduling is very complex, and our implementation still sub-classes 'ScheduleDAGInstrs' (rewriting this is on our TODO list, but it’s a major undertaking). We have also had to significantly extend the scheduling models to handle resources such as multi-ported register access, port-sharing, instructions that read information from multiple registers at different times, and which write to different registers at different times. For example, an instruction that might read one register at cycle 0, another and cycle 1, then write a register at cycle 2 and another at cycle 5. Rewriting this to the 'MISched' model is quite daunting and not something that we can quickly achieve. All our instructions use the form: let Itinerary = blah { instruction definitions } The instruction definitions derive from 'Instruction' along the lines of: class SHAVEInstr<args> : Instruction { ... } but don't have 'Sched<[...]>' as a superclass (should they?). MartinO -----Original Message----- From: Tim Northover [mailto:t.p.northover at gmail.com] Sent: 08 March 2016 15:25 To: Martin J. O'Riordan <Martin.ORiordan at movidius.com> Cc: LLVM Developers <llvm-dev at lists.llvm.org> Subject: Re: [llvm-dev] Head revision #262824 - breaks Movidius Out-of-Tree target Hi Martin, On 8 March 2016 at 07:15, Martin J. O'Riordan via llvm-dev <llvm-dev at lists.llvm.org> wrote:> CUSTOMBUILD : error : No schedule information for instruction 'FOOBAR'I think this is r262384, which turns an incomplete scheduling model into an error. The commit message gives some suggestions for fixing it. Cheers. Tim.