<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">