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

    <tr>
        <th>Summary</th>
        <td>
            [X86] Remove LowerToHorizontalOp and update test coverage
        </td>
    </tr>

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

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

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

<pre>
    LowerToHorizontalOp is a x86 DAG lowering that tries to vectorize horizontal add/sub code into SSE HADD/SUB vector instructions.

Its also a lot of X86ISelLowering code that is almost certainly unnecessary now.

SLP + VectorCombine between them should be handling all of this, so the backend is very unlikely to encounter real-world scalar patterns a anymore.

So, this task involves:

- Disable LowerToHorizontalOp
- Review all CodeGen/X86 test changes
- Convert the changed CodeGen/X86 tests into similar PhaseOrdering/X86 tests to track the vectorized IR (for the various slow/fast SSE/AVX targets)
- Replace the CodeGen/X86 test coverage with the real vectorized IR
- Remove LowerToHorizontalOp and all its support methods
- Handle any CodeGen regressions (maybe a cost model, transform or backend fix)
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyEVE1v4zgM_TXKhWjhKB9NDj6kzXpabIEZNLuDXmmLibWVxUCkncn--oWctIsCBeZkwHrke3x8Eor4QyQqzeLeLLYT7LXlVL78ufMdx0nN7lw-84nSX_zIyf_LUTF8P4IXQPi1WsJ28w1CBvh4AG1RQZMnAWUYqNFcQ9B-lAI6Z2wlfQ0NOwIflWG3-wMeN9utsdXu7_trHfgomvpGPUe5NcXGFJsnFcAgDAiBFXgPr6vl047C87uCsekoIysMHYtCQ0nRx3CGPkZqSATTGSKfrl13zz_A2Hv4OfI-cFf7SFCTnogiaEsdSMt9cFATtBhdyEwYQhagrRdjH0A4I6HG5o2iy-wDpcwY_BuFc_aDYsN9VEqQCMPNiVNwIA0GTHBEVUoxu4rx3HGid3Gcu2cWUJQ38HHgMJCY2eYCuIGtF6wDwRd7Gs9faPB0GgU_sKNvFI2tXldLUMrutBgPJCPygeNAScdJLv_dFyVy2Zr4zmfpP1oU-p7cuIBPMGXQhM3b2O8jDQ6eXsDY1Z7T5QCT515AAp-MrfYomhNhbLX5-QqK6UAqxq6vsxwDNjQWfjUMD5TwQHDy2o6gbPVn7mufjocvLQOMbvTKq4D0xyMnhY60ZXcx6TEngPKa3hVAokMikZzUPFmH55oAocnp69hRGHeYMMqeUwecPnKy97-MXU9cOXPr2RonVE7v5uvpvJjdLSdtietpsV_v53Uxd1NbFMWdXdn5bN8UNRJN3cSXtrCLYlkspsvpera8LZaLO7Ju71bFrG7s3MwL6tCH2xCG7pbTYeJFeiqn81lRFJOANQUZb7-1V1FmtnldLY21-UFIZS68qfuDmHkRvKj830q9hvHpyPjF9neu9keHSp83NelTKFvV45hoWxlbHby2fX3bcGdslbmun5tj4n-oUWOrcQYxtrqOMZT2vwAAAP__USuhDg">