view llvm/test/CodeGen/AMDGPU/waitcnt-preexisting-vscnt.mir @ 266:00f31e85ec16 default tip

Added tag current for changeset 31d058e83c98
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 14 Oct 2023 10:13:55 +0900
parents 1f2b6ac9f198
children
line wrap: on
line source

# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -march=amdgcn -mcpu=gfx1010 -verify-machineinstrs -run-pass si-insert-waitcnts -o - %s | FileCheck -check-prefix=GFX10 %s
# RUN: llc -march=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass si-insert-waitcnts -o - %s | FileCheck -check-prefix=GFX11 %s

---
name:            test_waitcnt_preexisting_vscnt_unmodified
body:             |
  bb.0:
    liveins: $vgpr0_vgpr1, $vgpr2

    ; GFX10-LABEL: name: test_waitcnt_preexisting_vscnt_unmodified
    ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
    ; GFX10-NEXT: {{  $}}
    ; GFX10-NEXT: S_WAITCNT 0
    ; GFX10-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
    ; GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0
    ; GFX10-NEXT: S_BARRIER
    ; GFX10-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX10-NEXT: S_WAITCNT 112
    ; GFX10-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX10-NEXT: S_ENDPGM 0
    ; GFX11-LABEL: name: test_waitcnt_preexisting_vscnt_unmodified
    ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2
    ; GFX11-NEXT: {{  $}}
    ; GFX11-NEXT: S_WAITCNT 0
    ; GFX11-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
    ; GFX11-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0
    ; GFX11-NEXT: S_BARRIER
    ; GFX11-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX11-NEXT: S_WAITCNT 7
    ; GFX11-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX11-NEXT: S_ENDPGM 0
    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
    S_WAITCNT_VSCNT undef $sgpr_null, 0
    S_BARRIER
    $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
    FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
    S_ENDPGM 0
...

---
name:            test_waitcnt_preexisting_vscnt_needs_vscnt
body:             |
  bb.0:
    liveins: $vgpr0_vgpr1, $vgpr2

    ; GFX10-LABEL: name: test_waitcnt_preexisting_vscnt_needs_vscnt
    ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
    ; GFX10-NEXT: {{  $}}
    ; GFX10-NEXT: S_WAITCNT 0
    ; GFX10-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
    ; GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 1
    ; GFX10-NEXT: S_BARRIER
    ; GFX10-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX10-NEXT: S_WAITCNT 112
    ; GFX10-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX10-NEXT: S_ENDPGM 0
    ; GFX11-LABEL: name: test_waitcnt_preexisting_vscnt_needs_vscnt
    ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2
    ; GFX11-NEXT: {{  $}}
    ; GFX11-NEXT: S_WAITCNT 0
    ; GFX11-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
    ; GFX11-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0
    ; GFX11-NEXT: S_BARRIER
    ; GFX11-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX11-NEXT: S_WAITCNT 7
    ; GFX11-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX11-NEXT: S_ENDPGM 0
    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
    S_WAITCNT_VSCNT undef $sgpr_null, 1
    S_BARRIER
    $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
    FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
    S_ENDPGM 0
...

---
name:            test_waitcnt_preexisting_vscnt_with_other_waitcnt
body:             |
  bb.0:
    liveins: $vgpr0_vgpr1, $vgpr2

    ; GFX10-LABEL: name: test_waitcnt_preexisting_vscnt_with_other_waitcnt
    ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
    ; GFX10-NEXT: {{  $}}
    ; GFX10-NEXT: S_WAITCNT 0
    ; GFX10-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
    ; GFX10-NEXT: S_WAITCNT 112
    ; GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0
    ; GFX10-NEXT: S_BARRIER
    ; GFX10-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX10-NEXT: S_WAITCNT 112
    ; GFX10-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX10-NEXT: S_ENDPGM 0
    ; GFX11-LABEL: name: test_waitcnt_preexisting_vscnt_with_other_waitcnt
    ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2
    ; GFX11-NEXT: {{  $}}
    ; GFX11-NEXT: S_WAITCNT 0
    ; GFX11-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
    ; GFX11-NEXT: S_WAITCNT 112
    ; GFX11-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0
    ; GFX11-NEXT: S_BARRIER
    ; GFX11-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX11-NEXT: S_WAITCNT 7
    ; GFX11-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX11-NEXT: S_ENDPGM 0
    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
    S_WAITCNT 112
    S_WAITCNT_VSCNT undef $sgpr_null, 0
    S_BARRIER
    $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
    FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
    S_ENDPGM 0
...

---
name:            test_waitcnt_preexisting_vscnt_combined
body:             |
  bb.0:
    liveins: $vgpr0_vgpr1, $vgpr2

    ; GFX10-LABEL: name: test_waitcnt_preexisting_vscnt_combined
    ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
    ; GFX10-NEXT: {{  $}}
    ; GFX10-NEXT: S_WAITCNT 0
    ; GFX10-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
    ; GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0
    ; GFX10-NEXT: S_BARRIER
    ; GFX10-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX10-NEXT: S_WAITCNT 112
    ; GFX10-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX10-NEXT: S_ENDPGM 0
    ; GFX11-LABEL: name: test_waitcnt_preexisting_vscnt_combined
    ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2
    ; GFX11-NEXT: {{  $}}
    ; GFX11-NEXT: S_WAITCNT 0
    ; GFX11-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
    ; GFX11-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0
    ; GFX11-NEXT: S_BARRIER
    ; GFX11-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX11-NEXT: S_WAITCNT 7
    ; GFX11-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX11-NEXT: S_ENDPGM 0
    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
    S_WAITCNT_VSCNT undef $sgpr_null, 0
    S_WAITCNT_VSCNT undef $sgpr_null, 1
    S_WAITCNT_VSCNT undef $sgpr_null, 2
    S_BARRIER
    $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
    FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
    S_ENDPGM 0
...

---
name:            test_waitcnt_preexisting_vscnt_combined_both_types
body:             |
  bb.0:
    liveins: $vgpr0_vgpr1, $vgpr2

    ; GFX10-LABEL: name: test_waitcnt_preexisting_vscnt_combined_both_types
    ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
    ; GFX10-NEXT: {{  $}}
    ; GFX10-NEXT: S_WAITCNT 0
    ; GFX10-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
    ; GFX10-NEXT: S_WAITCNT 0
    ; GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 1
    ; GFX10-NEXT: S_BARRIER
    ; GFX10-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX10-NEXT: S_WAITCNT 112
    ; GFX10-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX10-NEXT: S_ENDPGM 0
    ; GFX11-LABEL: name: test_waitcnt_preexisting_vscnt_combined_both_types
    ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2
    ; GFX11-NEXT: {{  $}}
    ; GFX11-NEXT: S_WAITCNT 0
    ; GFX11-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
    ; GFX11-NEXT: S_WAITCNT 0
    ; GFX11-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0
    ; GFX11-NEXT: S_BARRIER
    ; GFX11-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX11-NEXT: S_WAITCNT 7
    ; GFX11-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
    ; GFX11-NEXT: S_ENDPGM 0
    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
    S_WAITCNT 0
    S_WAITCNT_VSCNT undef $sgpr_null, 1
    S_WAITCNT 0
    S_WAITCNT_VSCNT undef $sgpr_null, 2
    S_WAITCNT 0
    S_BARRIER
    $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
    FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
    S_ENDPGM 0
...