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