<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/123301>123301</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Use not jointly dominated by defs during scheduling with overlapping register tuple defs
</td>
</tr>
<tr>
<th>Labels</th>
<td>
llvm:codegen,
llvm:regalloc
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
arsenm
</td>
</tr>
</table>
<pre>
The scheduler hits an error in this testcase:
```
Use of $vgpr4_vgpr5 does not have a corresponding definition on every path:
64r INLINEASM &"; def $0, $1, $2, $3" [attdialect], $0:[regdef], implicit-def $vgpr4, $1:[regdef], implicit-def $vgpr5, $2:[regdef], implicit-def $vgpr6, $3:[regdef], implicit-def $vgpr7, implicit-def $vgpr4_vgpr5_vgpr6_vgpr7, implicit $vgpr4_vgpr5, implicit $vgpr4_vgpr5_vgpr6, implicit $vgpr5_vgpr6_vgpr7
LLVM ERROR: Use not jointly dominated by defs.
```
```
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 -run-pass=machine-scheduler -o - %s
---
name: scheduler_use_not_jointly_dominated_by_defs_tuple
tracksRegLiveness: true
machineFunctionInfo:
maxKernArgAlign: 1
frameOffsetReg: '$sgpr33'
stackPtrOffsetReg: '$sgpr32'
occupancy: 8
sgprForEXECCopy: '$sgpr100_sgpr101'
body: |
bb.0:
liveins: $sgpr0, $sgpr1
undef %0.sub1:sgpr_64 = COPY $sgpr1
%0.sub0:sgpr_64 = COPY $sgpr0
%1:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
INLINEASM &"; def $0, $1, $2, $3", 0 /* attdialect */, 10 /* regdef */, implicit-def $vgpr4, 10 /* regdef */, implicit-def $vgpr5, 10 /* regdef */, implicit-def $vgpr6, 10 /* regdef */, implicit-def $vgpr7, implicit-def $vgpr4_vgpr5_vgpr6_vgpr7, implicit $vgpr4_vgpr5, implicit $vgpr4_vgpr5_vgpr6, implicit $vgpr5_vgpr6_vgpr7
%2:vreg_128_align2 = COPY killed $vgpr4_vgpr5_vgpr6_vgpr7
undef %3.sub0:vreg_128_align2 = COPY %2.sub3
%3.sub1:vreg_128_align2 = COPY %2.sub2
%3.sub2:vreg_128_align2 = COPY %2.sub1
%3.sub3:vreg_128_align2 = COPY %2.sub0
GLOBAL_STORE_DWORDX4_SADDR %1, %3, %0, 0, 0, implicit $exec :: (store (s128), align 8, addrspace 1)
SI_RETURN
...
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMVs2SmzgQfhr50oVLSOCfAwdmbG9NrTNOeZJs9kTJ0AYlIFGS8MZvvyVg7MSpSWbntBRGcvfXP0JftxDWylIhJiS-I_FqIjpXaZMIY1E1k4MuzsmHCsHmFRZdjQYq6SwIBWiMNiAVuEpacGhdLiwSnhLa3zM63jT9aBH0EQiLTmVrosw_Yyg0WlDaQSVOCAJybQzaVqtCqhIKPEolndQKtAI8oTlDK1w1BJhFBh4etw-P6_TpHRA2I4wRfuetfBhK2L0fw3Fk48gJY0DiO-FcIUWNuSPxatRR7zm-M1gWeBzFsmlrmUsXjH779C--X4ePLzm8Dj-75Po6_PzFRIf33D9n2U_QG9gvVNklrVvAj85put1-egfr_X63JzwFv-1-f79oqVx9hkI3UgmHBRzOfqfs9IYnPzOHMA77j4_eW13nEDTOyLZGwleiKcpcBaIp_K-yAoImbzvCV-Xx2zKiEJhOBa2wlvBVI_JKKgyuLA40BEBYbIeYQRAQmirReAJfyZ51FjOlXTYuIbssITucM7-EzHU-H5o6I_Kvdo_lVp5QoQ-bgjOd143hN53KPaEf1FEPNAZoxLc_0ajUlGktS-WNwl5xNKLB3fFo0e2x9HLC5oRFtmwN537uUdaJ_Ot7Z14CsmegzvOuFSo_e8BwLbzCozbarD-v7-91e_7RPKQ0G8Zw8OPbwdXBcJH5fR_hcJjScVW1PKFUdnDWe3ouyN7b8Mq9bacGvsZ0aruDrygPyGYREL6C-937v783ugDpL4B0dE1Y7P15Zmac9bBP2bvdp-yOsww5A3pLaPyG-Wj8xtbipxQI2xCWwrXHAGFpL7yH8KIe6vo71Yu95j_axG-wmb3B5v_Ud8YN9y32ZLDMQrbIhK8nduXHV1nXWPwqyRtO8meqvejSh_Qgfk2BPxP5t0ZsZDQf_rzCIrwJw19j9FwPf2x3d-k2e_qw26-z1V-7_epzlD2lq9V-KJWexTEfx57l18dtmYAv9L66F9Zpg_0kZAvClh7e5wKLfloUxrYiRwi9csjl6SHbrz983D8OnWA6_eEgmBQJL5Z8KSaYhHM-DyljbDGpEpbTo8A4PiyL-SJih3CGc85wuTwu-WyOi4lMGGUxDcM5XTAeLaaciagIo9kcQ-QFn5OIYiNkPa3rUzPVppxIaztMQsY5DSe1OGBt-y8hxjyE8DTXBZaohuq-ig2Woq517uXxamISLw8OXWlJRGtpnb3GcNLVmPz2NISiM_7LZzx9_PQf6SrQJzS1aFsvMFhK69BAf-z0ZpPO1EnlXOv7bV-vm1K6qjtMc90QtukTHoagNfqL_-hhm37dlrDNuPRTwv4NAAD__5J5_4E">