<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/90355>90355</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            *(uint16*)==uint16 code gen (x86_64)
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          ordinary-github-user
      </td>
    </tr>
</table>

<pre>
    https://godbolt.org/z/K7abn3T1s

```c++
bool test(std::size_t ptr)
{
    return *(const std::uint16_t*)(ptr+10) == std::uint16_t(0x1234);
}
```

clang
```asm
0f b7 47 0a movzx  eax,WORD PTR [rdi+0xa]
3d 34 12 00 00        cmp eax,0x1234
0f 94 c0              sete   al
c3 ret
```

gcc
```asm
66 81 7f 0a 34 12     cmp    WORD PTR [rdi+0xa],0x1234
0f 94 c0              sete   al
c3 ret
```

looks like clang's code is a bit longer, is it less efficient?
this only happen with uint16
uint8, uint32, uint64 are fine
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0VE1vqzoQ_TXDZpTIjPkwCxZJIzZv8Z6qSm9ZGTDErw6ObNOm_fVPBtJ7Vd3e3bWsxIznzJwz4iC91-OkVA35EfJTIudwtq62rteTdO-7UYfz3O5mr1zS2v69Podw9cAPQA1QM9q-tSbsrRuBmg-g5q9SthN_Sj2wE7DD9luwdXdAx7iXaGutwaB8ABI-9LEoP3j9oZ4DXoMDqjZ0uQEQEZ0Ks5sQ6AAkOjv5gJ_YWU8hLZ7DclkBiaXKMWVAFQI_AT_9KlmwW0o8ixB-vLc8fWH-s5zOyGn8ci_9ZY2wAdsSsxKZxIt9_bghKnkDevj378cT_vP0iJAfXa-BjuwmId8a8R55hikhY3Fvq7tcN_TG8d6iyrD7zFqXV0EhojQbSR5n9RsVY9d9p6EoUKRYDlHDyupOBhG_1fEnSBprXzwa_aJwnTqVHjvbK9QeJbY6oLHTqBzQQwzFZ-U9qmHQnVZTAN6slcJZe7STecezvF7VhG86nHF9C9aMeBaxTjxwup-KDKVTOOhJJX3N-4pXMlF1WqYZZXkpRHKuZcHLUlKf5kPJxSCzvGVllYmil4PqBpXomhhlLKMyrYgzsefUMtHxnuVZLoZWQsbURWqzN-b1Ev2UaO9nVVeM53liZKuMX0xKNKk3XC6BKHrW1RGza-fRQ8aM9sH_qBJ0MKpe7bKJXd2x2GGNrAMdVbSVuIniuYhmSGZnvtp9-RrsO3sBamKL7W93dfY_1QWgZiHmgZqF-P8BAAD___tXNvQ">