<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/54985>54985</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[X86] pavgb codegen regression
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:X86,
llvm:codegen
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
davidbolvansky
</td>
</tr>
</table>
<pre>
```
unsigned char ur[16], ua[16], ub[16];
void avgu (void)
{
int i;
for (i = 0; i < 16; i++)
ur[i] = (ua[i] + ub[i] + 1) >> 1;
}
```
LLVM 11 -O3
```
avgu(): # @avgu()
movdqa xmm0, xmmword ptr [rip + ub]
pavgb xmm0, xmmword ptr [rip + ua]
movdqa xmmword ptr [rip + ur], xmm0
ret
```
LLVM trunk -O3
```
avgu(): # @avgu()
movq xmm0, qword ptr [rip + ua] # xmm0 = mem[0],zero
movq xmm1, qword ptr [rip + ub] # xmm1 = mem[0],zero
pavgb xmm1, xmm0
movq xmm0, qword ptr [rip + ua+8] # xmm0 = mem[0],zero
movq xmm2, qword ptr [rip + ub+8] # xmm2 = mem[0],zero
pavgb xmm2, xmm0
punpcklqdq xmm1, xmm2 # xmm1 = xmm1[0],xmm2[0]
movdqa xmmword ptr [rip + ur], xmm1
ret
```
LLVM trunk -Os looks fine indeed..
```
avgu(): # @avgu()
movdqa xmm0, xmmword ptr [rip + ua]
pavgb xmm0, xmmword ptr [rip + ub]
movdqa xmmword ptr [rip + ur], xmm0
ret
```
https://godbolt.org/z/cbKa3zT4M
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNVU1zmzAQ_TXioolHSMY2Bw5x3F6aTC-dTq8CKVg1ICwJt_Gv70oQYsd2vmbaKSMjLdq3u--xFrkWDxmakWGQFSLXXWNV2UiBizU3uDMoWcYzlKwQvcEdP7Ly0WLLHtzfd1oJzHdlhxFdeAPRdNifD44Yq8Zh9QyI8b02HqQwYitMYBv75Q2GNH6N6DKM9NEf9xUqKCJAABuK7B_QZV_kaMUABb9PMGA9Jp-vhsWxFP399vb7HY5jfPWVnfXyRCGtL4qFil64EGUYTckBZOThr1rvxJZj_LuuiVcY5l_aCNw6UCVZGtWOnFbHyBZC5vh1JD9BHuQ8izDD2w6Rj5BGuhdkOxDPma7Z_CP9tvhAhe1FDZ7Ced_QOrWswYv0dPfS6Iux48ux8-ex47fEPnh78Xmt38qMLhdDBR_kRl_idhKdvpMdPc-u7Zq22FRbse3tAx3oaQOMqga3MXEIP1gf7fD4PR1-1NsWV1pvLL5XjYSzTUgpJpP_5bw4_de_9bw4PWn-1nmxdq61oAiin2GUWuS6chNtSrD28CvyL5ztv03vIpExkbKUR065SmaQ_MfCf4UGUoUWspQNpCuNtFbpJupMlT2Lr9y6yyeFrsGoqt3jdNUa_VMWDkxlbSctLJJpukiidZbczwid8kLki3g-m_N0XghZpLM0JrO0SEVU8VxW1heEKM15sZGNgIy-Oho6H6aQi10PRfrnySpSGSWUkmmcUkrnjEwKkeSM8IQxRighFHpA1lxVEw_3okQmC-XmXWlhs1LW2adNbsM3PGjj4_POrbXJBN8pL-uON3bzEAWCWWD3B21wHnE">