Issue 123301
Summary Use not jointly dominated by defs during scheduling with overlapping register tuple defs
Labels llvm:codegen, llvm:regalloc
Assignees
Reporter arsenm
    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

...
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to