<div dir="ltr"><div><div>Maybe I don't follow exactly what you're trying to do but it seems like something you can solve with an intrinsic that you can put in an SDAG pattern and create a builtin for clang to emit this intrinsic. There are many examples of this in include/llvm/IR/Intrinsics<TargetName>.td and the respective target's instruction info .td files.<br></div>For a completely random example on PowerPC, you can see the int_ppc_vsx_xvresp/__builtin_vsx_xvresp combo.<br><br></div>Nemanja<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Apr 16, 2016 at 11:06 AM, Vladimir Miloserdov via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
I want to add new register to Sparc back-end for educational purposes.<br>
I also want to add new pseudo instruction that would add its argument<br>
to this register. And the most complicated (to my mind) - I want to be<br>
able to test (use) it from C source: something like int x = 5;<br>
__domyinstruction(x); /* adds five */ int y = __getmyregister();<br>
<br>
I think I can add register (by simply add a line to<br>
SparcRegisterInfo.td file). But adding instruction is a bit more<br>
complicated as I have to add a SelectionDAG pattern in<br>
SparcInstrInfo.td. As far as I understand I have to add:<br>
def MYINSTRUCTION: Pseudo<(outs IntRegs:$dst), (ins IntRegs:$src),<br>
            "; some asm code", [SelectionDAG pattern list]>;<br>
So I don't know how to write this pattern and I'm not sure I need it.<br>
All I want is to add some kind of built-in function to Clang that<br>
would somehow produce MYINSTRUCTION. And currently I don't have any<br>
idea of how to implement __getmyregister(). Any tips?<br>
<br>
Thank you, yours,<br>
Vladimir M.<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div><br></div>