[llvm-objdump] - Remove one overload of reportError. NFCI.
[llvm-complete.git] / test / CodeGen / AMDGPU / vmem-vcc-hazard.mir
blob644651ded335c1c5d61078212048fc13200b3766
1 # RUN: llc -march=amdgcn -mcpu=fiji -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefix=GCN %s
3 # GCN-LABEL: name: vmem_vcc_fallthrough
4 # GCN:      bb.1:
5 # GCN-NEXT: S_NOP
6 # GCN-NEXT: S_NOP
7 # GCN-NEXT: S_NOP
8 # GCN-NEXT: S_NOP
9 # GCN-NEXT: S_NOP
10 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
11 ---
12 name:            vmem_vcc_fallthrough
13 body:             |
14   bb.0:
15     successors: %bb.1
17     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
18     $vgpr0 = IMPLICIT_DEF
19     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
21   bb.1:
22     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, 0, implicit $exec
23 ...
24 # GCN-LABEL: name: vmem_vcc_branch_to_next
25 # GCN:      bb.1:
26 # GCN-NEXT: S_NOP
27 # GCN-NEXT: S_NOP
28 # GCN-NEXT: S_NOP
29 # GCN-NEXT: S_NOP
30 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
31 ---
32 name:            vmem_vcc_branch_to_next
33 body:             |
34   bb.0:
35     successors: %bb.1
37     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
38     $vgpr0 = IMPLICIT_DEF
39     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
40     S_BRANCH %bb.1
42   bb.1:
43     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, 0, implicit $exec
44 ...
45 # GCN-LABEL: name: vmem_vcc_fallthrough_no_hazard_too_far
46 # GCN:      bb.1:
47 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
48 ---
49 name:            vmem_vcc_fallthrough_no_hazard_too_far
50 body:             |
51   bb.0:
52     successors: %bb.1
54     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
55     $vgpr0 = IMPLICIT_DEF
56     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
57     $sgpr0 = S_MOV_B32 0
58     $sgpr0 = S_MOV_B32 0
59     $sgpr0 = S_MOV_B32 0
60     $sgpr0 = S_MOV_B32 0
61     $sgpr0 = S_MOV_B32 0
63   bb.1:
64     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, 0, implicit $exec
65 ...
66 # GCN-LABEL: name: vmem_vcc_fallthrough_no_hazard_nops
67 # GCN:      bb.1:
68 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
69 ---
70 name:            vmem_vcc_fallthrough_no_hazard_nops
71 body:             |
72   bb.0:
73     successors: %bb.1
75     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
76     $vgpr0 = IMPLICIT_DEF
77     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
78     S_NOP 4
80   bb.1:
81     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, 0, implicit $exec
82 ...
83 # GCN-LABEL: name: vmem_vcc_branch_around
84 # GCN:      bb.2:
85 # GCN-NEXT: S_NOP
86 # GCN-NEXT: S_NOP
87 # GCN-NEXT: S_NOP
88 # GCN-NEXT: S_NOP
89 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
90 ---
91 name:            vmem_vcc_branch_around
92 body:             |
93   bb.0:
94     successors: %bb.2
96     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
97     $vgpr0 = IMPLICIT_DEF
98     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
99     S_BRANCH %bb.2
101   bb.1:
102     successors: %bb.2
104     S_NOP 0
105     S_NOP 0
106     S_NOP 0
107     S_NOP 0
109   bb.2:
110     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, 0, implicit $exec
112 # GCN-LABEL: name: vmem_vcc_branch_backedge
113 # GCN:      S_NOP
114 # GCN-NEXT: S_NOP
115 # GCN-NEXT: S_NOP
116 # GCN-NEXT: S_NOP
117 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
119 name:            vmem_vcc_branch_backedge
120 body:             |
121   bb.0:
122     successors: %bb.1
124     $vgpr0 = IMPLICIT_DEF
125     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
126     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, 0, implicit $exec
128   bb.1:
129     $vgpr0 = IMPLICIT_DEF
130     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
131     S_BRANCH %bb.0
133 # GCN-LABEL: name: vmem_vcc_min_of_two
134 # GCN:      bb.2:
135 # GCN-NEXT: S_NOP
136 # GCN-NEXT: S_NOP
137 # GCN-NEXT: S_NOP
138 # GCN-NEXT: S_NOP
139 # GCN-NEXT: S_NOP
140 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
142 name:            vmem_vcc_min_of_two
143 body:             |
144   bb.0:
145     successors: %bb.2
147     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
148     $vgpr0 = IMPLICIT_DEF
149     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
150     S_NOP 0
151     S_BRANCH %bb.2
153   bb.1:
154     successors: %bb.2
156     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
158   bb.2:
159     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, 0, implicit $exec
161 # GCN-LABEL: name: vmem_vcc_self_loop
162 # GCN:      S_NOP
163 # GCN-NEXT: S_NOP
164 # GCN-NEXT: S_NOP
165 # GCN-NEXT: S_NOP
166 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
168 name:            vmem_vcc_self_loop
169 body:             |
170   bb.0:
171     successors: %bb.0
173     $vgpr0 = IMPLICIT_DEF
174     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
175     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, 0, implicit $exec
176     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
177     S_BRANCH %bb.0
179 # GCN-LABEL: name: vmem_vcc_min_of_two_self_loop1
180 # GCN:      bb.1:
181 # GCN:      $sgpr0 = S_MOV_B32 0
182 # GCN-NEXT: S_NOP
183 # GCN-NEXT: S_NOP
184 # GCN-NEXT: S_NOP
185 # GCN-NEXT: S_NOP
186 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
188 name:            vmem_vcc_min_of_two_self_loop1
189 body:             |
190   bb.0:
191     successors: %bb.1
193     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
194     $vgpr0 = IMPLICIT_DEF
195     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
197   bb.1:
198     successors: %bb.1
200     $sgpr0 = S_MOV_B32 0
201     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, 0, implicit $exec
202     $vgpr1 = V_ADDC_U32_e32 $vgpr1, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec
203     S_BRANCH %bb.1
205 # GCN-LABEL: name: vmem_vcc_min_of_two_self_loop2
206 # GCN:      bb.1:
207 # GCN:      $sgpr0 = S_MOV_B32 0
208 # GCN-NEXT: S_NOP
209 # GCN-NEXT: S_NOP
210 # GCN-NEXT: S_NOP
211 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
213 name:            vmem_vcc_min_of_two_self_loop2
214 body:             |
215   bb.0:
216     successors: %bb.1
218     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
219     $vgpr0 = IMPLICIT_DEF
220     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
221     S_NOP 0
223   bb.1:
224     successors: %bb.1
226     $sgpr0 = S_MOV_B32 0
227     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, 0, implicit $exec
228     $vgpr1 = V_ADDC_U32_e32 $vgpr1, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec
229     S_BRANCH %bb.1