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

    <tr>
        <th>Summary</th>
        <td>
            [X86] Worse code generation from patch 24780e13e5be1501e34330148137a10fa9965166
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          max-quazan
      </td>
    </tr>
</table>

<pre>
    We see worse code generation on memcmp-like function caused by
```
commit 24780e13e5be1501e34330148137a10fa9965166 (HEAD -> main)
Author: Simon Pilgrim <llvm-dev@redking.me.uk>
Date: Sat Apr 1 15:38:38 2023 +0100

    [X86] MatchVectorAllEqualTest - add support for icmp(reduce_and(X),-1) allof reduction patterns

    Also, improve codegen in LowerVectorAllEqual for X == -1 cases to reduce over sized vector using a AND reduction

```
Asm on last release: https://godbolt.org/z/GxvaPbMq1
Current asm: https://godbolt.org/z/EGz1n7Wo8

Loop block changedfrom
```
.LBB0_3:                                # %memcmp.loop
        vmovdqu (%rsi,%rdx), %xmm0
        vmovdqu 16(%rsi,%rdx), %xmm1
        vpsubb  16(%rdi,%rdx), %xmm1, %xmm1
 vpsubb  (%rdi,%rdx), %xmm0, %xmm0
        vpor    %xmm1, %xmm0, %xmm0
 vptest  %xmm0, %xmm0
        jne .LBB0_19
```
to
```
.LBB0_3:                                # %memcmp.loop
        vmovdqu (%rsi,%rdx), %xmm0
        vmovdqu 16(%rsi,%rdx), %xmm1
        vpcmpeqb        (%rdi,%rdx), %xmm0, %xmm0
 vpmovmskb       %xmm0, %r8d
        vpcmpeqb        16(%rdi,%rdx), %xmm1, %xmm0
        vpmovmskb       %xmm0, %r9d
        shll    $16, %r9d
        orl     %r8d, %r9d
        cmpl    $-1, %r9d
 jne     .LBB0_19
```
I am not sure into how big performance regression this translates (build & benchmark runs are underway), but the assembly definitely looks worse in the loop block.


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcVktv4zgT_DX0pWFDJCVZPvjgxPF8H5BZDLCLTW4DimxLHPOhkJTz-PULyc4k6zjJzHUJQ36oq6vEarNbxKgbh7gkxQUp1hPRp9aHpRUP07tePAk3qb16XN4gRES49yEiSK8QGnQYRNLegXdg0UrbTY3eIWx7J8ffpegjKqgfSbYm2YqU2fE1fpXeWp2A5fMqQ8qxqJEWGUWec57RvKJ8Lmi2FYtFWdCyBMKq_12t1jAl_Aqs0I6wxSHTatRM-Ar-1NY7-KZNE7QFwi-N2dupwj3Js4Bqp10zszjrd4RfHbBrkXBEigSrLgAFWhC-4tV4AZYxDoRdZDQ7yj5cAQBIcXFblaRYw1eRZPs3yuTDypiru16YvzAmmIJQCmLfdT4k2PoAWtqOsCqg6iV-F04RVt0OD8Iup5SwBQhj_BbG--MediIlDC6ekq9M9IRdgrZd8PuDJw060A6u_T2Gf6sZuW-B8DXha5hSkCJihOQPTAh-jwGifkIF-xEJfdSuAQGrP9Yvcl6rOLFzFe1QCEbEBAENijjua5tSFwlfEbYhbNN4VXuTZj40hG2eCNt8ediLb_XXO3rIctmHgC6BiPZX0Fdfnqib3_jqtbBr7zuojZc7kK1wDapt8Pas6Nn1xUX2nQ9Unywy1kFxqPOZ8b578WJYe-v36q4fqpSwIkRN2OXwQT0c3B3AD9Zm51G0_ARHT3Bd7OsaXnDqXdybFM_YT5DZ-6I7Hw5bcsJwBrLv0vBH-DTnD4dwMIMuzjqV_H_MQGk7vKtf1P2uGfvO-r2Nu_pnhteBoVIfE_5O5bzx_0PmxQlzbI05hOUD6fkgH8xzrkH6O1HSds-ppvRN0FBDw_qwjv4PwoLzCWIfELRLHlp_D7VuoMOw9cEKJxECNgFjHE7g1OoIKQgXjUgYB6vqXhsFhJVQo5OtFWEHoXcRREDoncJwLx6Pu1n3CVKLIGJEW5tHULjVTic0j2C838VjU9VuDDM_D6_Z6zNtopZcLfhCTHBJyyorqvm84pN2KfkWecZllnNVzasqryjNa17OBRU5luVEL4celuVZnhVFyfhMbRc1W8iMyS1FNt-SPEMrtJkNvXI4Wyc6xh6XJV0wPjGiRhPH6YAxh_cw3iSMDcNCWI79te6bSPLM6JjiS5akkxnHimOTvDk7OwxH89DkZPvLk8CkD2Z50hl0avt6Jr0lbDMoOL5Nu-B_oEyEbUbdkbDN-Fz_BAAA__8TTYZu">