<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 --- - Loop Vectorizer: Only vectorize on ARM if precision requirements allow the use of NEON"
   href="http://llvm.org/bugs/show_bug.cgi?id=16275">16275</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Loop Vectorizer: Only vectorize on ARM if precision requirements allow the use of NEON
          </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>Loop Optimizer
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>grosser@fim.uni-passau.de
          </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>Created <span class=""><a href="attachment.cgi?id=10654" name="attach_10654" title="Test case where we vectorize without considering the precision requirements">attachment 10654</a> <a href="attachment.cgi?id=10654&action=edit" title="Test case where we vectorize without considering the precision requirements">[details]</a></span>
Test case where we vectorize without considering the precision requirements

The attached simple loop is vectorized under the triple
'thumbv7-linux-gnueabi'.

Due to NEON not providing IEEE 745 compatibility we should not introduce it's
use under linux, if the user did not specifically allowed imprecise floating
point computations. <a href="http://llvm.org/PR16274">http://llvm.org/PR16274</a> is about fixing the ARM target to
only issue NEON instructions if the user (or the default compiler flags) set
the precision requirements such that it is legal to do so.

This bug is about the vectorizer and its cost model to only introduce LLVM-IR
vector instructions in case we know the ARM target can actually translate them
into NEON instructions.

GCC had a similar issue and fixed it in this bug report:

<a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43703">http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43703</a></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>