Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / sink-after-control-flow-postra.mir
blobe354d928e73a11ee84c9f4b4d74dcbd84241b487
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -mcpu=gfx1010 -verify-machineinstrs -run-pass=postra-machine-sink -mattr=-wavefrontsize32,+wavefrontsize64 -o - %s | FileCheck -check-prefixes=GFX10 %s
4 # Ensure that PostRA Machine Sink does not sink instructions
5 # past block prologues which would overwrite their uses.
7 ---
8 # Make sure COPY to $sgpr9 is not sunk after S_AND_SAVEEXEC_B64.
9 name:            _amdgpu_ps_main
10 alignment:       1
11 tracksRegLiveness: true
12 registers:       []
13 liveins:
14   - { reg: '$sgpr4', virtual-reg: '' }
15 body:             |
16   ; GFX10-LABEL: name: _amdgpu_ps_main
17   ; GFX10: bb.0:
18   ; GFX10-NEXT:   successors: %bb.1(0x80000000)
19   ; GFX10-NEXT:   liveins: $sgpr4
20   ; GFX10-NEXT: {{  $}}
21   ; GFX10-NEXT:   renamable $sgpr9 = COPY $sgpr4
22   ; GFX10-NEXT:   renamable $vgpr5 = IMPLICIT_DEF
23   ; GFX10-NEXT:   renamable $sgpr0_sgpr1 = nofpexcept V_CMP_NGT_F32_e64 0, 0, 0, $vgpr5, 0, implicit $mode, implicit $exec
24   ; GFX10-NEXT:   S_BRANCH %bb.1
25   ; GFX10-NEXT: {{  $}}
26   ; GFX10-NEXT: bb.1:
27   ; GFX10-NEXT:   successors: %bb.2(0x40000000), %bb.3(0x40000000)
28   ; GFX10-NEXT:   liveins: $sgpr6, $sgpr9, $sgpr0_sgpr1
29   ; GFX10-NEXT: {{  $}}
30   ; GFX10-NEXT:   $sgpr4_sgpr5 = S_AND_SAVEEXEC_B64 $sgpr0_sgpr1, implicit-def $exec, implicit-def $scc, implicit $exec
31   ; GFX10-NEXT:   renamable $sgpr14_sgpr15 = S_XOR_B64 $exec, killed renamable $sgpr4_sgpr5, implicit-def dead $scc
32   ; GFX10-NEXT:   S_CBRANCH_EXECZ %bb.3, implicit $exec
33   ; GFX10-NEXT:   S_BRANCH %bb.2
34   ; GFX10-NEXT: {{  $}}
35   ; GFX10-NEXT: bb.2:
36   ; GFX10-NEXT:   successors: %bb.3(0x80000000)
37   ; GFX10-NEXT:   liveins: $sgpr6
38   ; GFX10-NEXT: {{  $}}
39   ; GFX10-NEXT:   $m0 = COPY killed renamable $sgpr6
40   ; GFX10-NEXT:   S_BRANCH %bb.3
41   ; GFX10-NEXT: {{  $}}
42   ; GFX10-NEXT: bb.3:
43   ; GFX10-NEXT:   S_ENDPGM 0
44   bb.0:
45     successors: %bb.1(0x80000000)
46     liveins: $sgpr4
48     renamable $sgpr9 = COPY $sgpr4
49     renamable $vgpr5 = IMPLICIT_DEF
50     renamable $sgpr0_sgpr1 = nofpexcept V_CMP_NGT_F32_e64 0, 0, 0, $vgpr5, 0, implicit $mode, implicit $exec
51     S_BRANCH %bb.1
53   bb.1:
54     successors: %bb.2(0x40000000), %bb.8(0x40000000)
55     liveins: $sgpr6, $sgpr9, $sgpr0_sgpr1
57     $sgpr4_sgpr5 = S_AND_SAVEEXEC_B64 $sgpr0_sgpr1, implicit-def $exec, implicit-def $scc, implicit $exec
58     renamable $sgpr14_sgpr15 = S_XOR_B64 $exec, killed renamable $sgpr4_sgpr5, implicit-def dead $scc
59     S_CBRANCH_EXECZ %bb.8, implicit $exec
60     S_BRANCH %bb.2
62   bb.2:
63     successors: %bb.8(0x40000000)
64     liveins: $sgpr6
66     $m0 = COPY killed renamable $sgpr6
67     S_BRANCH %bb.8
69   bb.8:
71     S_ENDPGM 0
73 ...
74 ---
75 # Make sure COPY to $sgpr0_sgpr1 is not sunk after S_AND_SAVEEXEC_B64.
76 name:            _amdgpu_ps_main2
77 alignment:       1
78 tracksRegLiveness: true
79 registers:       []
80 liveins:
81   - { reg: '$sgpr4', virtual-reg: '' }
82   - { reg: '$sgpr6_sgpr7', virtual-reg: '' }
83 body:             |
84   ; GFX10-LABEL: name: _amdgpu_ps_main2
85   ; GFX10: bb.0:
86   ; GFX10-NEXT:   successors: %bb.1(0x80000000)
87   ; GFX10-NEXT:   liveins: $sgpr4, $sgpr6_sgpr7
88   ; GFX10-NEXT: {{  $}}
89   ; GFX10-NEXT:   renamable $sgpr9 = COPY $sgpr4
90   ; GFX10-NEXT:   renamable $vgpr5 = IMPLICIT_DEF
91   ; GFX10-NEXT:   renamable $sgpr0_sgpr1 = COPY $sgpr6_sgpr7
92   ; GFX10-NEXT:   S_BRANCH %bb.1
93   ; GFX10-NEXT: {{  $}}
94   ; GFX10-NEXT: bb.1:
95   ; GFX10-NEXT:   successors: %bb.2(0x40000000), %bb.3(0x40000000)
96   ; GFX10-NEXT:   liveins: $sgpr6, $sgpr9, $sgpr0_sgpr1
97   ; GFX10-NEXT: {{  $}}
98   ; GFX10-NEXT:   $sgpr4_sgpr5 = S_AND_SAVEEXEC_B64 $sgpr0_sgpr1, implicit-def $exec, implicit-def $scc, implicit $exec
99   ; GFX10-NEXT:   renamable $sgpr14_sgpr15 = S_XOR_B64 $exec, killed renamable $sgpr4_sgpr5, implicit-def dead $scc
100   ; GFX10-NEXT:   S_CBRANCH_EXECZ %bb.3, implicit $exec
101   ; GFX10-NEXT:   S_BRANCH %bb.2
102   ; GFX10-NEXT: {{  $}}
103   ; GFX10-NEXT: bb.2:
104   ; GFX10-NEXT:   successors: %bb.3(0x80000000)
105   ; GFX10-NEXT:   liveins: $sgpr6
106   ; GFX10-NEXT: {{  $}}
107   ; GFX10-NEXT:   $m0 = COPY killed renamable $sgpr6
108   ; GFX10-NEXT:   S_BRANCH %bb.3
109   ; GFX10-NEXT: {{  $}}
110   ; GFX10-NEXT: bb.3:
111   ; GFX10-NEXT:   S_ENDPGM 0
112   bb.0:
113     successors: %bb.1(0x80000000)
114     liveins: $sgpr4, $sgpr6_sgpr7
116     renamable $sgpr9 = COPY $sgpr4
117     renamable $vgpr5 = IMPLICIT_DEF
118     renamable $sgpr0_sgpr1 = COPY $sgpr6_sgpr7
119     S_BRANCH %bb.1
121   bb.1:
122     successors: %bb.2(0x40000000), %bb.8(0x40000000)
123     liveins: $sgpr6, $sgpr9, $sgpr0_sgpr1
125     $sgpr4_sgpr5 = S_AND_SAVEEXEC_B64 $sgpr0_sgpr1, implicit-def $exec, implicit-def $scc, implicit $exec
126     renamable $sgpr14_sgpr15 = S_XOR_B64 $exec, killed renamable $sgpr4_sgpr5, implicit-def dead $scc
127     S_CBRANCH_EXECZ %bb.8, implicit $exec
128     S_BRANCH %bb.2
130   bb.2:
131     successors: %bb.8(0x40000000)
132     liveins: $sgpr6
134     $m0 = COPY killed renamable $sgpr6
135     S_BRANCH %bb.8
137   bb.8:
139     S_ENDPGM 0
143 # Make sure COPY to $sgpr2_sgpr3 is not sunk after S_AND_SAVEEXEC_B32.
144 name:            _amdgpu_ps_main3
145 alignment:       1
146 tracksRegLiveness: true
147 registers:       []
148 liveins:
149   - { reg: '$sgpr6_sgpr7', virtual-reg: '' }
150   - { reg: '$sgpr8', virtual-reg: '' }
151 body:             |
152   ; GFX10-LABEL: name: _amdgpu_ps_main3
153   ; GFX10: bb.0:
154   ; GFX10-NEXT:   successors: %bb.1(0x80000000)
155   ; GFX10-NEXT:   liveins: $sgpr6_sgpr7, $sgpr8
156   ; GFX10-NEXT: {{  $}}
157   ; GFX10-NEXT:   renamable $vgpr5 = IMPLICIT_DEF
158   ; GFX10-NEXT:   renamable $sgpr0_sgpr1 = IMPLICIT_DEF
159   ; GFX10-NEXT:   renamable $sgpr2_sgpr3 = COPY $sgpr6_sgpr7
160   ; GFX10-NEXT:   S_BRANCH %bb.1
161   ; GFX10-NEXT: {{  $}}
162   ; GFX10-NEXT: bb.1:
163   ; GFX10-NEXT:   successors: %bb.2(0x40000000), %bb.3(0x40000000)
164   ; GFX10-NEXT:   liveins: $sgpr6, $sgpr8, $sgpr0_sgpr1, $sgpr2_sgpr3
165   ; GFX10-NEXT: {{  $}}
166   ; GFX10-NEXT:   $sgpr2 = S_AND_SAVEEXEC_B32 $sgpr8, implicit-def $exec, implicit-def $scc, implicit $exec
167   ; GFX10-NEXT:   $sgpr4_sgpr5 = S_AND_SAVEEXEC_B64 $sgpr0_sgpr1, implicit-def $exec, implicit-def $scc, implicit $exec
168   ; GFX10-NEXT:   renamable $sgpr14_sgpr15 = S_XOR_B64 $exec, killed renamable $sgpr4_sgpr5, implicit-def dead $scc
169   ; GFX10-NEXT:   S_NOP 0, implicit $sgpr2_sgpr3
170   ; GFX10-NEXT:   S_CBRANCH_EXECZ %bb.3, implicit $exec
171   ; GFX10-NEXT:   S_BRANCH %bb.2
172   ; GFX10-NEXT: {{  $}}
173   ; GFX10-NEXT: bb.2:
174   ; GFX10-NEXT:   successors: %bb.3(0x80000000)
175   ; GFX10-NEXT:   liveins: $sgpr6
176   ; GFX10-NEXT: {{  $}}
177   ; GFX10-NEXT:   $m0 = COPY killed renamable $sgpr6
178   ; GFX10-NEXT:   S_BRANCH %bb.3
179   ; GFX10-NEXT: {{  $}}
180   ; GFX10-NEXT: bb.3:
181   ; GFX10-NEXT:   S_ENDPGM 0
182   bb.0:
183     successors: %bb.1(0x80000000)
184     liveins: $sgpr6_sgpr7, $sgpr8
186     renamable $vgpr5 = IMPLICIT_DEF
187     renamable $sgpr0_sgpr1 = IMPLICIT_DEF
188     renamable $sgpr2_sgpr3 = COPY $sgpr6_sgpr7
189     S_BRANCH %bb.1
191   bb.1:
192     successors: %bb.2(0x40000000), %bb.8(0x40000000)
193     liveins: $sgpr6, $sgpr8, $sgpr0_sgpr1, $sgpr2_sgpr3
195     $sgpr2 = S_AND_SAVEEXEC_B32 $sgpr8, implicit-def $exec, implicit-def $scc, implicit $exec
196     $sgpr4_sgpr5 = S_AND_SAVEEXEC_B64 $sgpr0_sgpr1, implicit-def $exec, implicit-def $scc, implicit $exec
197     renamable $sgpr14_sgpr15 = S_XOR_B64 $exec, killed renamable $sgpr4_sgpr5, implicit-def dead $scc
198     S_NOP 0, implicit $sgpr2_sgpr3
199     S_CBRANCH_EXECZ %bb.8, implicit $exec
200     S_BRANCH %bb.2
202   bb.2:
203     successors: %bb.8(0x40000000)
204     liveins: $sgpr6
206     $m0 = COPY killed renamable $sgpr6
207     S_BRANCH %bb.8
209   bb.8:
211     S_ENDPGM 0
216 name:            machinesink_loop_vgpr_out_of_divergent_loop_postra
217 tracksRegLiveness: true
218 body:             |
219   ; GFX10-LABEL: name: machinesink_loop_vgpr_out_of_divergent_loop_postra
220   ; GFX10: bb.0:
221   ; GFX10-NEXT:   successors: %bb.1(0x80000000)
222   ; GFX10-NEXT:   liveins: $sgpr8, $vgpr0, $vgpr1
223   ; GFX10-NEXT: {{  $}}
224   ; GFX10-NEXT: {{  $}}
225   ; GFX10-NEXT: bb.1:
226   ; GFX10-NEXT:   successors: %bb.7(0x40000000), %bb.2(0x40000000)
227   ; GFX10-NEXT:   liveins: $sgpr8, $vgpr0
228   ; GFX10-NEXT: {{  $}}
229   ; GFX10-NEXT:   $sgpr4 = S_AND_SAVEEXEC_B32 $sgpr8, implicit-def $exec, implicit-def $scc, implicit $exec
230   ; GFX10-NEXT:   renamable $sgpr4 = S_XOR_B32 $exec_lo, killed renamable $sgpr4, implicit-def dead $scc
231   ; GFX10-NEXT:   S_CBRANCH_EXECZ %bb.7, implicit $exec
232   ; GFX10-NEXT: {{  $}}
233   ; GFX10-NEXT: bb.2:
234   ; GFX10-NEXT:   successors: %bb.3(0x80000000)
235   ; GFX10-NEXT:   liveins: $sgpr4, $sgpr8, $vgpr0
236   ; GFX10-NEXT: {{  $}}
237   ; GFX10-NEXT: {{  $}}
238   ; GFX10-NEXT: bb.3:
239   ; GFX10-NEXT:   successors: %bb.5(0x40000000), %bb.4(0x40000000)
240   ; GFX10-NEXT:   liveins: $sgpr4, $sgpr8, $vgpr0
241   ; GFX10-NEXT: {{  $}}
242   ; GFX10-NEXT:   $sgpr5 = S_AND_SAVEEXEC_B32 $sgpr8, implicit-def $exec, implicit-def $scc, implicit $exec
243   ; GFX10-NEXT:   renamable $sgpr5 = S_XOR_B32 $exec_lo, killed renamable $sgpr5, implicit-def dead $scc
244   ; GFX10-NEXT:   S_CBRANCH_EXECZ %bb.5, implicit $exec
245   ; GFX10-NEXT:   S_BRANCH %bb.4
246   ; GFX10-NEXT: {{  $}}
247   ; GFX10-NEXT: bb.4:
248   ; GFX10-NEXT:   successors: %bb.5(0x80000000)
249   ; GFX10-NEXT:   liveins: $sgpr4, $sgpr5, $sgpr8, $vgpr0
250   ; GFX10-NEXT: {{  $}}
251   ; GFX10-NEXT: {{  $}}
252   ; GFX10-NEXT: bb.5:
253   ; GFX10-NEXT:   successors: %bb.3(0x40000000), %bb.6(0x40000000)
254   ; GFX10-NEXT:   liveins: $sgpr4, $sgpr5, $sgpr8, $vgpr0
255   ; GFX10-NEXT: {{  $}}
256   ; GFX10-NEXT:   renamable $vgpr1 = V_ADD_U32_e64 $sgpr8, $vgpr0, 0, implicit $exec
257   ; GFX10-NEXT:   renamable $sgpr5 = S_AND_B32 $exec_lo, killed renamable $sgpr5, implicit-def $scc
258   ; GFX10-NEXT:   renamable $sgpr5 = S_OR_B32 killed renamable $sgpr5, renamable $sgpr4, implicit-def $scc
259   ; GFX10-NEXT:   $exec_lo = S_ANDN2_B32 $exec_lo, renamable $sgpr5, implicit-def $scc
260   ; GFX10-NEXT:   S_CBRANCH_EXECNZ %bb.3, implicit $exec
261   ; GFX10-NEXT:   S_BRANCH %bb.6
262   ; GFX10-NEXT: {{  $}}
263   ; GFX10-NEXT: bb.6:
264   ; GFX10-NEXT:   successors: %bb.3(0x80000000)
265   ; GFX10-NEXT:   liveins: $sgpr4, $sgpr5, $sgpr8, $vgpr0, $vgpr1
266   ; GFX10-NEXT: {{  $}}
267   ; GFX10-NEXT:   $exec_lo = S_OR_B32 $exec_lo, killed renamable $sgpr5, implicit-def $scc
268   ; GFX10-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */, implicit killed renamable $vgpr1
269   ; GFX10-NEXT:   S_BRANCH %bb.3
270   ; GFX10-NEXT: {{  $}}
271   ; GFX10-NEXT: bb.7:
272   ; GFX10-NEXT:   successors: %bb.1(0x40000000), %bb.8(0x40000000)
273   ; GFX10-NEXT:   liveins: $sgpr4, $sgpr8, $vgpr0
274   ; GFX10-NEXT: {{  $}}
275   ; GFX10-NEXT:   $exec_lo = S_ANDN2_B32 $exec_lo, killed renamable $sgpr4, implicit-def $scc
276   ; GFX10-NEXT:   S_CBRANCH_EXECNZ %bb.1, implicit $exec
277   ; GFX10-NEXT: {{  $}}
278   ; GFX10-NEXT: bb.8:
279   ; GFX10-NEXT:   successors: %bb.9(0x80000000)
280   ; GFX10-NEXT: {{  $}}
281   ; GFX10-NEXT: {{  $}}
282   ; GFX10-NEXT: bb.9:
283   ; GFX10-NEXT:   successors: %bb.9(0x40000000), %bb.10(0x40000000)
284   ; GFX10-NEXT: {{  $}}
285   ; GFX10-NEXT:   S_CBRANCH_VCCNZ %bb.9, implicit undef $vcc
286   ; GFX10-NEXT:   S_BRANCH %bb.10
287   ; GFX10-NEXT: {{  $}}
288   ; GFX10-NEXT: bb.10:
289   ; GFX10-NEXT:   SI_RETURN
290   bb.0:
291     liveins: $sgpr8, $vgpr0, $vgpr1
293   bb.1:
294     liveins: $sgpr8, $vgpr0
296     $sgpr4 = S_AND_SAVEEXEC_B32 $sgpr8, implicit-def $exec, implicit-def $scc, implicit $exec
297     renamable $sgpr4 = S_XOR_B32 $exec_lo, killed renamable $sgpr4, implicit-def dead $scc
298     S_CBRANCH_EXECZ %bb.6, implicit $exec
300   bb.9:
301     liveins: $sgpr4, $sgpr8, $vgpr0
304   bb.2:
305     liveins: $sgpr4, $sgpr8, $vgpr0
307     $sgpr5 = S_AND_SAVEEXEC_B32 $sgpr8, implicit-def $exec, implicit-def $scc, implicit $exec
308     renamable $sgpr5 = S_XOR_B32 $exec_lo, killed renamable $sgpr5, implicit-def dead $scc
309     S_CBRANCH_EXECZ %bb.4, implicit $exec
310     S_BRANCH %bb.3
312   bb.3:
313     liveins: $sgpr4, $sgpr5, $sgpr8, $vgpr0
316   bb.4:
317     liveins: $sgpr4, $sgpr5, $sgpr8, $vgpr0
319     renamable $vgpr1 = V_ADD_U32_e64 $sgpr8, $vgpr0, 0, implicit $exec
320     renamable $sgpr5 = S_AND_B32 $exec_lo, killed renamable $sgpr5, implicit-def $scc
321     renamable $sgpr5 = S_OR_B32 killed renamable $sgpr5, renamable $sgpr4, implicit-def $scc
323     $exec_lo = S_ANDN2_B32 $exec_lo, renamable $sgpr5, implicit-def $scc
324     S_CBRANCH_EXECNZ %bb.2, implicit $exec
325     S_BRANCH %bb.5
327   bb.5:
328     liveins: $sgpr4, $sgpr5, $sgpr8, $vgpr0, $vgpr1
330     $exec_lo = S_OR_B32 $exec_lo, killed renamable $sgpr5, implicit-def $scc
331     INLINEASM &"", 1 /* sideeffect attdialect */, implicit killed renamable $vgpr1
332     S_BRANCH %bb.2
334   bb.6:
335     liveins: $sgpr4, $sgpr8, $vgpr0
337     $exec_lo = S_ANDN2_B32 $exec_lo, killed renamable $sgpr4, implicit-def $scc
338     S_CBRANCH_EXECNZ %bb.1, implicit $exec
340   bb.10:
342   bb.7:
343     S_CBRANCH_VCCNZ %bb.7, implicit undef $vcc
344     S_BRANCH %bb.8
346   bb.8:
347     SI_RETURN
352 name:            machinesink_loop_sgpr_out_of_divergent_loop_postra
353 tracksRegLiveness: true
354 body:             |
355   ; GFX10-LABEL: name: machinesink_loop_sgpr_out_of_divergent_loop_postra
356   ; GFX10: bb.0:
357   ; GFX10-NEXT:   successors: %bb.1(0x80000000)
358   ; GFX10-NEXT:   liveins: $sgpr8, $sgpr9, $sgpr10
359   ; GFX10-NEXT: {{  $}}
360   ; GFX10-NEXT: {{  $}}
361   ; GFX10-NEXT: bb.1:
362   ; GFX10-NEXT:   successors: %bb.7(0x40000000), %bb.2(0x40000000)
363   ; GFX10-NEXT:   liveins: $sgpr8, $sgpr9
364   ; GFX10-NEXT: {{  $}}
365   ; GFX10-NEXT:   $sgpr4 = S_AND_SAVEEXEC_B32 $sgpr9, implicit-def $exec, implicit-def $scc, implicit $exec
366   ; GFX10-NEXT:   renamable $sgpr4 = S_XOR_B32 $exec_lo, killed renamable $sgpr4, implicit-def dead $scc
367   ; GFX10-NEXT:   S_CBRANCH_EXECZ %bb.7, implicit $exec
368   ; GFX10-NEXT: {{  $}}
369   ; GFX10-NEXT: bb.2:
370   ; GFX10-NEXT:   successors: %bb.3(0x80000000)
371   ; GFX10-NEXT:   liveins: $sgpr4, $sgpr8, $sgpr9
372   ; GFX10-NEXT: {{  $}}
373   ; GFX10-NEXT: {{  $}}
374   ; GFX10-NEXT: bb.3:
375   ; GFX10-NEXT:   successors: %bb.5(0x40000000), %bb.4(0x40000000)
376   ; GFX10-NEXT:   liveins: $sgpr4, $sgpr8, $sgpr9
377   ; GFX10-NEXT: {{  $}}
378   ; GFX10-NEXT:   $sgpr5 = S_AND_SAVEEXEC_B32 $sgpr9, implicit-def $exec, implicit-def $scc, implicit $exec
379   ; GFX10-NEXT:   renamable $sgpr5 = S_XOR_B32 $exec_lo, killed renamable $sgpr5, implicit-def dead $scc
380   ; GFX10-NEXT:   S_CBRANCH_EXECZ %bb.5, implicit $exec
381   ; GFX10-NEXT:   S_BRANCH %bb.4
382   ; GFX10-NEXT: {{  $}}
383   ; GFX10-NEXT: bb.4:
384   ; GFX10-NEXT:   successors: %bb.5(0x80000000)
385   ; GFX10-NEXT:   liveins: $sgpr4, $sgpr5, $sgpr8, $sgpr9
386   ; GFX10-NEXT: {{  $}}
387   ; GFX10-NEXT: {{  $}}
388   ; GFX10-NEXT: bb.5:
389   ; GFX10-NEXT:   successors: %bb.3(0x40000000), %bb.6(0x40000000)
390   ; GFX10-NEXT:   liveins: $sgpr4, $sgpr5, $sgpr8, $sgpr9
391   ; GFX10-NEXT: {{  $}}
392   ; GFX10-NEXT:   renamable $sgpr6 = S_ADD_I32 renamable $sgpr8, renamable $sgpr9, implicit-def dead $scc
393   ; GFX10-NEXT:   renamable $sgpr5 = S_AND_B32 $exec_lo, killed renamable $sgpr5, implicit-def $scc
394   ; GFX10-NEXT:   renamable $sgpr5 = S_OR_B32 killed renamable $sgpr5, renamable $sgpr4, implicit-def $scc
395   ; GFX10-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */
396   ; GFX10-NEXT:   $exec_lo = S_ANDN2_B32 $exec_lo, renamable $sgpr5, implicit-def $scc
397   ; GFX10-NEXT:   S_CBRANCH_EXECNZ %bb.3, implicit $exec
398   ; GFX10-NEXT:   S_BRANCH %bb.6
399   ; GFX10-NEXT: {{  $}}
400   ; GFX10-NEXT: bb.6:
401   ; GFX10-NEXT:   successors: %bb.3(0x80000000)
402   ; GFX10-NEXT:   liveins: $sgpr4, $sgpr5, $sgpr6, $sgpr8, $sgpr9
403   ; GFX10-NEXT: {{  $}}
404   ; GFX10-NEXT:   $exec_lo = S_OR_B32 $exec_lo, killed renamable $sgpr5, implicit-def $scc
405   ; GFX10-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */, implicit killed renamable $sgpr6
406   ; GFX10-NEXT:   S_BRANCH %bb.3
407   ; GFX10-NEXT: {{  $}}
408   ; GFX10-NEXT: bb.7:
409   ; GFX10-NEXT:   successors: %bb.1(0x40000000), %bb.8(0x40000000)
410   ; GFX10-NEXT:   liveins: $sgpr4, $sgpr8, $sgpr9
411   ; GFX10-NEXT: {{  $}}
412   ; GFX10-NEXT:   $exec_lo = S_ANDN2_B32 $exec_lo, killed renamable $sgpr4, implicit-def $scc
413   ; GFX10-NEXT:   S_CBRANCH_EXECNZ %bb.1, implicit $exec
414   ; GFX10-NEXT: {{  $}}
415   ; GFX10-NEXT: bb.8:
416   ; GFX10-NEXT:   successors: %bb.9(0x80000000)
417   ; GFX10-NEXT: {{  $}}
418   ; GFX10-NEXT: {{  $}}
419   ; GFX10-NEXT: bb.9:
420   ; GFX10-NEXT:   successors: %bb.9(0x40000000), %bb.10(0x40000000)
421   ; GFX10-NEXT: {{  $}}
422   ; GFX10-NEXT:   S_CBRANCH_VCCNZ %bb.9, implicit undef $vcc
423   ; GFX10-NEXT:   S_BRANCH %bb.10
424   ; GFX10-NEXT: {{  $}}
425   ; GFX10-NEXT: bb.10:
426   ; GFX10-NEXT:   SI_RETURN
427   bb.0:
428     liveins: $sgpr8, $sgpr9, $sgpr10
431   bb.1:
432     liveins: $sgpr8, $sgpr9
434     $sgpr4 = S_AND_SAVEEXEC_B32 $sgpr9, implicit-def $exec, implicit-def $scc, implicit $exec
435     renamable $sgpr4 = S_XOR_B32 $exec_lo, killed renamable $sgpr4, implicit-def dead $scc
436     S_CBRANCH_EXECZ %bb.6, implicit $exec
438   bb.9:
439     liveins: $sgpr4, $sgpr8, $sgpr9
442   bb.2:
443     liveins: $sgpr4, $sgpr8, $sgpr9
445     $sgpr5 = S_AND_SAVEEXEC_B32 $sgpr9, implicit-def $exec, implicit-def $scc, implicit $exec
446     renamable $sgpr5 = S_XOR_B32 $exec_lo, killed renamable $sgpr5, implicit-def dead $scc
447     S_CBRANCH_EXECZ %bb.4, implicit $exec
448     S_BRANCH %bb.3
450   bb.3:
451     liveins: $sgpr4, $sgpr5, $sgpr8, $sgpr9
454   bb.4:
455     liveins: $sgpr4, $sgpr5, $sgpr8, $sgpr9
457     renamable $sgpr6 = S_ADD_I32 renamable $sgpr8, renamable $sgpr9, implicit-def dead $scc
458     renamable $sgpr5 = S_AND_B32 $exec_lo, killed renamable $sgpr5, implicit-def $scc
459     renamable $sgpr5 = S_OR_B32 killed renamable $sgpr5, renamable $sgpr4, implicit-def $scc
460     INLINEASM &"", 1 /* sideeffect attdialect */
461     $exec_lo = S_ANDN2_B32 $exec_lo, renamable $sgpr5, implicit-def $scc
462     S_CBRANCH_EXECNZ %bb.2, implicit $exec
463     S_BRANCH %bb.5
465   bb.5:
466     liveins: $sgpr4, $sgpr5, $sgpr6, $sgpr8, $sgpr9
468     $exec_lo = S_OR_B32 $exec_lo, killed renamable $sgpr5, implicit-def $scc
469     INLINEASM &"", 1 /* sideeffect attdialect */, implicit killed renamable $sgpr6
470     S_BRANCH %bb.2
472   bb.6:
473     liveins: $sgpr4, $sgpr8, $sgpr9
475     $exec_lo = S_ANDN2_B32 $exec_lo, killed renamable $sgpr4, implicit-def $scc
476     S_CBRANCH_EXECNZ %bb.1, implicit $exec
478   bb.10:
480   bb.7:
481     S_CBRANCH_VCCNZ %bb.7, implicit undef $vcc
482     S_BRANCH %bb.8
484   bb.8:
485     SI_RETURN