hameeza ahmed via llvm-dev
2017-Oct-21 22:07 UTC
[llvm-dev] LLVM ERROR: Cannot select: t29: v32f64 = X86ISD::VBROADCAST t9
Hello, i am getting following error; LLVM ERROR: Cannot select: t29: v32f64 = X86ISD::VBROADCAST t9 t9: f64,ch = load<LD8[%10](tbaa=<0x38692f8>)> t0, t6, undef:i64 t6: i64 = add FrameIndex:i64<1>, t5 t1: i64 = FrameIndex<1> t5: i64 = shl t3, Constant:i8<3> t3: i64,ch = CopyFromReg t0, Register:i64 %vreg2 t2: i64 = Register %vreg2 t28: i8 = Constant<3> t8: i64 = undef In function: main although i have defined broadcast for v32f64 as follows: def P_256B_FBROADCASTD : I<0x66, MRMSrcMem, (outs VRP_2048:$dst), (ins i2048mem:$src), "P_256B_FBROADCASTD\t{$src, $dst|$dst, $src}", [(set VRP_2048:$dst, (v32f64 (X86VBroadcast (loadf64 addr:$src))))], IIC_MOV_MEM>; what is the reason for this? Please help. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171022/63edb1b7/attachment.html>
Friedman, Eli via llvm-dev
2017-Oct-23 19:21 UTC
[llvm-dev] LLVM ERROR: Cannot select: t29: v32f64 = X86ISD::VBROADCAST t9
On 10/21/2017 3:07 PM, hameeza ahmed via llvm-dev wrote:> Hello, > > i am getting following error; > > LLVM ERROR: Cannot select: t29: v32f64 = X86ISD::VBROADCAST t9 > t9: f64,ch = load<LD8[%10](tbaa=<0x38692f8>)> t0, t6, undef:i64 > t6: i64 = add FrameIndex:i64<1>, t5 > t1: i64 = FrameIndex<1> > t5: i64 = shl t3, Constant:i8<3> > t3: i64,ch = CopyFromReg t0, Register:i64 %vreg2 > t2: i64 = Register %vreg2 > t28: i8 = Constant<3> > t8: i64 = undef > In function: main > > although i have defined broadcast for v32f64 as follows: > > def P_256B_FBROADCASTD : I<0x66, MRMSrcMem, (outs VRP_2048:$dst), (ins > i2048mem:$src), > "P_256B_FBROADCASTD\t{$src, $dst|$dst, $src}", > [(set VRP_2048:$dst, (v32f64 (X86VBroadcast > (loadf64 addr:$src))))], > IIC_MOV_MEM>; > > what is the reason for this? > Please help. >In general, the output of "-debug-only=isel" is helpful for figuring out why a pattern isn't matching. It outputs every step of the instruction selection state machine; the numbers correspond to the comments in lib/Target/X86/X86GenDAGISel.inc (a generated file in your build directory). It's hard to say why your pattern in particular isn't working the way you want it to without more information. -Eli -- Employee of Qualcomm Innovation Center, Inc. Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project