1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -march=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefix=GCN %s
3
4---
5name:            partial_forwarding_1_hazard
6body:            |
7  bb.0:
8    ; GCN-LABEL: name: partial_forwarding_1_hazard
9    ; GCN: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
10    ; GCN-NEXT: $exec = S_MOV_B64 -1
11    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec
12    ; GCN-NEXT: S_WAITCNT_DEPCTR 4095
13    ; GCN-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
14    ; GCN-NEXT: S_ENDPGM 0
15    $vgpr0 = V_MOV_B32_e32 0, implicit $exec
16    $exec = S_MOV_B64 -1
17    $vgpr1 = V_MOV_B32_e32 0, implicit $exec
18    $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
19    S_ENDPGM 0
20...
21
22---
23name:            partial_forwarding_2_hazard
24body:            |
25  bb.0:
26    ; GCN-LABEL: name: partial_forwarding_2_hazard
27    ; GCN: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
28    ; GCN-NEXT: $sgpr0 = S_MOV_B32 0
29    ; GCN-NEXT: $sgpr1 = S_MOV_B32 0
30    ; GCN-NEXT: $sgpr2 = S_MOV_B32 0
31    ; GCN-NEXT: $exec = S_MOV_B64 -1
32    ; GCN-NEXT: $sgpr3 = S_MOV_B32 0
33    ; GCN-NEXT: $sgpr4 = S_MOV_B32 0
34    ; GCN-NEXT: $sgpr5 = S_MOV_B32 0
35    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec
36    ; GCN-NEXT: $sgpr6 = S_MOV_B32 0
37    ; GCN-NEXT: $sgpr7 = S_MOV_B32 0
38    ; GCN-NEXT: $sgpr8 = S_MOV_B32 0
39    ; GCN-NEXT: $sgpr9 = S_MOV_B32 0
40    ; GCN-NEXT: $sgpr10 = S_MOV_B32 0
41    ; GCN-NEXT: S_WAITCNT_DEPCTR 4095
42    ; GCN-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
43    ; GCN-NEXT: S_ENDPGM 0
44    $vgpr0 = V_MOV_B32_e32 0, implicit $exec
45    $sgpr0 = S_MOV_B32 0
46    $sgpr1 = S_MOV_B32 0
47    $sgpr2 = S_MOV_B32 0
48    $exec = S_MOV_B64 -1
49    $sgpr3 = S_MOV_B32 0
50    $sgpr4 = S_MOV_B32 0
51    $sgpr5 = S_MOV_B32 0
52    $vgpr1 = V_MOV_B32_e32 0, implicit $exec
53    $sgpr6 = S_MOV_B32 0
54    $sgpr7 = S_MOV_B32 0
55    $sgpr8 = S_MOV_B32 0
56    $sgpr9 = S_MOV_B32 0
57    $sgpr10 = S_MOV_B32 0
58    $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
59    S_ENDPGM 0
60...
61
62---
63name:            partial_forwarding_3_hazard
64body:            |
65  bb.0:
66    ; GCN-LABEL: name: partial_forwarding_3_hazard
67    ; GCN: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
68    ; GCN-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec
69    ; GCN-NEXT: $exec = S_MOV_B64 -1
70    ; GCN-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec
71    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec
72    ; GCN-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec
73    ; GCN-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec
74    ; GCN-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec
75    ; GCN-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec
76    ; GCN-NEXT: S_WAITCNT_DEPCTR 4095
77    ; GCN-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
78    ; GCN-NEXT: S_ENDPGM 0
79    $vgpr0 = V_MOV_B32_e32 0, implicit $exec
80    $vgpr10 = V_MOV_B32_e32 0, implicit $exec
81    $exec = S_MOV_B64 -1
82    $vgpr11 = V_MOV_B32_e32 0, implicit $exec
83    $vgpr1 = V_MOV_B32_e32 0, implicit $exec
84    $vgpr12 = V_MOV_B32_e32 0, implicit $exec
85    $vgpr13 = V_MOV_B32_e32 0, implicit $exec
86    $vgpr14 = V_MOV_B32_e32 0, implicit $exec
87    $vgpr15 = V_MOV_B32_e32 0, implicit $exec
88    $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
89    S_ENDPGM 0
90...
91
92---
93name:            partial_forwarding_3_no_hazard_1
94body:            |
95  bb.0:
96    ; GCN-LABEL: name: partial_forwarding_3_no_hazard_1
97    ; GCN: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
98    ; GCN-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec
99    ; GCN-NEXT: $vgpr20 = V_MOV_B32_e32 0, implicit $exec
100    ; GCN-NEXT: $exec = S_MOV_B64 -1
101    ; GCN-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec
102    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec
103    ; GCN-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec
104    ; GCN-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec
105    ; GCN-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec
106    ; GCN-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec
107    ; GCN-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
108    ; GCN-NEXT: S_ENDPGM 0
109    $vgpr0 = V_MOV_B32_e32 0, implicit $exec
110    $vgpr10 = V_MOV_B32_e32 0, implicit $exec
111    $vgpr20 = V_MOV_B32_e32 0, implicit $exec
112    $exec = S_MOV_B64 -1
113    $vgpr11 = V_MOV_B32_e32 0, implicit $exec
114    $vgpr1 = V_MOV_B32_e32 0, implicit $exec
115    $vgpr12 = V_MOV_B32_e32 0, implicit $exec
116    $vgpr13 = V_MOV_B32_e32 0, implicit $exec
117    $vgpr14 = V_MOV_B32_e32 0, implicit $exec
118    $vgpr15 = V_MOV_B32_e32 0, implicit $exec
119    $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
120    S_ENDPGM 0
121...
122
123---
124name:            partial_forwarding_3_no_hazard_2
125body:            |
126  bb.0:
127    ; GCN-LABEL: name: partial_forwarding_3_no_hazard_2
128    ; GCN: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
129    ; GCN-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec
130    ; GCN-NEXT: $exec = S_MOV_B64 -1
131    ; GCN-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec
132    ; GCN-NEXT: $vgpr20 = V_MOV_B32_e32 0, implicit $exec
133    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec
134    ; GCN-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec
135    ; GCN-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec
136    ; GCN-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec
137    ; GCN-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec
138    ; GCN-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
139    ; GCN-NEXT: S_ENDPGM 0
140    $vgpr0 = V_MOV_B32_e32 0, implicit $exec
141    $vgpr10 = V_MOV_B32_e32 0, implicit $exec
142    $exec = S_MOV_B64 -1
143    $vgpr11 = V_MOV_B32_e32 0, implicit $exec
144    $vgpr20 = V_MOV_B32_e32 0, implicit $exec
145    $vgpr1 = V_MOV_B32_e32 0, implicit $exec
146    $vgpr12 = V_MOV_B32_e32 0, implicit $exec
147    $vgpr13 = V_MOV_B32_e32 0, implicit $exec
148    $vgpr14 = V_MOV_B32_e32 0, implicit $exec
149    $vgpr15 = V_MOV_B32_e32 0, implicit $exec
150    $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
151    S_ENDPGM 0
152...
153
154---
155name:            partial_forwarding_3_no_hazard_3
156body:            |
157  bb.0:
158    ; GCN-LABEL: name: partial_forwarding_3_no_hazard_3
159    ; GCN: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
160    ; GCN-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec
161    ; GCN-NEXT: $exec = S_MOV_B64 -1
162    ; GCN-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec
163    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec
164    ; GCN-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec
165    ; GCN-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec
166    ; GCN-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec
167    ; GCN-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec
168    ; GCN-NEXT: $vgpr20 = V_MOV_B32_e32 0, implicit $exec
169    ; GCN-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
170    ; GCN-NEXT: S_ENDPGM 0
171    $vgpr0 = V_MOV_B32_e32 0, implicit $exec
172    $vgpr10 = V_MOV_B32_e32 0, implicit $exec
173    $exec = S_MOV_B64 -1
174    $vgpr11 = V_MOV_B32_e32 0, implicit $exec
175    $vgpr1 = V_MOV_B32_e32 0, implicit $exec
176    $vgpr12 = V_MOV_B32_e32 0, implicit $exec
177    $vgpr13 = V_MOV_B32_e32 0, implicit $exec
178    $vgpr14 = V_MOV_B32_e32 0, implicit $exec
179    $vgpr15 = V_MOV_B32_e32 0, implicit $exec
180    $vgpr20 = V_MOV_B32_e32 0, implicit $exec
181    $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
182    S_ENDPGM 0
183...
184
185---
186name:            partial_forwarding_4_hazard
187body:            |
188  bb.0:
189    ; GCN-LABEL: name: partial_forwarding_4_hazard
190    ; GCN: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
191    ; GCN-NEXT: $exec = S_MOV_B64 -1
192    ; GCN-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec
193    ; GCN-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec
194    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec
195    ; GCN-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec
196    ; GCN-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec
197    ; GCN-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec
198    ; GCN-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec
199    ; GCN-NEXT: S_WAITCNT_DEPCTR 4095
200    ; GCN-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
201    ; GCN-NEXT: S_ENDPGM 0
202    $vgpr0 = V_MOV_B32_e32 0, implicit $exec
203    $exec = S_MOV_B64 -1
204    $vgpr10 = V_MOV_B32_e32 0, implicit $exec
205    $vgpr11 = V_MOV_B32_e32 0, implicit $exec
206    $vgpr1 = V_MOV_B32_e32 0, implicit $exec
207    $vgpr12 = V_MOV_B32_e32 0, implicit $exec
208    $vgpr13 = V_MOV_B32_e32 0, implicit $exec
209    $vgpr14 = V_MOV_B32_e32 0, implicit $exec
210    $vgpr15 = V_MOV_B32_e32 0, implicit $exec
211    $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
212    S_ENDPGM 0
213...
214
215---
216name:            partial_forwarding_4_no_hazard
217body:            |
218  bb.0:
219    ; GCN-LABEL: name: partial_forwarding_4_no_hazard
220    ; GCN: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
221    ; GCN-NEXT: $exec = S_MOV_B64 -1
222    ; GCN-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec
223    ; GCN-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec
224    ; GCN-NEXT: $vgpr21 = V_MOV_B32_e32 0, implicit $exec
225    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec
226    ; GCN-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec
227    ; GCN-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec
228    ; GCN-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec
229    ; GCN-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec
230    ; GCN-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
231    ; GCN-NEXT: S_ENDPGM 0
232    $vgpr0 = V_MOV_B32_e32 0, implicit $exec
233    $exec = S_MOV_B64 -1
234    $vgpr10 = V_MOV_B32_e32 0, implicit $exec
235    $vgpr11 = V_MOV_B32_e32 0, implicit $exec
236    $vgpr21 = V_MOV_B32_e32 0, implicit $exec
237    $vgpr1 = V_MOV_B32_e32 0, implicit $exec
238    $vgpr12 = V_MOV_B32_e32 0, implicit $exec
239    $vgpr13 = V_MOV_B32_e32 0, implicit $exec
240    $vgpr14 = V_MOV_B32_e32 0, implicit $exec
241    $vgpr15 = V_MOV_B32_e32 0, implicit $exec
242    $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
243    S_ENDPGM 0
244...
245
246---
247name:            partial_forwarding_5_hazard
248body:            |
249  bb.0:
250    ; GCN-LABEL: name: partial_forwarding_5_hazard
251    ; GCN: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
252    ; GCN-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec
253    ; GCN-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec
254    ; GCN-NEXT: $exec = S_MOV_B64 -1
255    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec
256    ; GCN-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec
257    ; GCN-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec
258    ; GCN-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec
259    ; GCN-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec
260    ; GCN-NEXT: S_WAITCNT_DEPCTR 4095
261    ; GCN-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
262    ; GCN-NEXT: S_ENDPGM 0
263    $vgpr0 = V_MOV_B32_e32 0, implicit $exec
264    $vgpr10 = V_MOV_B32_e32 0, implicit $exec
265    $vgpr11 = V_MOV_B32_e32 0, implicit $exec
266    $exec = S_MOV_B64 -1
267    $vgpr1 = V_MOV_B32_e32 0, implicit $exec
268    $vgpr12 = V_MOV_B32_e32 0, implicit $exec
269    $vgpr13 = V_MOV_B32_e32 0, implicit $exec
270    $vgpr14 = V_MOV_B32_e32 0, implicit $exec
271    $vgpr15 = V_MOV_B32_e32 0, implicit $exec
272    $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
273    S_ENDPGM 0
274...
275
276---
277name:            partial_forwarding_5_no_hazard
278body:            |
279  bb.0:
280    ; GCN-LABEL: name: partial_forwarding_5_no_hazard
281    ; GCN: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
282    ; GCN-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec
283    ; GCN-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec
284    ; GCN-NEXT: $vgpr21 = V_MOV_B32_e32 0, implicit $exec
285    ; GCN-NEXT: $exec = S_MOV_B64 -1
286    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec
287    ; GCN-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec
288    ; GCN-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec
289    ; GCN-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec
290    ; GCN-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec
291    ; GCN-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
292    ; GCN-NEXT: S_ENDPGM 0
293    $vgpr0 = V_MOV_B32_e32 0, implicit $exec
294    $vgpr10 = V_MOV_B32_e32 0, implicit $exec
295    $vgpr11 = V_MOV_B32_e32 0, implicit $exec
296    $vgpr21 = V_MOV_B32_e32 0, implicit $exec
297    $exec = S_MOV_B64 -1
298    $vgpr1 = V_MOV_B32_e32 0, implicit $exec
299    $vgpr12 = V_MOV_B32_e32 0, implicit $exec
300    $vgpr13 = V_MOV_B32_e32 0, implicit $exec
301    $vgpr14 = V_MOV_B32_e32 0, implicit $exec
302    $vgpr15 = V_MOV_B32_e32 0, implicit $exec
303    $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
304    S_ENDPGM 0
305...
306
307---
308name:            partial_forwarding_branching_1a
309body:            |
310  ; GCN-LABEL: name: partial_forwarding_branching_1a
311  ; GCN: bb.0:
312  ; GCN-NEXT:   successors: %bb.2(0x80000000)
313  ; GCN-NEXT: {{  $}}
314  ; GCN-NEXT:   $vgpr0 = V_MOV_B32_e32 0, implicit $exec
315  ; GCN-NEXT:   $exec = S_MOV_B64 -1
316  ; GCN-NEXT:   S_BRANCH %bb.2
317  ; GCN-NEXT: {{  $}}
318  ; GCN-NEXT: bb.1:
319  ; GCN-NEXT:   successors: %bb.2(0x80000000)
320  ; GCN-NEXT: {{  $}}
321  ; GCN-NEXT:   $vgpr0 = V_MOV_B32_e32 0, implicit $exec
322  ; GCN-NEXT:   $vgpr30 = V_MOV_B32_e32 0, implicit $exec
323  ; GCN-NEXT:   $vgpr31 = V_MOV_B32_e32 0, implicit $exec
324  ; GCN-NEXT:   S_BRANCH %bb.2
325  ; GCN-NEXT: {{  $}}
326  ; GCN-NEXT: bb.2:
327  ; GCN-NEXT:   $vgpr10 = V_MOV_B32_e32 0, implicit $exec
328  ; GCN-NEXT:   $vgpr11 = V_MOV_B32_e32 0, implicit $exec
329  ; GCN-NEXT:   $vgpr1 = V_MOV_B32_e32 0, implicit $exec
330  ; GCN-NEXT:   $vgpr12 = V_MOV_B32_e32 0, implicit $exec
331  ; GCN-NEXT:   $vgpr13 = V_MOV_B32_e32 0, implicit $exec
332  ; GCN-NEXT:   $vgpr14 = V_MOV_B32_e32 0, implicit $exec
333  ; GCN-NEXT:   $vgpr15 = V_MOV_B32_e32 0, implicit $exec
334  ; GCN-NEXT:   S_WAITCNT_DEPCTR 4095
335  ; GCN-NEXT:   $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
336  ; GCN-NEXT:   S_ENDPGM 0
337  bb.0:
338    $vgpr0 = V_MOV_B32_e32 0, implicit $exec
339    $exec = S_MOV_B64 -1
340    S_BRANCH %bb.2
341  bb.1:
342    $vgpr0 = V_MOV_B32_e32 0, implicit $exec
343    $vgpr30 = V_MOV_B32_e32 0, implicit $exec
344    $vgpr31 = V_MOV_B32_e32 0, implicit $exec
345    S_BRANCH %bb.2
346  bb.2:
347    $vgpr10 = V_MOV_B32_e32 0, implicit $exec
348    $vgpr11 = V_MOV_B32_e32 0, implicit $exec
349    $vgpr1 = V_MOV_B32_e32 0, implicit $exec
350    $vgpr12 = V_MOV_B32_e32 0, implicit $exec
351    $vgpr13 = V_MOV_B32_e32 0, implicit $exec
352    $vgpr14 = V_MOV_B32_e32 0, implicit $exec
353    $vgpr15 = V_MOV_B32_e32 0, implicit $exec
354    $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
355    S_ENDPGM 0
356...
357
358---
359name:            partial_forwarding_branching_1b
360body:            |
361  ; GCN-LABEL: name: partial_forwarding_branching_1b
362  ; GCN: bb.0:
363  ; GCN-NEXT:   successors: %bb.2(0x80000000)
364  ; GCN-NEXT: {{  $}}
365  ; GCN-NEXT:   $vgpr0 = V_MOV_B32_e32 0, implicit $exec
366  ; GCN-NEXT:   $vgpr30 = V_MOV_B32_e32 0, implicit $exec
367  ; GCN-NEXT:   $vgpr31 = V_MOV_B32_e32 0, implicit $exec
368  ; GCN-NEXT:   S_BRANCH %bb.2
369  ; GCN-NEXT: {{  $}}
370  ; GCN-NEXT: bb.1:
371  ; GCN-NEXT:   successors: %bb.2(0x80000000)
372  ; GCN-NEXT: {{  $}}
373  ; GCN-NEXT:   $vgpr0 = V_MOV_B32_e32 0, implicit $exec
374  ; GCN-NEXT:   $exec = S_MOV_B64 -1
375  ; GCN-NEXT:   S_BRANCH %bb.2
376  ; GCN-NEXT: {{  $}}
377  ; GCN-NEXT: bb.2:
378  ; GCN-NEXT:   $vgpr10 = V_MOV_B32_e32 0, implicit $exec
379  ; GCN-NEXT:   $vgpr11 = V_MOV_B32_e32 0, implicit $exec
380  ; GCN-NEXT:   $vgpr1 = V_MOV_B32_e32 0, implicit $exec
381  ; GCN-NEXT:   $vgpr12 = V_MOV_B32_e32 0, implicit $exec
382  ; GCN-NEXT:   $vgpr13 = V_MOV_B32_e32 0, implicit $exec
383  ; GCN-NEXT:   $vgpr14 = V_MOV_B32_e32 0, implicit $exec
384  ; GCN-NEXT:   $vgpr15 = V_MOV_B32_e32 0, implicit $exec
385  ; GCN-NEXT:   S_WAITCNT_DEPCTR 4095
386  ; GCN-NEXT:   $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
387  ; GCN-NEXT:   S_ENDPGM 0
388  bb.0:
389    $vgpr0 = V_MOV_B32_e32 0, implicit $exec
390    $vgpr30 = V_MOV_B32_e32 0, implicit $exec
391    $vgpr31 = V_MOV_B32_e32 0, implicit $exec
392    S_BRANCH %bb.2
393  bb.1:
394    $vgpr0 = V_MOV_B32_e32 0, implicit $exec
395    $exec = S_MOV_B64 -1
396    S_BRANCH %bb.2
397  bb.2:
398    $vgpr10 = V_MOV_B32_e32 0, implicit $exec
399    $vgpr11 = V_MOV_B32_e32 0, implicit $exec
400    $vgpr1 = V_MOV_B32_e32 0, implicit $exec
401    $vgpr12 = V_MOV_B32_e32 0, implicit $exec
402    $vgpr13 = V_MOV_B32_e32 0, implicit $exec
403    $vgpr14 = V_MOV_B32_e32 0, implicit $exec
404    $vgpr15 = V_MOV_B32_e32 0, implicit $exec
405    $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
406    S_ENDPGM 0
407...
408