<html>
    <head>
      <base href="http://llvm.org/bugs/" />
    </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 --- - inefficient lowering of vectorized code with intrinsics"
   href="http://llvm.org/bugs/show_bug.cgi?id=21713">21713</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>inefficient lowering of vectorized code with intrinsics
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>libraries
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

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

        <tr>
          <th>OS</th>
          <td>Linux
          </td>
        </tr>

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

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

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

        <tr>
          <th>Component</th>
          <td>Backend: X86
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>rdivacky@freebsd.org
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvmbugs@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>(A bug report from <a href="mailto:jmg@freebsd.org">jmg@freebsd.org</a>)

Here is a case where the same functional code gets compiled differently.
These functions were written to emulate _mm_insert_epi64 on i386 machines
which does not have it... I noticed when disassembling them that emul2
version does not use the pinsrd instruction, but does some weird things
with movps instead...  Though the code for emul2 and emul3 are
functionally the same, emul3 seems to be more effecient...

Also, similar behavior is observed between emul84 and emul85... though
both functions will result in the same set of arguments to
_mm_insert_epi32, one uses the intrinsic (emul84) and emul85 does not.

Compiled w/:
clang -c -o foow.o foow.c -msse4 -O3</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>