<html>
    <head>
      <base href="https://bugs.llvm.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 - [llvm-exegesis] Latency test code breaking register dependencies"
   href="https://bugs.llvm.org/show_bug.cgi?id=37568">37568</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>[llvm-exegesis] Latency test code breaking register dependencies
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>new-bugs
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Windows NT
          </td>
        </tr>

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

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

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>new bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>llvm-dev@redking.me.uk
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>andrea.dibiagio@gmail.com, clement.courbet@gmail.com, craig.topper@gmail.com, gchatelet@google.com, greg.bedwell@sony.com, llvm-bugs@lists.llvm.org, matthew.davis@sony.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>I'm seeing llvm-exegesis report a number of instructions give far too fast
latency values as they are repeating source registers, which permits breaking
register dependencies in the frontend, this is most commonly for cases that are
guaranteed to generate zero/allbits results.

Search Agner (<a href="http://www.agner.org/optimize/microarchitecture.pdf">http://www.agner.org/optimize/microarchitecture.pdf</a>) for
"Breaking dependency chains" and "Dependency-breaking instructions", these
instruction types include:

X86 Instructions:
XOR
SUB
SBB(depends on carry flag only) 
CMP

MMX/SSE/AVX Instructions:
PXOR/XORPS/XORPD
PANDN/ANDNPS/ANDNPD
PSUBx
PCMPEQx/PCMPGTx

Depending on the CPU this might include MMX/AVX1/AVX2 variants as well.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>