[llvm-dev] Assigning custom information to IR instruction and passing it to its correspondent in Selection DAG

Mehdi AMINI via llvm-dev llvm-dev at lists.llvm.org
Tue Apr 30 20:56:52 PDT 2019


On Tue, Apr 30, 2019 at 3:51 PM Przemyslaw Ossowski via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hi,
> as I wrote in mu previous post I wanted to somehow mark one IR instruction
> (in this particular case it would be 'load') during dedicated pass, which
> will set the marking based on neighboring instructions. Next I wanted to
> somehow to convey this marking from 'load' IR instruction to 'load' SDNode
> in order to use it during DAG Instruction Selection - information stored in
> this marking would 'enable' or 'disable' particular pattern... I was
> thinking about usage metadata for it, but I didn't get any feedback.
> So now I'm wondering if solution with metadata is the best one or it maybe
> it doesn't make any sense an something else would be better.
>
> I don't have big experience with metadata, but what I've read it would
> allow for customizing IR instruction without modifying the instruction. Or
> maybe I'm unnecessarily thinking about metadata, because 'load' instruction
> has already some fields which could be used for storing 'flags', which
> might represent any custom information. Obviously I don't want to modify
> 'load'.
> Any suggestions?
>

In general metadata aren't recommended for carrying semantically important
information as they can be dropped at any time.

What about using a target specific intrinsic? Your pass could convert the
instructions to your intrinsic that you can then easily match in
SelectionDAG.

-- 
Mehdi



>
>
>
> On Thu, Apr 25, 2019 at 11:54 AM Przemyslaw Ossowski <
> przemyslaw.ossowski at googlemail.com> wrote:
>
>> Hello,
>>
>>
>>
>> I’m looking for the best approach which would allow for marking given
>> LLVM IR instruction during IR custom pass and later utilizing that
>> information during DAG Instruction Selection in order to match given
>> pattern based on this marking.
>>
>>
>>
>> I’m wondering if marking IR instruction utilizing Metadata is good idea.
>>
>> But how later pass that information to DAG and appropriately mark in
>> DAGBuilder SDNode, which represents the earlier marked instruction in IR?
>>
>>
>>
>> Any suggestion how to implement the most efficiently?
>>
>> I’m expecting there are already similar solutions – maybe someone would
>> be able to indicate the exact example?
>>
>>
>>
>> Thanks in advance,
>>
>> Przemek
>>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://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/20190430/99887740/attachment.html>


More information about the llvm-dev mailing list