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

    <tr>
        <th>Summary</th>
        <td>
            [X86][DAG] `narrowExtractedVectorLoad()` should be more principled about non-single-use loads
        </td>
    </tr>

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

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

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

<pre>
    Originally https://reviews.llvm.org/D33578 had one-use check,
but then it was later removed in https://reviews.llvm.org/D54073.
Back then it was claimed that there were no regressions,
but nowadays we actually have test coverage for interleaved load/store codegen,
and i can tell for a fact that at least for the interleaved load/store patterns,
lack of one-use check resuts in worse codegen overall.

At the same time i acknowledge that we can't just require the load to be one-use,
what we need is to ensure that *if* we replace wide-load+extract-subvector,
the wide-load will go away in the end.

CC @spatel-gh @RKSimon 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyNk0uP2yAUhX-NvUGJHD_ieOFFMulUVUeqNJWqbi_mxmYGQ8ojbv59L3aaNotKlSwCAc79zgG4Edf2i5W91KDUlQ3en11S7JP8mT6LF4mTWyt1GdfG9vTXsSiqescGEMxoXAWHrBuwe0_ypyQ7JtmeB8_8gJpJzyZwTIFHyyyO5oKCSf0fJaoyq4v1IneA7v1Br1MgR1LyA8yFLLIpNtpQkd6ic9Jo94CjzQQCro4WMuh8WJzCBZlH51lHZBZ6ZCdjCZBwFUKEVQYE8ThvSL8zAnvUd2HQ5IZ1oElEqXkvsBPJL2T0kQqpxwnC_LfwGTzN_IWsomVzesyXzLngXQxwMtbdedgMr9QtrqXdz8kwByNZpLQIlDQpBoWCfM6AlAXBJ3nt2VsgTos_grQ4b4x8zBvG8TfEHW667dUYT9PFVahdsDfVJN_LEzVxicUzWaHjkQJXi-UD_vSWMlq5wC_Ykf-7cKx7X0k9yrQ3DCa4Rs9xFrV4cPn0xJIyc5QfqlU_xMHr569yNJqloi1EUzSQeukVtkl1-L7bJtWROsf9R-qwZJtpsNZMHxYkFN9moJcZdJfkDa1gbjBBiRjEOJ-VlbqTZ4qRATfz1dIrJ3WvlqOK7C4NVrWPt7yXfgh83ZmRBvGq335WZ2veqCwNpXMB6RI8V2VTlenQ1nlZ1lVZ5OVWYFMJ4A3w3XaD9amo-GmbKuCoXPSW5DmnA6aAqGI0mudkMZVtnuV5Vm7qTVFsqnK9xawredHsOoSigJISwxGkur--1LYzFg-9o0klnf_zNFOgt9XTwc8lSR-CH4xtX5CjwMvrp3T20M4GfgGh7XFg">