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

    <tr>
        <th>Summary</th>
        <td>
            Sub-optimal codegen from _mm256_movemask_ps
        </td>
    </tr>

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

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

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

<pre>
    The code
```c
#include<immintrin.h>
extern char mask[];
char f(__m256i a, __m256i b) {
    __m256i c = _mm256_cmpeq_epi32(a, b);
 c = _mm256_and_si256(c, _mm256_loadu_si256((void*)mask));
    return _mm256_movemask_ps((__m256i)c)!=0;
}
```
generates the quite excessive assembly
```asm
f:                                      # @f
        vpcmpeqd        ymm0, ymm0, ymm1
        mov     rax, qword ptr [rip + mask@GOTPCREL]
        vpxor   xmm1, xmm1, xmm1
 vpcmpgtd        ymm1, ymm1, ymmword ptr [rax]
        vpand   ymm0, ymm0, ymm1
        vextracti128    xmm1, ymm0, 1
        vpackssdw xmm0, xmm0, xmm1
        vpmovmskb       eax, xmm0
        test    eax, eax
        setne   al
        vzeroupper
 ret
```
(https://godbolt.org/z/914xc1Wbf)

while using `_mm256_movemask_epi8` instead of `_mm256_movemask_ps` results in the expected result - https://godbolt.org/z/1rj4ajzoo.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVE1v4zgM_TX0hWhg0x-JDz60zWQvC-xid4A9BrLExGoty5Xk1O2vX9hOM01QoCMEIUi-Rz4xCoX3-tgxV5A_QL6NxBAa6yr1LrQRUW3VW_WzYZRWMcRbiO-hiJePPPuU6k62g2JIH7UxugtOd6sG0h8LgMfArkPZCIdG-OelEaQPS3qOH4A2-72hvNAogB7xw6mBSoT1GYuIl4xESLe4N5O3l6bnlz33OiWgzVxhYl6aXKNFp_ZeU14AbeTcbYm3VqjhkgHanKxWQPdA5SycyquaiOg4DK774Bt74gm47_3CP2sFKuVMTiDdxpcCsN7ejHRxj9yxE4E9hobxZdCBkUfJ3usTo_CeTd2-3VCFN0vkAOks7fsDlCJk8eHXdaZz6udhqg__zZh4mtEnm1wzjD3N1olxAry8WqewDw4hf3C6R6CH5YfP4j_--vn34z8__pwewE3X0TpEHKfq9HhtF-Qs7Bg-C0sughZ71VmMX3QRnfqtO514DE7IoBPa4CddH4xbeC_ks_fqdQLGZ-HxzQUuWGNPxj_XZ5-Xsc2EK2BgHz4BJnOV9xw6RkTR3jR4Z2eHvmd3jjsOXz40oE0TQu8hvQfaAe2OVtW2DSvrjkC7d6BdmWSjTP6rD9P7XUjz92ujW8bB6-6IUMS3fwDu9QaKGHXnAwuF9vAVqvcTxrEf2uBRd_N757FnGVid43iH32lM3FMmnt6tXUWqSlWZliLiKinWSZwV5TqLmqpI1jKr1SYtSSh5KOI8r9OiyEit1_k65UhXFBMllGRJmVGerWKVp-VBirxkWRaJhCxmI3S7atuTmZpH2vuBq7zMqYhaUXPr5x1K1PErzkkgmlaqqybOXT0cPWRxq33wv6oEHVqu_h3qO9sHbUQ7r9ojd3hw1nyxWaLBtdXNSHRohnolrQHaTZXP5q539ollANrNejzQbtb7fwAAAP__cje1ug">