Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / partial-forwarding-hazards.mir
blob3d269902f3e64213e61ecf575f6456e1fcb315d9
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
4 ---
5 name:            partial_forwarding_1_hazard
6 body:            |
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 ...
22 ---
23 name:            partial_forwarding_2_hazard
24 body:            |
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 ...
62 ---
63 name:            partial_forwarding_3_hazard
64 body:            |
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 ...
92 ---
93 name:            partial_forwarding_3_no_hazard_1
94 body:            |
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
124 name:            partial_forwarding_3_no_hazard_2
125 body:            |
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
155 name:            partial_forwarding_3_no_hazard_3
156 body:            |
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
186 name:            partial_forwarding_4_hazard
187 body:            |
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
216 name:            partial_forwarding_4_no_hazard
217 body:            |
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
247 name:            partial_forwarding_5_hazard
248 body:            |
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
277 name:            partial_forwarding_5_no_hazard
278 body:            |
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
308 name:            partial_forwarding_branching_1a
309 body:            |
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
359 name:            partial_forwarding_branching_1b
360 body:            |
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