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

    <tr>
        <th>Summary</th>
        <td>
            Combiner dags/patterns.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            llvm:globalisel
      </td>
    </tr>

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

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

<pre>
    I have issues with opcodes that a variable number of operands:
```
def G_BUILD_VECTOR : GenericInstruction {
  let OutOperandList = (outs type0:$dst);
  let InOperandList = (ins type1:$src0, variable_ops);
 let hasSideEffects = false;
  let variadicOpsType = type1;
}
```
For build vector the number of sources is variable.

I tried in the combiner:
```
def extract_vector_element_build_vector : GICombineRule<
   (defs root:$root, build_fn_matchinfo:$matchinfo),
   (match (G_BUILD_VECTOR $src, $x),
 (G_EXTRACT_VECTOR_ELT $root, $src, $idx),
   [{ return Helper.matchExtractVectorElementWithBuildVector(${root}, ${matchinfo}); }]),
   (apply [{ Helper.applyBuildFnMO(${root}, ${matchinfo}); }])>;
```
but it fails when there are two operands.

I could copy-paste up to 8 or 16 operands, but ....
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVF2PqzYQ_TXmZbQIDFnCAw_5vI20VaRtets3ZMwQXDkY2cPu5t9XGO7mJl314UpRMOM558wXI5xT5w6xYIs1W2wDMVBrbEFOtgMSBZWpr8UBWvGGoJwb0MG7ohZML02NDqgVBALehFWi0gjdcKnQgmnA9GhFVzuWrFi0ZdGKPUfzz7_W2MC3cv3n4WVbft9tTsdXYMkKvmGHVslD58gOkpTpgGXrCQKgkeA40HHiflGOgCVbYHxpBnJA1x6jUZCntSPGc5bcQQ_dF0jVTcB4AjorI8Y3nymVpnd3TCNRK9wfqsZd06Ak55kaoR0-6HmOWslj707XHr3fLDX7sWz7ZXX2xkI1KF3DG0oyFqj9ubjODFaiA-U-4wxnHv9_ALIKa1CdB0pzqVSH9v96gR9khaRy0itR4wU7Kn0Qs3Fq0GEzsb0OGlmy-ZHvWMoaGwfWGJpK6U98MyVSNl15ESRb1TVmur-98pzxOyZ_NR4eR8Q3aCRlPP24w3nn3d-n19XmNLuXu5cT_BTIHVrVH4-6izXL1mCRBtvBb6h7tKGPZDcV57svw24qzV-K2vWY2WRlfMl4yrK1F8u2swrL1rc0R-s4STCeFtv_pi36Xl9_xDEH4G1eaN_9fvxFmWR3G7n73lcDgSJohNIO3lv0E2MRhEWgd_P5HT_MlzSDrkGa_vrUC0cIQw9kYAnGQvx8-_p9-wnCMAyDukjqPMlFgEWcxXEexYs0DtoiR77AOBWNyJZZkuRZmuVNtMSE57IRiyRQBY94GiVJHD_HnMdhnGZ5vJAyxmXcPHPB0ggvQulQ67dLaOw58MuqWGZxngZaVKidX3Gcjx4sWZ21qYRWDjXjfNx8thhvnqrh7FgaaeXI3dhIkcZiHnwLtTg7xve9IELbuTAYrC5aot5vO75nfH9W1A5VKM2F8b3XnB5PvTX_oCTG99M-ZXzvo_w3AAD__48QrzI">