Przemyslaw Ossowski via llvm-dev
2021-Jun-07 15:51 UTC
[llvm-dev] Adding instructions in pass directly from string containing IR
Thank you Johannes for your suggestion. In case a call to the function which would contain the code I would like to paste is inserted into another function, then is it still possible to simply inline the code? I would like to avoid calling the function with the "pasted" code. I assume there is a pass which inlines functions which should be executed later. Thanks, Przemek On Wed, Jun 2, 2021 at 4:13 AM Johannes Doerfert <johannesdoerfert at gmail.com> wrote:> Hi Przemek, > > I doubt that such functionality exists right now. The main > problem I see is the name matching to embed it with other code. > If the new code is not connected, I'd recommend the pass to > read in an IR file with a function in it, link it into the module, > and insert a call wherever you want to "paste" the instructions. > > Much cleaner than dealing with strings, IMHO. > > ~ Johannes > > > On 6/1/21 12:16 PM, Przemyslaw Ossowski via llvm-dev wrote: > > Hello, > > > > > > > > I would like to add a pass which modifies IR by insertion set of IR > > instructions somewhere in the middle of the basicblock, > > > > like example below: > > > > > > > > %address = call i32* @llvm.target_intrinsic.getaddress() > > > > %value = load i32, i32* %address > > > > %addvalue = add nsw i32 %value, 10 > > > > store i32 %addvalue, i32* %address > > > > > > > > Is there any function available which would allow for parsing the string > > (containing set of instructions) and generating instructions > automatically > > instead of manually calling functions creating instructions from > IRBuilder? > > > > ...at least for simple set of basic instructions > > > > > > Regards, > > > > 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/20210607/af1ab183/attachment.html>
Johannes Doerfert via llvm-dev
2021-Jun-08 16:01 UTC
[llvm-dev] Adding instructions in pass directly from string containing IR
If you insert a call prior to the inliner and mark it with the `alwaysinline` attribute, it will be inlined for sure. Reduces your problem to insert a call to a function :) ~ Johannes On 6/7/21 10:51 AM, Przemyslaw Ossowski wrote:> Thank you Johannes for your suggestion. > > In case a call to the function which would contain the code I would like to > paste is inserted into another function, then is it still possible to > simply inline the code? > I would like to avoid calling the function with the "pasted" code. I assume > there is a pass which inlines functions which should be executed later. > > Thanks, > Przemek > > > On Wed, Jun 2, 2021 at 4:13 AM Johannes Doerfert <johannesdoerfert at gmail.com> > wrote: > >> Hi Przemek, >> >> I doubt that such functionality exists right now. The main >> problem I see is the name matching to embed it with other code. >> If the new code is not connected, I'd recommend the pass to >> read in an IR file with a function in it, link it into the module, >> and insert a call wherever you want to "paste" the instructions. >> >> Much cleaner than dealing with strings, IMHO. >> >> ~ Johannes >> >> >> On 6/1/21 12:16 PM, Przemyslaw Ossowski via llvm-dev wrote: >>> Hello, >>> >>> >>> >>> I would like to add a pass which modifies IR by insertion set of IR >>> instructions somewhere in the middle of the basicblock, >>> >>> like example below: >>> >>> >>> >>> %address = call i32* @llvm.target_intrinsic.getaddress() >>> >>> %value = load i32, i32* %address >>> >>> %addvalue = add nsw i32 %value, 10 >>> >>> store i32 %addvalue, i32* %address >>> >>> >>> >>> Is there any function available which would allow for parsing the string >>> (containing set of instructions) and generating instructions >> automatically >>> instead of manually calling functions creating instructions from >> IRBuilder? >>> ...at least for simple set of basic instructions >>> >>> >>> Regards, >>> >>> Przemek >>> >>> >>> _______________________________________________ >>> LLVM Developers mailing list >>> llvm-dev at lists.llvm.org >>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev