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

    <tr>
        <th>Summary</th>
        <td>
            [X86[ Failure to merge shuffles of __m128d[2] back into single __m256d load
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:X86
      </td>
    </tr>

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

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

<pre>
    ```cpp
__m256d gg(__m128d x[2], __m128d y[2]) {
    return (__m256d) {x[0][1], y[0][0], x[1][1], y[1][0]};
}
```
clang -march=avx
```asm
gg: # @gg
# %bb.0: # %entry
  vmovapd (%rsi), %xmm0
  vmovupd (%rdi), %ymm1
  vmovddup %ymm0, %ymm0 # ymm0 = ymm0[0,0,2,2]
  vinsertf128 $1, 16(%rsi), %ymm0, %ymm0
 vshufpd $7, %ymm0, %ymm1, %ymm0 # ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[2]
 retq
  # -- End function
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx8U0GvmzwQ_DXLxUpkrzGEAwfy8uXy3dpLb5HBhrjFkNomSv59ZUJCXvVUKVaWndnZWVsrvTfdoHUJYg-I3_7_buw4ACKIQyKncB5duSSTelT3EjL6-DWXC9DqdLIoMkW6DnB3OlmGO0VuIPZRAPCDPHP3V64gkO-BVoQQ4nSY3EAetVFogaMCjWyxZ4vQfU3RJXV7wp9Z7I2VH4DHZjGg1cs80Krp5dCRjZWuOQM_yOvtnSC9BVp1HfCKAHICKe26SIgxirre0heEQg_B3eeRrna8youKEwEK5w1gEX0Bipu19MWZVo5649ytZS-OUtNlSdIVp3PTR8APczAPix_x4HzE4SFiBq9daBnuCGDKogjLvrD2V4dYfPXnqZ1NpvmXLPYvS2x9ksXg-hUx_gl7GnY6_J6NR7nNhvw3KNJOQxPMOLw_TqJKrgpeyESXLE9zXlCRFcm5LPSuFVRK1Ta5qjOFWmmeC64L2gpN68SUSFFQwTJGWUaLrZRZutNC5jSnvChySKm20vTbvr_a7ei6xHg_6ZKlFHma9LLWvV-WpZbNLz0o4NWPXbasjCtj4aaeOg8p7Y0PfpUKJvTzpkW-2JOjNP3kNAkjsdp1msQ7b3vtydg-F2e5HhKbETOEkXgzdL0mz83rR6mSyfXlOYSLB14BHgGPnQnnqd42owU8RgfL3-bixp-6CYDHeTIPeFyGu5b4JwAA__8spB0n">