Rail Shafigulin via llvm-dev
2016-Feb-18 19:19 UTC
[llvm-dev] How to interpret Selection DAG error output
On Thu, Feb 18, 2016 at 10:50 AM, Krzysztof Parzyszek via llvm-dev < llvm-dev at lists.llvm.org> wrote:> On 2/18/2016 12:43 PM, Rail Shafigulin via llvm-dev wrote: > >> >> LLVM ERROR: Cannot select: 0x3284268: glue = EsenciaISD::SET_FLAG >> 0x3283608, 0x3283710, 0x3283e48 [ORD=3] [ID=11] >> 0x3283608: i32,ch = CopyFromReg 0x3257980, 0x3283500 [ORD=1] [ID=9] >> 0x3283500: i32 = Register %vreg5 [ID=1] >> 0x3283710: i32 = Constant<3> [ID=2] >> 0x3283e48: i32 = Constant<20> [ID=8] >> In function: fib >> >> As far as I can understand LLVM cannot select it because the pattern is >> not specified. Unfortunately for me, I can't understand how to interpret >> this output. Would anybody be able to help me out? >> > > > The DAG node that has failed selection is "SET_FLAG %vreg5, 3, 20", the > type of the node is "glue" and all 3 arguments are i32. >I understand where SET_FLAG, 3 and 20 come from, but how did you arrive the conclusion that %vreg5 should be part of the pattern?> The top line shows the node that caused the failure. The hex numbers on > that line are the addresses of the arguments. These arguments are then > listed below. > > Newer versions of LLVM show node ids instead of addresses, but AFAIK it > was dependent on some configuration option. > > -Krzysztof > > > -- > Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted > by The Linux Foundation > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-- Rail Shafigulin Software Engineer Esencia Technologies -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160218/e1c5ef4b/attachment-0001.html>
Jonathan Roelofs via llvm-dev
2016-Feb-18 19:22 UTC
[llvm-dev] How to interpret Selection DAG error output
On 2/18/16 12:19 PM, Rail Shafigulin via llvm-dev wrote:> > > On Thu, Feb 18, 2016 at 10:50 AM, Krzysztof Parzyszek via llvm-dev > <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: > > On 2/18/2016 12:43 PM, Rail Shafigulin via llvm-dev wrote: > > > LLVM ERROR: Cannot select: 0x3284268: glue = EsenciaISD::SET_FLAG > 0x3283608, 0x3283710, 0x3283e48 [ORD=3] [ID=11] > 0x3283608: i32,ch = CopyFromReg 0x3257980, 0x3283500 [ORD=1] > [ID=9] > 0x3283500: i32 = Register %vreg5 [ID=1] > 0x3283710: i32 = Constant<3> [ID=2] > 0x3283e48: i32 = Constant<20> [ID=8] > In function: fib > > As far as I can understand LLVM cannot select it because the > pattern is > not specified. Unfortunately for me, I can't understand how to > interpret > this output. Would anybody be able to help me out? > > > > The DAG node that has failed selection is "SET_FLAG %vreg5, 3, 20", > the type of the node is "glue" and all 3 arguments are i32. > > I understand where SET_FLAG, 3 and 20 come from, but how did you arrive > the conclusion that %vreg5 should be part of the pattern?The hex numbers are pointers. You can see the Use of 0x3283500 in the CopyFromReg inst, and the def is here: 0x3283500: i32 = Register %vreg5 [ID=1] It's /just/ a dag. Jon> > > The top line shows the node that caused the failure. The hex > numbers on that line are the addresses of the arguments. These > arguments are then listed below. > > Newer versions of LLVM show node ids instead of addresses, but AFAIK > it was dependent on some configuration option. > > -Krzysztof > > > -- > Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, > hosted by The Linux Foundation > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > > > > > -- > Rail Shafigulin > Software Engineer > Esencia Technologies > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-- Jon Roelofs jonathan at codesourcery.com CodeSourcery / Mentor Embedded
Krzysztof Parzyszek via llvm-dev
2016-Feb-18 19:30 UTC
[llvm-dev] How to interpret Selection DAG error output
On 2/18/2016 1:19 PM, Rail Shafigulin wrote:> 0x3283608: i32,ch = CopyFromReg 0x3257980, 0x3283500 [ORD=1] [ID=9] > 0x3283500: i32 = Register %vreg5 [ID=1]The vreg5 is an argument to the CopyFromReg, which is an argument to the original SET_FLAG. -Krzysztof -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
Rail Shafigulin via llvm-dev
2016-Feb-18 19:32 UTC
[llvm-dev] How to interpret Selection DAG error output
On Thu, Feb 18, 2016 at 11:22 AM, Jonathan Roelofs < jonathan at codesourcery.com> wrote:> > > On 2/18/16 12:19 PM, Rail Shafigulin via llvm-dev wrote: > >> >> >> On Thu, Feb 18, 2016 at 10:50 AM, Krzysztof Parzyszek via llvm-dev >> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: >> >> On 2/18/2016 12:43 PM, Rail Shafigulin via llvm-dev wrote: >> >> >> LLVM ERROR: Cannot select: 0x3284268: glue = EsenciaISD::SET_FLAG >> 0x3283608, 0x3283710, 0x3283e48 [ORD=3] [ID=11] >> 0x3283608: i32,ch = CopyFromReg 0x3257980, 0x3283500 [ORD=1] >> [ID=9] >> 0x3283500: i32 = Register %vreg5 [ID=1] >> 0x3283710: i32 = Constant<3> [ID=2] >> 0x3283e48: i32 = Constant<20> [ID=8] >> In function: fib >> >> As far as I can understand LLVM cannot select it because the >> pattern is >> not specified. Unfortunately for me, I can't understand how to >> interpret >> this output. Would anybody be able to help me out? >> >> >> >> The DAG node that has failed selection is "SET_FLAG %vreg5, 3, 20", >> the type of the node is "glue" and all 3 arguments are i32. >> >> I understand where SET_FLAG, 3 and 20 come from, but how did you arrive >> the conclusion that %vreg5 should be part of the pattern? >> > > The hex numbers are pointers. You can see the Use of 0x3283500 in the > CopyFromReg inst, and the def is here: > > 0x3283500: i32 = Register %vreg5 [ID=1] >I think this is where I'm loosing the "thread". Based on what I'm seeing SET_FLAG has three operands, the first of which is a CopyFromReg. So how come the pattern is SET_FLAG %vreg5, 3, 20 and not SET_FLAG CopyFromReg, 3, 20? In other words how do we go from CopyFromReg to %vreg5?> It's /just/ a dag. > > > Jon > > >> >> The top line shows the node that caused the failure. The hex >> numbers on that line are the addresses of the arguments. These >> arguments are then listed below. >> >> Newer versions of LLVM show node ids instead of addresses, but AFAIK >> it was dependent on some configuration option. >> >> -Krzysztof >> >> >> -- >> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, >> hosted by The Linux Foundation >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >> >> >> >> -- >> Rail Shafigulin >> Software Engineer >> Esencia Technologies >> >> >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >> > -- > Jon Roelofs > jonathan at codesourcery.com > CodeSourcery / Mentor Embedded >-- Rail Shafigulin Software Engineer Esencia Technologies -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160218/c11416a1/attachment.html>