<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">