Hi all I didn't find anything relevant in the archives about this so I wanted to ask here. I am generating a simple function for JIT using the API. The function structure and code work fine with 2.8 but give me "Cannot select" with 2.9. Assembly dump of the function: define double @0(double %f0, double %f1, double %f2, double %f3, double %f4, double %f5, double %f6, double %f7, double %f8, double %f9) { %1 = add double %f0, %f1 %2 = add double %1, %f2 %3 = add double %2, %f3 %4 = add double %3, %f4 %5 = add double %4, %f5 %6 = add double %5, %f6 %7 = add double %6, %f7 %8 = add double %7, %f8 %9 = add double %8, %f9 ret double %9 } LLVM error I get: LLVM ERROR: Cannot select: 0xd1b720: f64 = add 0xd1b620, 0xd1ae20 [ORD=9] [ID=32] 0xd1b620: f64 = add 0xd1b520, 0xd1ac20 [ORD=8] [ID=31] 0xd1b520: f64 = add 0xd1b420, 0xd1a920 [ORD=7] [ID=30] 0xd1b420: f64 = add 0xd1b320, 0xd1a610 [ORD=6] [ID=29] 0xd1b320: f64 = add 0xd1b220, 0xd1a410 [ORD=5] [ID=28] 0xd1b220: f64 = add 0xd1b120, 0xd1a210 [ORD=4] [ID=27] 0xd1b120: f64 = add 0xd1b020, 0xd1a010 [ORD=3] [ID=26] 0xd1b020: f64 = add 0xd1af20, 0xd19e10 [ORD=2] [ID=25] 0xd1af20: f64 = add 0xd19a10, 0xd19c10 [ORD=1] [ID=24] 0xd19a10: f64,ch = CopyFromReg 0xcee028, 0xd19910 [ORD=1] [ID=14] 0xd19c10: f64,ch = CopyFromReg 0xcee028, 0xd19b10 [ORD=1] [ID=15] 0xd19e10: f64,ch = CopyFromReg 0xcee028, 0xd19d10 [ORD=2] [ID=16] 0xd19d10: f64 = Register %vreg2 [ORD=2] [ID=3] 0xd1a010: f64,ch = CopyFromReg 0xcee028, 0xd19f10 [ORD=3] [ID=17] 0xd19f10: f64 = Register %vreg3 [ORD=3] [ID=4] 0xd1a210: f64,ch = CopyFromReg 0xcee028, 0xd1a110 [ORD=4] [ID=18] 0xd1a110: f64 = Register %vreg4 [ORD=4] [ID=5] 0xd1a410: f64,ch = CopyFromReg 0xcee028, 0xd1a310 [ORD=5] [ID=19] 0xd1a310: f64 = Register %vreg5 [ORD=5] [ID=6] 0xd1a610: f64,ch = CopyFromReg 0xcee028, 0xd1a510 [ORD=6] [ID=20] 0xd1a510: f64 = Register %vreg6 [ORD=6] [ID=7] 0xd1a920: f64,ch = CopyFromReg 0xcee028, 0xd1a710 [ORD=7] [ID=21] 0xd1a710: f64 = Register %vreg7 [ORD=7] [ID=8] 0xd1ac20: f64,ch = load 0xcee028, 0xd1aa20, 0xd1ab20<LD8[FixedStack-1](align=16)> [ORD=8] [ID=22] 0xd1aa20: i64 = FrameIndex<-1> [ORD=8] [ID=9] 0xd1ab20: i64 = undef [ORD=8] [ID=10] 0xd1ae20: f64,ch = load 0xcee028, 0xd1ad20, 0xd1ab20<LD8[FixedStack-2]> [ORD=9] [ID=23] 0xd1ad20: i64 = FrameIndex<-2> [ORD=9] [ID=11] 0xd1ab20: i64 = undef [ORD=8] [ID=10] Is there something different I need to do in my function definition or structure to get by this? Or is this a bug? Thanks Greg
Hi Gregory,> I didn't find anything relevant in the archives about this so I wanted to > ask here. > > I am generating a simple function for JIT using the API. The function > structure and code work fine with 2.8 but give me "Cannot select" with 2.9.did you initialize the target? Ciao, Duncan.> > > Assembly dump of the function: > > define double @0(double %f0, double %f1, double %f2, double %f3, double %f4, > double %f5, double %f6, double %f7, double %f8, double %f9) { > %1 = add double %f0, %f1 > %2 = add double %1, %f2 > %3 = add double %2, %f3 > %4 = add double %3, %f4 > %5 = add double %4, %f5 > %6 = add double %5, %f6 > %7 = add double %6, %f7 > %8 = add double %7, %f8 > %9 = add double %8, %f9 > ret double %9 > } > > > LLVM error I get: > > LLVM ERROR: Cannot select: 0xd1b720: f64 = add 0xd1b620, 0xd1ae20 [ORD=9] > [ID=32] > 0xd1b620: f64 = add 0xd1b520, 0xd1ac20 [ORD=8] [ID=31] > 0xd1b520: f64 = add 0xd1b420, 0xd1a920 [ORD=7] [ID=30] > 0xd1b420: f64 = add 0xd1b320, 0xd1a610 [ORD=6] [ID=29] > 0xd1b320: f64 = add 0xd1b220, 0xd1a410 [ORD=5] [ID=28] > 0xd1b220: f64 = add 0xd1b120, 0xd1a210 [ORD=4] [ID=27] > 0xd1b120: f64 = add 0xd1b020, 0xd1a010 [ORD=3] [ID=26] > 0xd1b020: f64 = add 0xd1af20, 0xd19e10 [ORD=2] [ID=25] > 0xd1af20: f64 = add 0xd19a10, 0xd19c10 [ORD=1] [ID=24] > 0xd19a10: f64,ch = CopyFromReg 0xcee028, 0xd19910 [ORD=1] > [ID=14] > > 0xd19c10: f64,ch = CopyFromReg 0xcee028, 0xd19b10 [ORD=1] > [ID=15] > > 0xd19e10: f64,ch = CopyFromReg 0xcee028, 0xd19d10 [ORD=2] > [ID=16] > 0xd19d10: f64 = Register %vreg2 [ORD=2] [ID=3] > 0xd1a010: f64,ch = CopyFromReg 0xcee028, 0xd19f10 [ORD=3] > [ID=17] > 0xd19f10: f64 = Register %vreg3 [ORD=3] [ID=4] > 0xd1a210: f64,ch = CopyFromReg 0xcee028, 0xd1a110 [ORD=4] > [ID=18] > 0xd1a110: f64 = Register %vreg4 [ORD=4] [ID=5] > 0xd1a410: f64,ch = CopyFromReg 0xcee028, 0xd1a310 [ORD=5] [ID=19] > 0xd1a310: f64 = Register %vreg5 [ORD=5] [ID=6] > 0xd1a610: f64,ch = CopyFromReg 0xcee028, 0xd1a510 [ORD=6] [ID=20] > 0xd1a510: f64 = Register %vreg6 [ORD=6] [ID=7] > 0xd1a920: f64,ch = CopyFromReg 0xcee028, 0xd1a710 [ORD=7] [ID=21] > 0xd1a710: f64 = Register %vreg7 [ORD=7] [ID=8] > 0xd1ac20: f64,ch = load 0xcee028, 0xd1aa20, > 0xd1ab20<LD8[FixedStack-1](align=16)> [ORD=8] [ID=22] > 0xd1aa20: i64 = FrameIndex<-1> [ORD=8] [ID=9] > 0xd1ab20: i64 = undef [ORD=8] [ID=10] > 0xd1ae20: f64,ch = load 0xcee028, 0xd1ad20, 0xd1ab20<LD8[FixedStack-2]> > [ORD=9] [ID=23] > 0xd1ad20: i64 = FrameIndex<-2> [ORD=9] [ID=11] > 0xd1ab20: i64 = undef [ORD=8] [ID=10] > > > > Is there something different I need to do in my function definition or > structure to get by this? Or is this a bug? > > Thanks > Greg > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> -----Original Message----- > From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] > On Behalf Of Duncan Sands > Sent: Friday, July 29, 2011 12:45 PM > To: llvmdev at cs.uiuc.edu > Subject: Re: [LLVMdev] "Cannot select" error in 2.9 > > Hi Gregory, > > > I didn't find anything relevant in the archives about this so I > wanted to > > ask here. > > > > I am generating a simple function for JIT using the API. The function > > structure and code work fine with 2.8 but give me "Cannot select" > with 2.9. > > did you initialize the target? >Yes, InitializeNativeTarget() is the first thing called. Greg