[PATCH] D121277: [MachineSink] Check block prologue does not clobber uses

Ruiling, Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 15 21:03:47 PDT 2022


ruiling added a comment.

Try this. I don't know what would be the most likely pattern in real cases, this is just to show that sinking $sgpr0_sgpr1 definition instruction into successor block would break the register dependency of type (a).

  ---
  name:            _amdgpu_ps_main
  alignment:       1
  tracksRegLiveness: true
  registers:       []
  liveins:
    - { reg: '$sgpr4', virtual-reg: '' }
  body:             |
    bb.0:
      successors: %bb.1(0x80000000)
      liveins: $sgpr4, $sgpr5
  
      renamable $sgpr9 = COPY $sgpr4
      renamable $vgpr5 = IMPLICIT_DEF
      renamable $sgpr0_sgpr1 = COPY $sgpr4_sgpr5
      S_BRANCH %bb.1
  
    bb.1:
      successors: %bb.2(0x40000000), %bb.8(0x40000000)
      liveins: $sgpr6, $sgpr9, $sgpr0_sgpr1
  
      $sgpr4_sgpr5 = S_AND_SAVEEXEC_B64 $sgpr0_sgpr1, implicit-def $exec, implicit-def $scc, implicit $exec
      renamable $sgpr14_sgpr15 = S_XOR_B64 $exec, killed renamable $sgpr4_sgpr5, implicit-def dead $scc
      S_CBRANCH_EXECZ %bb.8, implicit $exec
      S_BRANCH %bb.2
  
    bb.2:
      successors: %bb.8(0x40000000)
      liveins: $sgpr6
  
      $m0 = COPY killed renamable $sgpr6
      S_BRANCH %bb.8
  
    bb.8:
  
      S_ENDPGM 0
  
  ...


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D121277/new/

https://reviews.llvm.org/D121277



More information about the llvm-commits mailing list