[llvm-dev] VSelect Instruction Error
Nemanja Ivanovic via llvm-dev
llvm-dev at lists.llvm.org
Thu Sep 21 01:26:15 PDT 2017
Well, the message mentions it. It's the `vselect` node in the .td file
(ISD::VSELECT). You've clearly legalized it or otherwise emitted it
post-legalization. So you need something similar to this in your .td file
(but for your big vector type):
```
let Predicates = [HasAVX2] in {
def : Pat<(v32i8 (vselect (v32i8 VR256:$mask), (v32i8 VR256:$src1),
(v32i8 VR256:$src2))),
(VPBLENDVBYrr VR256:$src2, VR256:$src1, VR256:$mask)>;
}
```
This particular example comes from lib/Target/X86/X86InstrSSE.td, but there
are other examples from other back ends that may be more fitting.
On Thu, Sep 21, 2017 at 10:18 AM, hameeza ahmed via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> Hello,
>
> I am getting this error. What instruction is required to be implemented?
>
>
> LLVM ERROR: Cannot select: t22: v32i32 = vselect t724, t11, t16
> t724: v32i32,ch = load<LD128[FixedStack1]> t723, FrameIndex:i64<1>,
> undef:i64
> t659: i64 = FrameIndex<1>
> t10: i64 = undef
> t11: v32i32,ch = load<LD128[%sunkaddr45](align=4)(tbaa=<0x481f1e8>)>
> t0, t8, undef:i64
> t8: i64 = add t7, Constant:i64<4>
> t7: i64 = add t2, t63
> t2: i64,ch = CopyFromReg t0, Register:i64 %vreg97
> t1: i64 = Register %vreg97
> t63: i64 = shl t4, Constant:i8<2>
> t4: i64,ch = CopyFromReg t0, Register:i64 %vreg11
> t3: i64 = Register %vreg11
> t1889: i8 = Constant<2>
> t5: i64 = Constant<4>
> t10: i64 = undef
> t16: v32i32,ch = CopyFromReg t0, Register:v32i32 %vreg14
> t15: v32i32 = Register %vreg14
> In function: int_to_uchar
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170921/3562e756/attachment.html>
More information about the llvm-dev
mailing list