Przemyslaw Ossowski via llvm-dev
2019-Apr-25 09:54 UTC
[llvm-dev] Assigning custom information to IR instruction and passing it to its correspondent in Selection DAG
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 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190425/64ef9106/attachment.html>
Przemyslaw Ossowski via llvm-dev
2019-Apr-30 21:37 UTC
[llvm-dev] Assigning custom information to IR instruction and passing it to its correspondent in Selection DAG
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? Thanks, Przemek 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 >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190430/f99251fc/attachment.html>
Mehdi AMINI via llvm-dev
2019-May-01 03:56 UTC
[llvm-dev] Assigning custom information to IR instruction and passing it to its correspondent in Selection DAG
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>
Possibly Parallel Threads
- Assigning custom information to IR instruction and passing it to its correspondent in Selection DAG
- Assigning custom information to IR instruction and passing it to its correspondent in Selection DAG
- Glue two instructions together
- Handling node through TargetLowering::LowerOperation vs TargetLowering::ReplaceNodeResults
- Glue two instructions together