Warn when unique objects might be duplicated in shared libraries (#117622)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / valu-read-sgpr-hazard-attrs.mir
blobfe3cb30793390b92f73197154c72d4f4646fbf32
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -run-pass post-RA-hazard-rec,amdgpu-wait-sgpr-hazards -o - %s | FileCheck -check-prefix=GCN %s
4 --- |
5   define amdgpu_gs void @hazard_disable() #0 { ret void }
6   define amdgpu_gs void @hazard_enable() #1 { ret void }
7   define amdgpu_cs void @hazard_calls() #2 { ret void }
8   define void @hazard_callee1() #2 { ret void }
9   define void @hazard_callee2() #2 { ret void }
10   define amdgpu_cs void @hazard_cull_vmem() #3 { ret void }
11   define amdgpu_cs void @hazard_cull_vmem2() #4 { ret void }
12   define amdgpu_cs void @hazard_cull_sample() #3 { ret void }
13   define amdgpu_cs void @hazard_cull_bvh() #3 { ret void }
14   define amdgpu_cs void @hazard_nocull_scratch() #3 { ret void }
15   define amdgpu_cs void @hazard_cull_global() #3 { ret void }
16   define amdgpu_cs void @hazard_nocull_flat() #3 { ret void }
18   attributes #0 = { "amdgpu-sgpr-hazard-wait"="0" }
19   attributes #1 = { "amdgpu-sgpr-hazard-wait"="1" }
20   attributes #2 = { "amdgpu-sgpr-hazard-boundary-cull" }
21   attributes #3 = { "amdgpu-sgpr-hazard-mem-wait-cull" "amdgpu-sgpr-hazard-mem-wait-cull-threshold"="1" }
22   attributes #4 = { "amdgpu-sgpr-hazard-mem-wait-cull" "amdgpu-sgpr-hazard-mem-wait-cull-threshold"="2" }
23 ...
25 ---
26 name:            hazard_disable
27 body:            |
28   bb.0:
29     ; GCN-LABEL: name: hazard_disable
30     ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0, implicit $exec
31     ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
32     ; GCN-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
33     ; GCN-NEXT: S_ENDPGM 0
34     $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0, implicit $exec
35     $sgpr0_sgpr1 = S_GETPC_B64
36     $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
37     S_ENDPGM 0
38 ...
40 ---
41 name:            hazard_enable
42 body:            |
43   bb.0:
44     ; GCN-LABEL: name: hazard_enable
45     ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0, implicit $exec
46     ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
47     ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
48     ; GCN-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
49     ; GCN-NEXT: S_ENDPGM 0
50     $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0, implicit $exec
51     $sgpr0_sgpr1 = S_GETPC_B64
52     $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
53     S_ENDPGM 0
54 ...
56 ---
57 name:            hazard_calls
58 frameInfo:
59   hasCalls: true
60 body:            |
61   ; GCN-LABEL: name: hazard_calls
62   ; GCN: bb.0:
63   ; GCN-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
64   ; GCN-NEXT: {{  $}}
65   ; GCN-NEXT:   $vgpr0 = V_WRITELANE_B32 0, $sgpr4, $vgpr0
66   ; GCN-NEXT:   $vgpr0 = V_WRITELANE_B32 1, $sgpr8, $vgpr0
67   ; GCN-NEXT:   $vgpr0 = V_WRITELANE_B32 2, $sgpr16, $vgpr0
68   ; GCN-NEXT:   $vgpr0 = V_WRITELANE_B32 3, $sgpr18, $vgpr0
69   ; GCN-NEXT:   $vgpr0 = V_WRITELANE_B32 4, $sgpr20, $vgpr0
70   ; GCN-NEXT:   $vgpr0 = V_WRITELANE_B32 5, $sgpr22, $vgpr0
71   ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.2, implicit $scc
72   ; GCN-NEXT:   S_BRANCH %bb.1
73   ; GCN-NEXT: {{  $}}
74   ; GCN-NEXT: bb.1:
75   ; GCN-NEXT:   successors: %bb.3(0x40000000), %bb.4(0x40000000)
76   ; GCN-NEXT: {{  $}}
77   ; GCN-NEXT:   S_CBRANCH_SCC0 %bb.3, implicit $scc
78   ; GCN-NEXT:   S_BRANCH %bb.4
79   ; GCN-NEXT: {{  $}}
80   ; GCN-NEXT: bb.2:
81   ; GCN-NEXT:   $sgpr16 = S_MOV_B32 0
82   ; GCN-NEXT:   DS_NOP implicit $m0, implicit $exec
83   ; GCN-NEXT:   DS_NOP implicit $m0, implicit $exec
84   ; GCN-NEXT:   DS_NOP implicit $m0, implicit $exec
85   ; GCN-NEXT:   DS_NOP implicit $m0, implicit $exec
86   ; GCN-NEXT:   S_WAITCNT_DEPCTR 65534
87   ; GCN-NEXT:   S_SETPC_B64 $sgpr0_sgpr1
88   ; GCN-NEXT: {{  $}}
89   ; GCN-NEXT: bb.3:
90   ; GCN-NEXT:   $sgpr18 = S_MOV_B32 0
91   ; GCN-NEXT:   DS_NOP implicit $m0, implicit $exec
92   ; GCN-NEXT:   DS_NOP implicit $m0, implicit $exec
93   ; GCN-NEXT:   DS_NOP implicit $m0, implicit $exec
94   ; GCN-NEXT:   DS_NOP implicit $m0, implicit $exec
95   ; GCN-NEXT:   S_WAITCNT_DEPCTR 65534
96   ; GCN-NEXT:   S_SETPC_B64_return $sgpr0_sgpr1
97   ; GCN-NEXT: {{  $}}
98   ; GCN-NEXT: bb.4:
99   ; GCN-NEXT:   successors: %bb.5(0x80000000)
100   ; GCN-NEXT: {{  $}}
101   ; GCN-NEXT:   $vcc_lo = S_MOV_B32 0
102   ; GCN-NEXT:   $sgpr20 = S_MOV_B32 0
103   ; GCN-NEXT:   DS_NOP implicit $m0, implicit $exec
104   ; GCN-NEXT:   DS_NOP implicit $m0, implicit $exec
105   ; GCN-NEXT:   DS_NOP implicit $m0, implicit $exec
106   ; GCN-NEXT:   DS_NOP implicit $m0, implicit $exec
107   ; GCN-NEXT:   S_WAITCNT_DEPCTR 65534
108   ; GCN-NEXT:   $sgpr4_sgpr5 = S_SWAPPC_B64 $sgpr2_sgpr3
109   ; GCN-NEXT:   $sgpr4 = S_ADD_U32 $sgpr4, 0, implicit-def $scc
110   ; GCN-NEXT: {{  $}}
111   ; GCN-NEXT: bb.5:
112   ; GCN-NEXT:   successors: %bb.6(0x80000000)
113   ; GCN-NEXT: {{  $}}
114   ; GCN-NEXT:   $sgpr8_sgpr9 = S_CALL_B64 0
115   ; GCN-NEXT: {{  $}}
116   ; GCN-NEXT: bb.6:
117   ; GCN-NEXT:   $sgpr22 = S_MOV_B32 $sgpr8
118   ; GCN-NEXT:   S_ENDPGM 0
119   bb.0:
120     $vgpr0 = V_WRITELANE_B32 0, $sgpr4, $vgpr0
121     $vgpr0 = V_WRITELANE_B32 1, $sgpr8, $vgpr0
122     $vgpr0 = V_WRITELANE_B32 2, $sgpr16, $vgpr0
123     $vgpr0 = V_WRITELANE_B32 3, $sgpr18, $vgpr0
124     $vgpr0 = V_WRITELANE_B32 4, $sgpr20, $vgpr0
125     $vgpr0 = V_WRITELANE_B32 5, $sgpr22, $vgpr0
126     S_CBRANCH_SCC0 %bb.2, implicit $scc
127     S_BRANCH %bb.1
129   bb.1:
130     S_CBRANCH_SCC0 %bb.3, implicit $scc
131     S_BRANCH %bb.4
133   bb.2:
134     $sgpr16 = S_MOV_B32 0
135     S_SETPC_B64 $sgpr0_sgpr1
137   bb.3:
138     $sgpr18 = S_MOV_B32 0
139     S_SETPC_B64_return $sgpr0_sgpr1
141   bb.4:
142     $vcc_lo = S_MOV_B32 0
143     $sgpr20 = S_MOV_B32 0
144     $sgpr4_sgpr5 = S_SWAPPC_B64 $sgpr2_sgpr3
145     $sgpr4 = S_ADD_U32 $sgpr4, 0, implicit-def $scc
147   bb.5:
148     $sgpr8_sgpr9 = S_CALL_B64 0
150   bb.6:
151     $sgpr22 = S_MOV_B32 $sgpr8
152     S_ENDPGM 0
156 name:            hazard_callee1
157 body:            |
158   bb.0:
159     ; GCN-LABEL: name: hazard_callee1
160     ; GCN: $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc
161     ; GCN-NEXT: $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc
162     ; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr31
163     $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc
164     $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc
165     S_SETPC_B64_return $sgpr30_sgpr31
169 name:            hazard_callee2
170 body:            |
171   bb.0:
172     ; GCN-LABEL: name: hazard_callee2
173     ; GCN: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec
174     ; GCN-NEXT: $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc
175     ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
176     ; GCN-NEXT: $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc
177     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
178     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
179     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
180     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
181     ; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr31
182     $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec
183     $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc
184     $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc
185     S_SETPC_B64_return $sgpr30_sgpr31
189 name:            hazard_cull_vmem
190 body:            |
191   bb.0:
192     ; GCN-LABEL: name: hazard_cull_vmem
193     ; GCN: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec
194     ; GCN-NEXT: $vgpr3 = BUFFER_LOAD_DWORD_OFFSET $sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8, 0, 0, 0, implicit $exec
195     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
196     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
197     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
198     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
199     ; GCN-NEXT: S_WAIT_LOADCNT 0
200     ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
201     ; GCN-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
202     ; GCN-NEXT: S_ENDPGM 0
203     $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec
204     $vgpr3 = BUFFER_LOAD_DWORD_OFFSET $sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8, 0, 0, 0, implicit $exec
205     S_WAIT_LOADCNT 0
206     $sgpr0_sgpr1 = S_GETPC_B64
207     $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
208     S_ENDPGM 0
212 name:            hazard_cull_vmem2
213 body:            |
214   bb.0:
215     ; GCN-LABEL: name: hazard_cull_vmem2
216     ; GCN: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec
217     ; GCN-NEXT: $vgpr3 = BUFFER_LOAD_DWORD_OFFSET $sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8, 0, 0, 0, implicit $exec
218     ; GCN-NEXT: S_WAIT_LOADCNT 0
219     ; GCN-NEXT: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr2, 0, implicit $exec
220     ; GCN-NEXT: $vgpr4 = BUFFER_LOAD_DWORD_OFFSET $sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8, 0, 0, 0, implicit $exec
221     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
222     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
223     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
224     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
225     ; GCN-NEXT: S_WAIT_LOADCNT 0
226     ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
227     ; GCN-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
228     ; GCN-NEXT: S_ENDPGM 0
229     $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec
230     $vgpr3 = BUFFER_LOAD_DWORD_OFFSET $sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8, 0, 0, 0, implicit $exec
231     S_WAIT_LOADCNT 0
232     $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr2, 0, implicit $exec
233     $vgpr4 = BUFFER_LOAD_DWORD_OFFSET $sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8, 0, 0, 0, implicit $exec
234     S_WAIT_LOADCNT 0
235     $sgpr0_sgpr1 = S_GETPC_B64
236     $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
237     S_ENDPGM 0
241 name:            hazard_cull_sample
242 body:            |
243   bb.0:
244     ; GCN-LABEL: name: hazard_cull_sample
245     ; GCN: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec
246     ; GCN-NEXT: $vgpr10 = IMAGE_SAMPLE_LZ_V1_V2_gfx12 $vgpr3, $vgpr4, $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (load (s128))
247     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
248     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
249     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
250     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
251     ; GCN-NEXT: S_WAIT_SAMPLECNT 0
252     ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
253     ; GCN-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
254     ; GCN-NEXT: S_ENDPGM 0
255     $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec
256     $vgpr10 = IMAGE_SAMPLE_LZ_V1_V2_gfx12 $vgpr3, $vgpr4, $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (load (s128))
257     S_WAIT_SAMPLECNT 0
258     $sgpr0_sgpr1 = S_GETPC_B64
259     $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
260     S_ENDPGM 0
264 name:            hazard_cull_bvh
265 body:            |
266   bb.0:
267     ; GCN-LABEL: name: hazard_cull_bvh
268     ; GCN: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec
269     ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = IMAGE_BVH_INTERSECT_RAY_sa_gfx11 $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, implicit $exec :: (dereferenceable load (s128), addrspace 7)
270     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
271     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
272     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
273     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
274     ; GCN-NEXT: S_WAIT_BVHCNT 0
275     ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
276     ; GCN-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
277     ; GCN-NEXT: S_ENDPGM 0
278     $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec
279     $vgpr0_vgpr1_vgpr2_vgpr3 = IMAGE_BVH_INTERSECT_RAY_sa_gfx11 $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, implicit $exec :: (dereferenceable load (s128), addrspace 7)
280     S_WAIT_BVHCNT 0
281     $sgpr0_sgpr1 = S_GETPC_B64
282     $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
283     S_ENDPGM 0
287 name:            hazard_nocull_scratch
288 body:            |
289   bb.0:
290     ; GCN-LABEL: name: hazard_nocull_scratch
291     ; GCN: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec
292     ; GCN-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
293     ; GCN-NEXT: S_WAIT_LOADCNT 0
294     ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
295     ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
296     ; GCN-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
297     ; GCN-NEXT: S_ENDPGM 0
298     $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec
299     $vgpr0 = SCRATCH_LOAD_DWORD $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
300     S_WAIT_LOADCNT 0
301     $sgpr0_sgpr1 = S_GETPC_B64
302     $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
303     S_ENDPGM 0
307 name:            hazard_cull_global
308 body:            |
309   bb.0:
310     ; GCN-LABEL: name: hazard_cull_global
311     ; GCN: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec
312     ; GCN-NEXT: $vgpr0 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec
313     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
314     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
315     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
316     ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec
317     ; GCN-NEXT: S_WAIT_LOADCNT 0
318     ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
319     ; GCN-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
320     ; GCN-NEXT: S_ENDPGM 0
321     $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec
322     $vgpr0 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec
323     S_WAIT_LOADCNT 0
324     $sgpr0_sgpr1 = S_GETPC_B64
325     $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
326     S_ENDPGM 0
330 name:            hazard_nocull_flat
331 body:            |
332   bb.0:
333     ; GCN-LABEL: name: hazard_nocull_flat
334     ; GCN: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec
335     ; GCN-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
336     ; GCN-NEXT: S_WAIT_LOADCNT 0
337     ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
338     ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
339     ; GCN-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
340     ; GCN-NEXT: S_ENDPGM 0
341     $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec
342     $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
343     S_WAIT_LOADCNT 0
344     $sgpr0_sgpr1 = S_GETPC_B64
345     $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
346     S_ENDPGM 0