<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 - [x86] x & ~0xFFFF could be emitted as 16-bit xor"
   href="https://bugs.llvm.org/show_bug.cgi?id=44469">44469</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>[x86] x & ~0xFFFF could be emitted as 16-bit xor
          </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>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>Backend: X86
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>tilkax@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>craig.topper@gmail.com, llvm-bugs@lists.llvm.org, llvm-dev@redking.me.uk, spatel+llvm@rotateright.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>uint64_t foo(uint64_t x)
{
    return x & 0xFFFF'FFFF'FFFF'0000;
}

GCC:   xor ax, ax            (3 bytes)
Clang: and rax, 0xFFFF'0000  (6 bytes)

Same thing for 32-bit "x & 0xFFFF'0000".

As far as I'm aware the only reason 16-bit instructions are usually avoided is
because they always implicitly depend on the upper bits (but this dependency is
required here) and because the size override increases encoding length (not the
case here because it saves a 32-bit immediate).</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>