<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 - isBitwiseNot / isConstOrConstSplat etc don't support build vector truncation"
   href="https://bugs.llvm.org/show_bug.cgi?id=41020">41020</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>isBitwiseNot / isConstOrConstSplat etc don't support build vector truncation
          </td>
        </tr>

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

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

        <tr>
          <th>Hardware</th>
          <td>All
          </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>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Common Code Generator Code
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>nikita.ppv@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>The isBitwiseNot() helper currently misses cases where a build_vector of
implicitly truncated constants is used. E.g. an all-ones vNi16 build vector on
AArch64 will use i32 elements of value 65535.

isBitwiseNot() is based on isConstOrConstSplat(), which is where this
limitation ultimately comes from.

It would be possible to easily fix isBitwiseNot() specifically by using the
ISD::isBuildVectorAllOnes() helper (which does handle truncation correctly),
but it would be nice to support this for the whole isConstOrConstSplat()
machinery.

See <a href="https://reviews.llvm.org/D59174">https://reviews.llvm.org/D59174</a> for a case where we run into this issue.</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>