[llvm-dev] Help in understanding physreg LiveVariables

Tyler Kenney via llvm-dev llvm-dev at lists.llvm.org
Tue Aug 23 14:35:37 PDT 2016


So if I first create the value in an entry BB and then build a CopyToReg
but then I have to read it in a BB that loops back to itself, with it's own
CopyToReg at the end, then I have two CopyToReg nodes for the same value.
In this case, I need to create 3 virt regs, 1 for each CopyToReg and a
third for the CopyFromReg in the beginning of the loop BB, right? And then
I need to build a PHI instruction at the beginning of the loop MBB that
relates the 3 virt regs, right? Is there anything else I need to do
regarding the creation of the new phi instruction, do you know?

Tyler




From:	Matthias Braun <mbraun at apple.com>
To:	Tyler Kenney/Marlborough/IBM at IBMUS
Cc:	llvm-dev at lists.llvm.org
Date:	08/23/2016 05:17 PM
Subject:	Re: [llvm-dev] Help in understanding physreg LiveVariables
Sent by:	mbraun at apple.com




      On Aug 23, 2016, at 2:07 PM, Tyler Kenney <tjkenney at us.ibm.com>
      wrote:



      So if I create a value with a DAG.getUndef(myVT); call during
      instruction legalization, how can I access that value as input in
      another BB/DAG (also during instruction legalization) without
      worrying about live-ins and/or phi nodes?

      Can I create a single virtual register and build both a CopyToReg and
      a CopyFromReg node with it? I assumed that would break SSA.


Yes in Selection to you need to use CopyToReg/CoptFromReg to write to/from
vregs that should cross basic blocks. Yes indeed this currently has to
respect SSA form, so there should only be a single CopyToReg for each vreg
and that def should dominate all users.



      Perhaps I should have said that what stops me is that I don't know
      how to pass a newly created virtual register from one MBB/DAG to
      another.


You have to remember the number somewhere, so you can use CopyFromReg on
the vreg.

- Matthias

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160823/6ffffac5/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: graycol.gif
Type: image/gif
Size: 105 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160823/6ffffac5/attachment.gif>


More information about the llvm-dev mailing list