[rtsan] Add fork/execve interceptors (#117198)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / trans-forwarding-hazards.mir
blob2843d83d3a2f256dc692ad4d3509aff73b944095
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
5 ---
6 name:            trans_use_1_hazard
7 body:            |
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 ...
27 ---
28 name:            trans_use_1_no_hazard_1
29 body:            |
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 ...
44 ---
45 name:            trans_use_2_hazard
46 body:            |
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 ...
99 ---
100 name:            trans_use_3_hazard
101 body:            |
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
134 name:            trans_use_3_no_hazard_1
135 body:            |
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
159 name:            trans_use_3_no_hazard_2
160 body:            |
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
186 name:            trans_use_3_no_hazard_3
187 body:            |
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
203 name:            trans_use_4_one_depctr_1
204 body:            |
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
228 name:            trans_use_4_one_depctr_2
229 body:            |
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
253 name:            trans_use_4
254 body:            |
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
278 name:            trans_use_branching_1a
279 body:            |
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
341 name:            trans_use_branching_1b
342 body:            |
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
398 name:            trans_use_branching_1c_no_hazard_1
399 body:            |
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