<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/122092>122092</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Clang] Intel Assembly Bug (Mishandle Vector Register Names)
</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 am reporting an assembly bug found during research.
The tests were conducted using the latest version (Clang 19.1.0)
The issue occurs in the same way with previous versions as well.
When vertor register names are used in memory operands, incorrect binary code is generated.
Clang converts them 64-bit registers in x86-64, while converting them 32-bit registers in x86.
1. Example Code
```
.intel_syntax noprefix
.data
xmm0:
ymm0:
zmm0:
.long 0
.text
test:
mov edx, DWORD PTR [xmm0]
mov edx, DWORD PTR [ymm0]
mov edx, DWORD PTR [zmm0]
```
2. Compilation Command
```
clang -c test.s
```
3. Compiled Binary Output
```
0000000000000000 <test>:
0: 8b 14 05 00 00 00 00 mov edx,DWORD PTR [rax*1+0x0]
7: 8b 14 05 00 00 00 00 mov edx,DWORD PTR [rax*1+0x0]
e: 8b 14 05 00 00 00 00 mov edx,DWORD PTR [rax*1+0x0]
```
This related bug can also be observed when we use any vector register names.
This bug can also be reproduced on Godbolt:
https://godbolt.org/z/br7n44ezr
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysVMuO4zYQ_Br60rBAUZJtHXTwYx3sIdlgMcgeA4psSwz4EEjKtubrA8r2eDKzhxxWIGDC7K7uKrKLh6A6i9iQakeqw4KPsXe-uajYemW7Revk1HwFbsDj4HxUtgNugYeAptUTtGMHJzdaCXJMCeAxIPeizwjdvvQIEUMMcEGPIJyVo4goYQwpNPYImqcAOKMPylkgbLPX3HaQ11meUcLqO4wKYURwQow-gLJzbuAG4cInuKjYw-DxrNwYHlgBeKqrdeqE0O2PHm06i86Dx06FiB4sNxiAe4QxoEzABo3zE7gBPbcyELYHZYXzHkWEVlnuJxBOpo6gQ4ueR5SpxK1v4WyqEVKDBlblslXxrdzc-XWzWq7KhHvplcZHxl0QAwX7ac6dRZ7Blys3g0bYO4m3P8mK3hfdZspG1H-HyUZ-BesGjyd1TQeSR07o9moMJUVKm952r287AIBMO9sBvWFnEa-R0G26pmeIcWdAeU0sDj--fT_Any_fgVS7Gbw6vItK388ip_8d-foW-Z4noVuWwd6ZQWke09vZO2O4lZ8lEfPNLMX8FrPwGah4AKGE3e2Kv41xGONnLPrhA1Lsb9J8uauThASATQt5CbQCSp_ryfRG9D88Pb8Sts0J29HrU5r1r4XDXwj3QcWXXgXwmCZazr4gklHo4KBFcG1Af0YJlzSGl3negNsJzig-T2T2DvEjksfBOzkKlOAs_OZk6_T9ZfYxDiFt2ZGwY3c7ypzvCDu-EnZs_dqWJb76hWwKWRc1X2CTr4tVUVQ1pYu-4SsmeM7z02pzamXNyrKmVbte16eqws1ps1ANo6yiOd3keZGXNKvXkm5EvS4r0fJyU5CSouFKZ1qfTaq9mK2ryRmjNVto3qIOs9syNj9MwlgyXt-khGU7doGUVKsQwxMiqqhni55NhlQH-JqmHLYPG96NXfLO31XouZUa4a-brN8fsv6RZCWsXoxeNx90UrEf20w4Q9gxlbz_LAfv_kERCTvOFAJhxzuLc8P-DQAA__-PkOIB">