[llvm-dev] LLVM ERROR: Cannot select: t29: v32f64 = X86ISD::VBROADCAST t9

Friedman, Eli via llvm-dev llvm-dev at lists.llvm.org
Mon Oct 23 12:21:22 PDT 2017


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



More information about the llvm-dev mailing list