Open
Description
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
...