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

    <tr>
        <th>Summary</th>
        <td>
            [bug](clang) wrong generated code for auto-vectorization
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    here is a minimal reproducible example:
https://godbolt.org/z/vKjT74oKr
you can see the output asm here:
```
        vmovups (%rsi), %ymm0
 movq    %rdi, %rax
        movq    %rsi, %rcx
.LBB0_3: #   Parent Loop BB0_1 Depth=1
        vmovups 32(%rcx), %ymm1
        vmovups 64(%rcx), %ymm2
        vmovups 96(%rcx), %ymm3
        vmovups 128(%rcx), %ymm4
        vmovups 160(%rcx), %ymm5
        vmovups 192(%rcx), %ymm6
        vmovups 224(%rcx), %ymm7
        leaq    256(%rcx), %rsi
        vmovups %ymm0, (%rax)
 vmovups 256(%rcx), %ymm0
        vmovups 288(%rcx), %ymm8
 vmovups 320(%rcx), %ymm9
        vmovups 352(%rcx), %ymm10
 vmovups 384(%rcx), %ymm11
        vmovups 416(%rcx), %ymm12
 vmovups 448(%rcx), %ymm13
        vmovups 480(%rcx), %ymm14
 vmovups %ymm1, 32(%rax)
        vmovups %ymm2, 64(%rax)
        vmovups %ymm3, 96(%rax)
        vmovups %ymm4, 128(%rax)
        vmovups %ymm5, 160(%rax)
        vmovups %ymm6, 192(%rax)
        vmovups %ymm7, 224(%rax)
        leaq    256(%rax), %rdi
        vmovups %ymm0, 256(%rax)
        vmovups %ymm8, 288(%rax)
        vmovups %ymm9, 320(%rax)
        vmovups %ymm10, 352(%rax)
        vmovups %ymm11, 384(%rax)
        vmovups %ymm12, 416(%rax)
        vmovups %ymm13, 448(%rax)
        vmovups %ymm14, 480(%rax)
```
it doesn't use `ymm15` but reuses `ymm0`, just like it doesn't know that `ymm15` is available.
but adding the mfence at line 19 will get the expected output asm. it uses `ymm0` to `ymm15`.
you can see gcc here is as expected.
Is it a bug?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMlk2PozgQhn-NuZQ6so35OnDo7ijSauawh72vDFQT9xjMYpPu9K9fmTD5oGGSKFJEeOp1lf2WXNJaVbeIOYleSLQN5OD2ps-_Sq318VgUQWGqY77HHkFZkNCoVjVSQ49db6qhVIVGwE_ZdBpJ-EzoltDnvXOd9U98R_iuNlVhtNuYviZ890X47vDj_Z9EmB_9CT-aAUrZgkUEt0cwg-sGB9I24Bc-y5KYTt_xEabPoTGHobNAeEp41FtFeEb4KxAeHZvmN9yYw3-e9kilpve9_LzVuqbsmSonavPz5YX-G5LwGQgPAeBv2WPr4KcxHfhXDLbYuT0Jt2w5x5BPWZafN1mu4LFYxvkynsXLeLiMMw8v8WKFj-kyH63w2Uq18TLP-Uq5yS2vUY6HxKOlev25rfjj5IcRS6fT59kEn5NYFL0y0jzpdGUT05lwyFd2L1uxSrTmFTpXTlf2ja3YSrCVGhmfSQuxUh1b8ZRIV6pkYib92_j89dIV1weyeHrc4-euuIuHHj93xV1cePzSFXf5aOTPXXGXj0c-e7jaxPOXrljgv7eCvG6F6n4rzCP_wKcjnz68PdnpbB_eHjYmdPH9_YCTe9KH_cBG_1zsfz9gdNClC-4HjB66dMFVwOz6Ug4qg7YlPHEwWAQSUy8QkZhCMTjocbBop7_HOP4K74N1oNUvhJv4X635ALeX7kbF39gHqbQsNG5Oq3phWVWqrcertnnDtkSQXrNFYBl8KK2hRje-xs8OS4fV1ZW88QvPEgNnrtfdfL_W67KE8xBhz7oT-Zf1ohKKoSbhLqjysMrCTAaYs4SJKI6ECIN9LssqipjIWJJgJdJCipIWWfyWZEVaZmEVqJxTLmhEGeOMinBTxVzSuKBxlBZF8iaJoNhIpTdaHxo_kATK2gHzjCY8CbQsUNtxEuK81LKtCed-KOpzzz8VQ22JoFpZZy8KTjk9jk8--2hLeDqFZvDRm7aGGlvspd_F0lQIb6YHOTjzdMDSmV59SadMGwy9zmdzk3L7odiUpiF855ebfp663rxj6QjfjdlbwndjAf8HAAD__7Nwsk0">