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

    <tr>
        <th>Summary</th>
        <td>
            [RISCV] Implementation tracking for zvqdotq
        </td>
    </tr>

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

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

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

<pre>
    This issue exists purely to track pending items for zvqdotq implementation for RISCV.  It's primary purpose is serving as a reminder for me as I suspect I'm going to need to context switch away shortly.

Current status: Most of the basic cases should work for both SLP and LV.  LV can't currently generated vqdotsu.vv/vx, SLP can.  LV lowering goes through generic DAG, SLP is RISCV custom.  

Codegen
- [ ] Support vqdotsu via new SDAG node
- [ ] Restructure reduce rooted code to use the generic nodes
- [ ] Add partial.reduce variant of the add traversal? Or maybe do in VectorCombine instead?
- [ ] Consider a vredsum partial reduce -- is this ever better than inloop reduction?

Loop Vectorizer Support
- [x] Basic TTI support in place, generates both scalable and fixed vectors
- [ ] Fix the register weight computation (filed separately)
- [ ] Track the work being done for reduce (zext x), and enable for RISCV once complete

SLP Vectorizer
- [ ] Identify any work on partial.reduce (optional given llvm.reduce rooted SDAG)

Cleanup/Rework
- [ ] Consider migrating the reduce rooted version to VectorCombine
- [ ] Plumb costkind through the TTI hook

IR Optimizations
- [ ] add X, partial_reduce zero, Y -> partial_reduce X, Y
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJxslVFv4ygUhX8NeblK5JBkkjzkIZNuRpG6mlFbVTtPKww3NlsMHrg4SX_9Cux01tU-WcLccw-HDxAh6Moi7tjqK-O89SgaDIxztnqYiEi187thcFI6ddu91DqADiEi4FUHCtBGj-YG5IC8kG_QolXaVqAJmwBn5-G9-6Uc_QLdtAYbtCRIO5t_PZ2eD68zgBMxvg7Qet0If0uarQsIOkBA3yU5EUCAx0ZbhT7XNpgGTxBiaFESnBhfN1C5NJscWESVvtJZwitBuGiSNYiLuEGonSdzm7Fiz4r9IXqPliCQoBjYYg9_ukDgzkA1QimCliBFwJDqolFwcf4tWygd1fD8-AOEVfCYFvL4ClJYxtcEspc1N6jQoheECnISIc66jvFjd2X8kMulsH2tcRf0aQGVwwBUexeruq_XEh723-4VOvTZgYyBXDMDGNbiFFZoWbGfAlt9BbZ6gOfYts7TvTl0WoDFCzw_7L-BdQpHs58wkI-SokfwqKJE8M4l89IpTInGgDmZu60kEUYae6WgFZ60MLNBoxNeC_uRqlAq8dKhD8KwxRG-e2jErURQDrSFV5Tk_ME1pbYI2gZCodjiOGpzcDbohIOAzqMKsbl3vTufTlNSlKDFDj2USIQeqBYWtDXOtf3MBGSvzor9YxruDeh39Pf87q2vqfXXTMXLS8KvT1dbaI2QmHbovuGhJyRIYURpMGNy1tcEQpYfp3bU15yNx0qHZPOCuqoJpGvaOBwaxjdnbVBBwFakFubG-HYk85KPYRLKnJaYeFLOYkZ2CIbxzXs6FddUzQ_ZGdps8uNcgrMSc3eDhH02ib3f0Yz6nhRa0ucbCHvrWzv7mQLGN65NCxEGKt2hBWO6Zjbm7Dlzvh2ANihsbBk_PmES_X8AGl15Qfnk15-xTYyl6MiNqRop_TCxKUG6QG_aqo-Tl9TSJtfOvfV-Tk_wvSXd6Pe8IeMdTFT_leIclv334OQdvUvDP2HKFn98_psrfk7UbqG2i62Y4G6-Xm6Wq22xXk_q3XJebr8sN7zkkpfFYj4v-HZZruWqXM-35Woz0Tte8FWx4pv5tlguvsz45iyklPPldn2WJa7ZssBGaDPLYTtfTfINvpsv5xv-ZWJEiSYMT0C6GPLf4RHwu1Q0LWMV2LIw6cr_LUOaTH47Mi8ZgvEdn5-EtC3_eQcm0ZtdTdSmq5bxI-PHSlMdy5l0DePHpD58pq13_6Akxo_ZU2D8OJjudvzfAAAA__9jFkG1">