<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Add NIR functions for copying instructions, blocks, functions, and whole shaders"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=89436">89436</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Add NIR functions for copying instructions, blocks, functions, and whole shaders
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>Mesa
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>git
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Other
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>medium
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>glsl-compiler
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>idr@freedesktop.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>jason@jlekstrand.net
          </td>
        </tr>

        <tr>
          <th>QA Contact</th>
          <td>intel-3d-bugs@lists.freedesktop.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>The idea here is two write the C equivalent of "copy constructors" for NIR
datatypes.  Not everything needs a copy constructor but, at the very least, we
at least need to be able to do a deep copy nir_function_impl's and everything
they contain.  Most of this should be straightforward as it's simply a matter
of recursing into data structures and copying everything.

There is a little complication when it comes to variables, registers, and SSA
values, however.  When we copy functions we will need some sort of a "remap
table" so that the copied functions can use the copied variables/registers/SSA
values rather than the originals.

Also, we have to be a bit careful with nir_phi_instr's as the SSA definitions
they use in their sources may not come before they do in the shader.  For
these, we have to create the actual instructions first and then fill out their
sources as a seperate pass after the rest of the instructions have been
created.  In fact, it may be easier (for the sake of correctness) to use this
sort of two-step copying procedure for all instructions.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>