[llvm-dev] [GlobalISel] Importing isel patterns for instructions with LLT pointer operand type from td files
Petar Avramovic via llvm-dev
llvm-dev at lists.llvm.org
Fri Nov 15 06:56:44 PST 2019
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
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?
Using G_INTTOPTR/G_PTRTOINT when pointer operands appear in G_ICMP and
G_SELECT in irtranslator could also be an option.
More information about the llvm-dev