<div dir="ltr"><div>I would do inline asm for now.</div><div><br></div><div>If you wanted to avoid the asm, I recommend adding a new intrinsic to get the "current" PC. The intrinsic would probably have to be modeled as reading and writing memory to establish control dependence and avoid being CSE'd to the entry block.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 25, 2017 at 4:08 PM, Kostya Serebryany 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"><div dir="ltr"><div>Hi, </div><div><br></div><div>I want implement an instrumentation that gets the current PC. </div><div>On x86_64 I can do it using inline asm (something like "lea (%%rip),%0"), </div><div>but I wonder if there is some more LLVM-ish way to do it, e.g. an intrinsic? </div><div><br></div>I can only find r208104 which introduces llvm.read_register:<br><a href="http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20140505/215840.html" target="_blank">http://lists.llvm.org/<wbr>pipermail/llvm-commits/Week-<wbr>of-Mon-20140505/215840.html</a><div><br></div>The LangRef says: <br>> Warning: So far it only works with the stack pointer on selected architectures (ARM, AArch64,<br>> PowerPC and x86_64). Significant amount of work is needed to support other registers and even<br>>  more so, allocatable registers.<div><div class="m_7512444480114612755gmail-section" id="m_7512444480114612755gmail-llvm-stacksave-intrinsic"><span id="m_7512444480114612755gmail-int-stacksave" style="color:rgb(0,0,0);font-family:"lucida grande","lucida sans unicode",geneva,verdana,sans-serif;font-size:14px"></span></div></div><div><br></div><div>Is it reasonable to extend <span style="color:rgb(0,0,0);white-space:pre-wrap">llvm.read_register to handle the program counter register </span><span style="color:rgb(0,0,0);white-space:pre-wrap">(on x86_64)? </span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap">Or </span><font color="#000000"><span style="white-space:pre-wrap">InlineAsm is a better way? </span></font></div><div><font color="#000000"><span style="white-space:pre-wrap"><br></span></font></div>Thanks,<br><br>--kcc</div>
<br>______________________________<wbr>_________________<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/<wbr>mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div>