Skip to content

Use not jointly dominated by defs during scheduling with overlapping register tuple defs #123301

Open
@arsenm

Description

@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

...

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions