1# RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass si-insert-waitcnts  %s -o - | FileCheck %s
2
3# Ensure we insert waitcnts after any meta instructions at the start of
4# non-kernel functions. Without this, the inserted waitcnts can affect e.g. the
5# PC ranges covered by CFI and debug values.
6
7---
8# CHECK-LABEL: name: skip_implicit_def{{$}}
9# CHECK: IMPLICIT_DEF
10# CHECK: S_WAITCNT
11name: skip_implicit_def
12machineFunctionInfo:
13body: |
14  bb.0:
15    $sgpr0 = IMPLICIT_DEF
16...
17---
18# CHECK-LABEL: name: skip_kill{{$}}
19# CHECK: KILL
20# CHECK: S_WAITCNT
21name: skip_kill
22machineFunctionInfo:
23body: |
24  bb.0:
25    KILL $sgpr0
26...
27---
28# CHECK-LABEL: name: skip_cfi{{$}}
29# CHECK: CFI_INSTRUCTION
30# CHECK: S_WAITCNT
31name: skip_cfi
32machineFunctionInfo:
33body: |
34  bb.0:
35    CFI_INSTRUCTION undefined $sgpr0
36...
37---
38# CHECK-LABEL: name: skip_eh_label{{$}}
39# CHECK: EH_LABEL
40# CHECK: S_WAITCNT
41name: skip_eh_label
42machineFunctionInfo:
43body: |
44  bb.0:
45    EH_LABEL 0
46...
47---
48# CHECK-LABEL: name: skip_gc_label{{$}}
49# CHECK: GC_LABEL
50# CHECK: S_WAITCNT
51name: skip_gc_label
52machineFunctionInfo:
53body: |
54  bb.0:
55    GC_LABEL 0
56...
57---
58# CHECK-LABEL: name: skip_dbg_value{{$}}
59# CHECK: DBG_VALUE
60# CHECK: S_WAITCNT
61name: skip_dbg_value
62machineFunctionInfo:
63body: |
64  bb.0:
65    DBG_VALUE 0
66...
67---
68# CHECK-LABEL: name: skip_dbg_label{{$}}
69# CHECK: DBG_LABEL
70# CHECK: S_WAITCNT
71name: skip_dbg_label
72machineFunctionInfo:
73body: |
74  bb.0:
75    DBG_LABEL 0
76...
77---
78# CHECK-LABEL: name: skip_lifetime_start{{$}}
79# CHECK: LIFETIME_START
80# CHECK: S_WAITCNT
81name: skip_lifetime_start
82machineFunctionInfo:
83body: |
84  bb.0:
85    LIFETIME_START 0
86...
87---
88# CHECK-LABEL: name: skip_lifetime_end{{$}}
89# CHECK: LIFETIME_END
90# CHECK: S_WAITCNT
91name: skip_lifetime_end
92machineFunctionInfo:
93body: |
94  bb.0:
95    LIFETIME_END 0
96...
97