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

    <tr>
        <th>Summary</th>
        <td>
            [Clang] Change register types.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          witbring
      </td>
    </tr>
</table>

<pre>
    I discovered that Clang changes register types without any warning when processing invalid assembly code. 
I believe Clang should more accurately verify assembly syntax.


```
.intel_syntax noprefix
Bug:
 lar R11, R8W
    movmskpd R9, XMM0       
    pmovmskb R10, MM2
 tpause RDX
    umwait RBP    
```

```
Bug:
 lar r11,r8
 movmskpd r9d,xmm0
 pmovmskb r10d,mm2
 tpause edx
 umwait ebp
```

You can reproduce the bug through godbolt.
https://godbolt.org/z/WofxMjWqG
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8k82OmzAUhZ_GbK4mwuYnYcGik4hqFpGqbGa6qgy-AU-NTf1DQp--gjCNmlZFCOR7j48_2T7cOdlqxJJkzyQ7RDz4ztjyIn1tpW6j2oipfAEhXWNGtCjAd9zDXnHdQtNx3aIDi610Hi34aUAHF-k7EzxwPcGFWy11C5cONQzWNOjcPJZ65EoK4M5hX6sJGiNwAyQ-kPjTC9SoJI64ruM6E5SA3lgE3jTBco9qghGtPE93Czdpz6-bm8cf3zxe32W4kdqj-naTgzaDxbO83nrPoSXJOg0Ut3CilLA9nHavaxEAejP27vsg4FTMvbfjMYbbc9cMN1ENJxrPouORrU0_8OAQToe3uzr0Fy49nJ6_3F0eqP9Z_AvXLrh2t5Z-k9pCELa_9v068c5naTy3-v6BD8W6JR9wWA__AftqAjRcg8XBGhEaBN8h1KEF31kT2g5aI2qj_Ho-nfeDm9lZRVj10TO2Jaz6SVj1as7X4_vrj8-RKBNRJAWPsKRbuqNFvmNJ1JVbmiWY7AouMp6LAmnDzoxTmtNtkW-xiGTJYpbGOWWUZUmabBIW5-k5wWyLeSowJ2mMPZdqo9TYz2tH0rmAZZGxlEaK16jcEgzGmvkiEsbmjNhy1j_VoXUkjZV03t0dvPRqSdNydUl2gP2SkoeQbKJgVfmwCdJ3od40piesmg3X39NgzTs2nrBq4XOEVTfEsWS_AgAA__8IkyW2">