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

    <tr>
        <th>Summary</th>
        <td>
            [VectorCombine] Implement shrinkSplatShuffle from InstCombine
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          Adar-Dagan
      </td>
    </tr>
</table>

<pre>
    Implement in VectorCombine an equivalate to shrinkSplatShuffle from InstCombineCasts.cpp that is cost model aware.
`castop(shuffle(X, undef/poison, splatMask)) -> shuffle(castop(X), undef/poison, splatMask)`

This is searching for the opposite transformation from VectorCombine::foldShuffleOfCastops, which pushes casting operations to happen later. 
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMkkFvpDgQhX-NuZQaGQNNc-DQ29mWcljtIaNRrgUUbU-M7XGZRPPvRyatRDnNnJAo1XuvPj9kNjdHNIj2H9E-FLgl7eNwnjEeHvCGrhj9_Gt4XIOllVwC4-A7TcnHi19H4wjQAf3czCtaTATJA-to3MtTsJie9LYslmCJfoVHx-m-dEFOXE4hQNKYwDBMnhOsfiYL-IaRSiHP4ign5OSDUCd-VxLq9CzUBTY30yLUNXjD3uU_nP3-Q34Rqheqh4Oo_4XPrQ-h533-R4WjzAHk-Zs2nPMxYZy0cTdYfISkCXwInk0-OaLjxccVk_Hu_dYviER9FvV58Xa-8_h_uexxONu-aTNpCBtrYsgxs4kPFHc5zkQ1hkAOMuBYQjEP9dzXPRY0VF2rOtW3TVfooTnNaq6Oqm9IopLN2FRIp4aaqh5bwrowg5KqlV3VybbqZVdWrSQ6dl3Xn2TdnUg0klY0trT2dS19vBWGeaOhanrVysLiSJb3qijl6A32qVAqNycOeekwbjcWjbQmv_CHTDLJ7h37CqZ9gM9m_UVvii3aQacUODNVV6GuN5P0NpaTX4W6Zr_75xCi_0FTEuq6p2ShrvczXgf1OwAA__9D2_4G">