[llvm-dev] [GlobalISel] Importing isel patterns for instructions with LLT pointer operand type from td files

Quentin Colombet via llvm-dev llvm-dev at lists.llvm.org
Tue Nov 19 15:47:30 PST 2019



> On Nov 15, 2019, at 6:56 AM, Petar Avramovic via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
> Hi,
> 
> In GlobalISel we let pointer G_ICMP and G_SELECT to be legal,
> pointer operands get register bank that corresponds to integer type off pointer size during regbankselect,
> and we manually select them as if pointer was an integer.
> 
> With the help of selectImpl
> G_ICMP can be selected into integer compare and
> G_SELECT is selected into appropriate instruction based or register bank of operands.
> However this does not work for pointer LLT.
> 
> On some targets, SDAG converts pointers to appropriate integer type and uses instruction that is defined with integer type in td files.
> Thus these instructions can't be imported for pointer type by GlobalISel since there is no such record.
> 
> Can/should we add something to td file to avoid manual selection for pointer type for G_ICMP and G_SELECT?

That would be nice.

> Using G_INTTOPTR/G_PTRTOINT when pointer operands appear in G_ICMP and G_SELECT in irtranslator could also be an option.

I would rather that we teach the importer to accept pointer type as the equivalent of iN in relevant places.

> 
> Regards,
> Petar
> 
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev



More information about the llvm-dev mailing list