1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -mcpu=gfx908 -verify-machineinstrs -run-pass=machine-sink -o - %s | FileCheck -check-prefixes=GFX9 %s
5 name: test_sink_fmac_to_only_use
7 tracksRegLiveness: true
11 ; GFX9-LABEL: name: test_sink_fmac_to_only_use
13 ; GFX9-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
14 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2
16 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
17 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
18 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
19 ; GFX9-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
20 ; GFX9-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0
21 ; GFX9-NEXT: [[S_MOV_B64_1:%[0-9]+]]:sreg_64 = S_MOV_B64 0
22 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_]]
23 ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_1]]
24 ; GFX9-NEXT: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY2]], 0, 0, implicit $exec :: (load (s32), addrspace 1)
25 ; GFX9-NEXT: [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY3]], 0, 0, implicit $exec :: (load (s32), addrspace 1)
26 ; GFX9-NEXT: [[COPY4:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0
27 ; GFX9-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1
28 ; GFX9-NEXT: [[V_CMP_LT_I32_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_I32_e64 [[COPY4]](s32), [[S_MOV_B32_]], implicit $exec
29 ; GFX9-NEXT: [[SI_IF:%[0-9]+]]:sreg_64 = SI_IF [[V_CMP_LT_I32_e64_]], %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
30 ; GFX9-NEXT: S_BRANCH %bb.1
33 ; GFX9-NEXT: successors: %bb.2(0x80000000)
35 ; GFX9-NEXT: %9:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
36 ; GFX9-NEXT: %10:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %9, 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
37 ; GFX9-NEXT: %12:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD1]], 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
38 ; GFX9-NEXT: %13:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %12, 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
39 ; GFX9-NEXT: [[V_ADD_F32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 %9, %10, implicit $mode, implicit $exec
40 ; GFX9-NEXT: [[V_ADD_F32_e32_1:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 %12, %13, implicit $mode, implicit $exec
43 ; GFX9-NEXT: successors: %bb.3(0x80000000)
45 ; GFX9-NEXT: [[PHI:%[0-9]+]]:vgpr_32 = PHI [[V_MOV_B32_e32_]], %bb.0, [[V_ADD_F32_e32_]], %bb.1
46 ; GFX9-NEXT: [[PHI1:%[0-9]+]]:vgpr_32 = PHI [[V_MOV_B32_e32_1]], %bb.0, [[V_ADD_F32_e32_1]], %bb.1
47 ; GFX9-NEXT: SI_END_CF [[SI_IF]], implicit-def dead $exec, implicit-def dead $scc, implicit $exec
50 ; GFX9-NEXT: S_ENDPGM 0, implicit [[PHI]], implicit [[PHI1]]
52 liveins: $vgpr0, $vgpr1, $vgpr2
53 %1:vgpr_32 = COPY $vgpr0
54 %2:vgpr_32 = COPY $vgpr1
55 %3:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
56 %4:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
57 %5:sreg_64 = S_MOV_B64 0
58 %6:sreg_64 = S_MOV_B64 0
61 %9:vgpr_32 = GLOBAL_LOAD_DWORD killed %7, 0, 0, implicit $exec :: (load (s32), addrspace 1)
62 %10:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %9, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
63 %11:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %10, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
64 %12:vgpr_32 = GLOBAL_LOAD_DWORD killed %8, 0, 0, implicit $exec :: (load (s32), addrspace 1)
65 %13:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %12, 0, %2, 0, %1, 0, 0, implicit $mode, implicit $exec
66 %14:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %13, 0, %2, 0, %1, 0, 0, implicit $mode, implicit $exec
67 %15:vgpr_32(s32) = COPY $vgpr0
68 %16:sreg_32 = S_MOV_B32 1
69 %17:sreg_64 = V_CMP_LT_I32_e64 %15(s32), %16, implicit $exec
70 %18:sreg_64 = COPY %17
71 %19:sreg_64 = SI_IF %18, %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
75 %20:vgpr_32 = V_ADD_F32_e32 %10, %11, implicit $mode, implicit $exec
76 %21:vgpr_32 = V_ADD_F32_e32 %13, %14, implicit $mode, implicit $exec
79 %22:vgpr_32 = PHI %3, %bb.0, %20, %bb.1
80 %23:vgpr_32 = PHI %4, %bb.0, %21, %bb.1
81 SI_END_CF %19, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
84 S_ENDPGM 0, implicit %22, implicit %23
87 name: test_no_sink_into_if_cond_multiple_uses
89 tracksRegLiveness: true
93 ; GFX9-LABEL: name: test_no_sink_into_if_cond_multiple_uses
95 ; GFX9-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
96 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2
98 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
99 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
100 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
101 ; GFX9-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
102 ; GFX9-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0
103 ; GFX9-NEXT: [[S_MOV_B64_1:%[0-9]+]]:sreg_64 = S_MOV_B64 0
104 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_]]
105 ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_1]]
106 ; GFX9-NEXT: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY2]], 0, 0, implicit $exec :: (load (s32), addrspace 1)
107 ; GFX9-NEXT: %9:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
108 ; GFX9-NEXT: %10:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %9, 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
109 ; GFX9-NEXT: [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY3]], 0, 0, implicit $exec :: (load (s32), addrspace 1)
110 ; GFX9-NEXT: %12:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD1]], 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
111 ; GFX9-NEXT: %13:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %12, 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
112 ; GFX9-NEXT: [[COPY4:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0
113 ; GFX9-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1
114 ; GFX9-NEXT: [[V_CMP_LT_I32_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_I32_e64 [[COPY4]](s32), [[S_MOV_B32_]], implicit $exec
115 ; GFX9-NEXT: [[SI_IF:%[0-9]+]]:sreg_64 = SI_IF [[V_CMP_LT_I32_e64_]], %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
116 ; GFX9-NEXT: S_BRANCH %bb.1
119 ; GFX9-NEXT: successors: %bb.2(0x80000000)
121 ; GFX9-NEXT: [[V_ADD_F32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 %9, %10, implicit $mode, implicit $exec
122 ; GFX9-NEXT: [[V_ADD_F32_e32_1:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 %12, %13, implicit $mode, implicit $exec
125 ; GFX9-NEXT: successors: %bb.3(0x80000000)
127 ; GFX9-NEXT: [[PHI:%[0-9]+]]:vgpr_32 = PHI [[V_MOV_B32_e32_]], %bb.0, [[V_ADD_F32_e32_]], %bb.1
128 ; GFX9-NEXT: [[PHI1:%[0-9]+]]:vgpr_32 = PHI [[V_MOV_B32_e32_1]], %bb.0, [[V_ADD_F32_e32_1]], %bb.1
129 ; GFX9-NEXT: SI_END_CF [[SI_IF]], implicit-def dead $exec, implicit-def dead $scc, implicit $exec
132 ; GFX9-NEXT: [[V_ADD_F32_e32_2:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 %13, %10, implicit $mode, implicit $exec
133 ; GFX9-NEXT: S_ENDPGM 0, implicit [[PHI]], implicit [[PHI1]]
135 liveins: $vgpr0, $vgpr1, $vgpr2
136 %1:vgpr_32 = COPY $vgpr0
137 %2:vgpr_32 = COPY $vgpr1
138 %3:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
139 %4:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
140 %5:sreg_64 = S_MOV_B64 0
141 %6:sreg_64 = S_MOV_B64 0
144 %9:vgpr_32 = GLOBAL_LOAD_DWORD killed %7, 0, 0, implicit $exec :: (load (s32), addrspace 1)
145 %10:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %9, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
146 %11:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %10, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
147 %12:vgpr_32 = GLOBAL_LOAD_DWORD killed %8, 0, 0, implicit $exec :: (load (s32), addrspace 1)
148 %13:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %12, 0, %2, 0, %1, 0, 0, implicit $mode, implicit $exec
149 %14:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %13, 0, %2, 0, %1, 0, 0, implicit $mode, implicit $exec
150 %15:vgpr_32(s32) = COPY $vgpr0
151 %16:sreg_32 = S_MOV_B32 1
152 %17:sreg_64 = V_CMP_LT_I32_e64 %15(s32), %16, implicit $exec
153 %18:sreg_64 = COPY %17
154 %19:sreg_64 = SI_IF %18, %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
158 %20:vgpr_32 = V_ADD_F32_e32 %10, %11, implicit $mode, implicit $exec
159 %21:vgpr_32 = V_ADD_F32_e32 %13, %14, implicit $mode, implicit $exec
162 %22:vgpr_32 = PHI %3, %bb.0, %20, %bb.1
163 %23:vgpr_32 = PHI %4, %bb.0, %21, %bb.1
164 SI_END_CF %19, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
167 %24:vgpr_32 = V_ADD_F32_e32 %14, %11, implicit $mode, implicit $exec
168 S_ENDPGM 0, implicit %22, implicit %23
171 name: no_sink_fmac_not_constant_mode
173 tracksRegLiveness: true
175 isEntryFunction: true
177 ; GFX9-LABEL: name: no_sink_fmac_not_constant_mode
179 ; GFX9-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
180 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2
182 ; GFX9-NEXT: $mode = IMPLICIT_DEF
183 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
184 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
185 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
186 ; GFX9-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
187 ; GFX9-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0
188 ; GFX9-NEXT: [[S_MOV_B64_1:%[0-9]+]]:sreg_64 = S_MOV_B64 0
189 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_]]
190 ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_1]]
191 ; GFX9-NEXT: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY2]], 0, 0, implicit $exec :: (load (s32), addrspace 1)
192 ; GFX9-NEXT: %9:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
193 ; GFX9-NEXT: %10:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %9, 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
194 ; GFX9-NEXT: [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY3]], 0, 0, implicit $exec :: (load (s32), addrspace 1)
195 ; GFX9-NEXT: %12:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD1]], 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
196 ; GFX9-NEXT: %13:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %12, 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
197 ; GFX9-NEXT: [[COPY4:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0
198 ; GFX9-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1
199 ; GFX9-NEXT: [[V_CMP_LT_I32_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_I32_e64 [[COPY4]](s32), [[S_MOV_B32_]], implicit $exec
200 ; GFX9-NEXT: [[SI_IF:%[0-9]+]]:sreg_64 = SI_IF [[V_CMP_LT_I32_e64_]], %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
201 ; GFX9-NEXT: S_BRANCH %bb.1
204 ; GFX9-NEXT: successors: %bb.2(0x80000000)
206 ; GFX9-NEXT: [[V_ADD_F32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 %9, %10, implicit $mode, implicit $exec
207 ; GFX9-NEXT: [[V_ADD_F32_e32_1:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 %12, %13, implicit $mode, implicit $exec
210 ; GFX9-NEXT: successors: %bb.3(0x80000000)
212 ; GFX9-NEXT: [[PHI:%[0-9]+]]:vgpr_32 = PHI [[V_MOV_B32_e32_]], %bb.0, [[V_ADD_F32_e32_]], %bb.1
213 ; GFX9-NEXT: [[PHI1:%[0-9]+]]:vgpr_32 = PHI [[V_MOV_B32_e32_1]], %bb.0, [[V_ADD_F32_e32_1]], %bb.1
214 ; GFX9-NEXT: SI_END_CF [[SI_IF]], implicit-def dead $exec, implicit-def dead $scc, implicit $exec
217 ; GFX9-NEXT: S_ENDPGM 0, implicit [[PHI]], implicit [[PHI1]]
219 liveins: $vgpr0, $vgpr1, $vgpr2
221 %1:vgpr_32 = COPY $vgpr0
222 %2:vgpr_32 = COPY $vgpr1
223 %3:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
224 %4:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
225 %5:sreg_64 = S_MOV_B64 0
226 %6:sreg_64 = S_MOV_B64 0
229 %9:vgpr_32 = GLOBAL_LOAD_DWORD killed %7, 0, 0, implicit $exec :: (load (s32), addrspace 1)
230 %10:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %9, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
231 %11:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %10, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
232 %12:vgpr_32 = GLOBAL_LOAD_DWORD killed %8, 0, 0, implicit $exec :: (load (s32), addrspace 1)
233 %13:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %12, 0, %2, 0, %1, 0, 0, implicit $mode, implicit $exec
234 %14:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %13, 0, %2, 0, %1, 0, 0, implicit $mode, implicit $exec
235 %15:vgpr_32(s32) = COPY $vgpr0
236 %16:sreg_32 = S_MOV_B32 1
237 %17:sreg_64 = V_CMP_LT_I32_e64 %15(s32), %16, implicit $exec
238 %18:sreg_64 = COPY %17
239 %19:sreg_64 = SI_IF %18, %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
243 %20:vgpr_32 = V_ADD_F32_e32 %10, %11, implicit $mode, implicit $exec
244 %21:vgpr_32 = V_ADD_F32_e32 %13, %14, implicit $mode, implicit $exec
247 %22:vgpr_32 = PHI %3, %bb.0, %20, %bb.1
248 %23:vgpr_32 = PHI %4, %bb.0, %21, %bb.1
249 SI_END_CF %19, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
252 S_ENDPGM 0, implicit %22, implicit %23
255 name: test_no_sink_fmac_wwm
257 tracksRegLiveness: true
259 isEntryFunction: true
261 ; GFX9-LABEL: name: test_no_sink_fmac_wwm
263 ; GFX9-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
264 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2
266 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
267 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
268 ; GFX9-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0
269 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_]]
270 ; GFX9-NEXT: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY2]], 0, 0, implicit $exec :: (load (s32), addrspace 1)
271 ; GFX9-NEXT: %5:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
272 ; GFX9-NEXT: early-clobber %6:vgpr_32 = STRICT_WWM %5, implicit $exec
273 ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0
274 ; GFX9-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1
275 ; GFX9-NEXT: [[V_CMP_LT_I32_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_I32_e64 [[COPY3]](s32), [[S_MOV_B32_]], implicit $exec
276 ; GFX9-NEXT: [[SI_IF:%[0-9]+]]:sreg_64 = SI_IF [[V_CMP_LT_I32_e64_]], %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
277 ; GFX9-NEXT: S_BRANCH %bb.1
280 ; GFX9-NEXT: successors: %bb.2(0x80000000)
284 ; GFX9-NEXT: successors: %bb.3(0x80000000)
286 ; GFX9-NEXT: S_NOP 0, implicit %5
287 ; GFX9-NEXT: SI_END_CF [[SI_IF]], implicit-def dead $exec, implicit-def dead $scc, implicit $exec
290 ; GFX9-NEXT: S_ENDPGM 0, implicit %6
292 liveins: $vgpr0, $vgpr1, $vgpr2
293 %1:vgpr_32 = COPY $vgpr0
294 %2:vgpr_32 = COPY $vgpr1
296 %20:sreg_64 = S_MOV_B64 0
297 %30:vreg_64 = COPY %20
298 %29:vgpr_32 = GLOBAL_LOAD_DWORD killed %30, 0, 0, implicit $exec :: (load (s32), addrspace 1)
299 %6:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %29, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
300 %9:vgpr_32 = STRICT_WWM %6, implicit $exec
302 %16:vgpr_32(s32) = COPY $vgpr0
303 %23:sreg_32 = S_MOV_B32 1
304 %24:sreg_64 = V_CMP_LT_I32_e64 %16(s32), %23, implicit $exec
305 %0:sreg_64 = COPY %24
306 %5:sreg_64 = SI_IF %0, %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
313 SI_END_CF %5, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
316 S_ENDPGM 0, implicit %9
319 name: test_def_and_use_in_loop_sink_fmac
320 tracksRegLiveness: true
322 isEntryFunction: true
324 ; GFX9-LABEL: name: test_def_and_use_in_loop_sink_fmac
326 ; GFX9-NEXT: successors: %bb.1(0x80000000)
327 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
329 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
330 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
331 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
334 ; GFX9-NEXT: successors: %bb.2(0x40000000), %bb.3(0x40000000)
335 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
337 ; GFX9-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0
338 ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_]]
339 ; GFX9-NEXT: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY3]], 0, 0, implicit $exec :: (load (s32), addrspace 1)
340 ; GFX9-NEXT: [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY2]], 0, 0, implicit $exec :: (load (s32), addrspace 1)
341 ; GFX9-NEXT: [[COPY4:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0
342 ; GFX9-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1
343 ; GFX9-NEXT: [[V_CMP_LT_I32_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_I32_e64 [[COPY4]](s32), [[S_MOV_B32_]], implicit $exec
344 ; GFX9-NEXT: [[SI_IF:%[0-9]+]]:sreg_64 = SI_IF [[V_CMP_LT_I32_e64_]], %bb.3, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
345 ; GFX9-NEXT: S_BRANCH %bb.2
348 ; GFX9-NEXT: successors: %bb.3(0x80000000)
349 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
354 ; GFX9-NEXT: successors: %bb.4(0x40000000), %bb.6(0x40000000)
355 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
357 ; GFX9-NEXT: %6:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
358 ; GFX9-NEXT: %8:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD1]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
359 ; GFX9-NEXT: S_NOP 0, implicit %6, implicit %8
360 ; GFX9-NEXT: SI_END_CF [[SI_IF]], implicit-def dead $exec, implicit-def dead $scc, implicit $exec
361 ; GFX9-NEXT: S_CBRANCH_EXECZ %bb.6, implicit $exec
364 ; GFX9-NEXT: successors: %bb.5(0x04000000), %bb.4(0x7c000000)
365 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
368 ; GFX9-NEXT: S_CBRANCH_EXECZ %bb.4, implicit $exec
371 ; GFX9-NEXT: successors: %bb.6(0x80000000)
372 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
377 ; GFX9-NEXT: successors: %bb.7(0x04000000), %bb.1(0x7c000000)
378 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
380 ; GFX9-NEXT: S_CBRANCH_VCCZ %bb.1, implicit $vcc
383 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
385 ; GFX9-NEXT: S_ENDPGM 0
387 successors: %bb.1(0x80000000)
389 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
390 %101:vgpr_32 = COPY $vgpr0
391 %102:vgpr_32 = COPY $vgpr1
392 %15:vreg_64 = COPY $vgpr2_vgpr3
395 successors: %bb.2(0x40000000), %bb.3(0x40000000)
396 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
398 %20:sreg_64 = S_MOV_B64 0
399 %30:vreg_64 = COPY %20
400 %29:vgpr_32 = GLOBAL_LOAD_DWORD %30, 0, 0, implicit $exec :: (load (s32), addrspace 1)
401 %6:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %29, 0, %101, 0, %102, 0, 0, implicit $mode, implicit $exec
402 %31:vgpr_32 = GLOBAL_LOAD_DWORD %15, 0, 0, implicit $exec :: (load (s32), addrspace 1)
403 %7:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %31, 0, %101, 0, %102, 0, 0, implicit $mode, implicit $exec
404 %16:vgpr_32(s32) = COPY $vgpr0
405 %23:sreg_32 = S_MOV_B32 1
406 %24:sreg_64 = V_CMP_LT_I32_e64 %16(s32), %23, implicit $exec
407 %0:sreg_64 = COPY %24
408 %5:sreg_64 = SI_IF %0, %bb.3, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
412 successors: %bb.3(0x80000000)
413 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
418 successors: %bb.4(0x40000000), %bb.6(0x40000000)
419 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
421 S_NOP 0, implicit %6, implicit %7
422 SI_END_CF %5, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
423 S_CBRANCH_EXECZ %bb.6, implicit $exec
426 successors: %bb.5(0x04000000), %bb.4(0x7c000000)
427 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
430 S_CBRANCH_EXECZ %bb.4, implicit $exec
433 successors: %bb.6(0x80000000)
434 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
439 successors: %bb.7(0x04000000), %bb.1(0x7c000000)
440 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
442 S_CBRANCH_VCCZ %bb.1, implicit $vcc
445 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
449 name: test_no_sink_def_into_loop
450 tracksRegLiveness: true
452 isEntryFunction: true
454 ; GFX9-LABEL: name: test_no_sink_def_into_loop
456 ; GFX9-NEXT: successors: %bb.1(0x80000000)
457 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
459 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
460 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
461 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
462 ; GFX9-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0
463 ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_]]
464 ; GFX9-NEXT: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY3]], 0, 0, implicit $exec :: (load (s32), addrspace 1)
465 ; GFX9-NEXT: %6:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
466 ; GFX9-NEXT: [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY2]], 0, 0, implicit $exec :: (load (s32), addrspace 1)
467 ; GFX9-NEXT: %8:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD1]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
470 ; GFX9-NEXT: successors: %bb.2(0x40000000), %bb.3(0x40000000)
471 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
473 ; GFX9-NEXT: S_NOP 0, implicit %6, implicit %8
474 ; GFX9-NEXT: [[COPY4:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0
475 ; GFX9-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1
476 ; GFX9-NEXT: [[V_CMP_LT_I32_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_I32_e64 [[COPY4]](s32), [[S_MOV_B32_]], implicit $exec
477 ; GFX9-NEXT: [[SI_IF:%[0-9]+]]:sreg_64 = SI_IF [[V_CMP_LT_I32_e64_]], %bb.3, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
478 ; GFX9-NEXT: S_BRANCH %bb.2
481 ; GFX9-NEXT: successors: %bb.3(0x80000000)
482 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
487 ; GFX9-NEXT: successors: %bb.4(0x40000000), %bb.6(0x40000000)
488 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
490 ; GFX9-NEXT: SI_END_CF [[SI_IF]], implicit-def dead $exec, implicit-def dead $scc, implicit $exec
491 ; GFX9-NEXT: S_CBRANCH_EXECZ %bb.6, implicit $exec
494 ; GFX9-NEXT: successors: %bb.5(0x04000000), %bb.4(0x7c000000)
495 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
498 ; GFX9-NEXT: S_CBRANCH_EXECZ %bb.4, implicit $exec
501 ; GFX9-NEXT: successors: %bb.6(0x80000000)
502 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
507 ; GFX9-NEXT: successors: %bb.7(0x04000000), %bb.1(0x7c000000)
508 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
510 ; GFX9-NEXT: S_CBRANCH_VCCZ %bb.1, implicit $vcc
513 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
515 ; GFX9-NEXT: S_ENDPGM 0
517 successors: %bb.1(0x80000000)
519 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
520 %101:vgpr_32 = COPY $vgpr0
521 %102:vgpr_32 = COPY $vgpr1
522 %15:vreg_64 = COPY $vgpr2_vgpr3
523 %20:sreg_64 = S_MOV_B64 0
524 %30:vreg_64 = COPY %20
525 %29:vgpr_32 = GLOBAL_LOAD_DWORD killed %30, 0, 0, implicit $exec :: (load (s32), addrspace 1)
526 %6:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %29, 0, %101, 0, %102, 0, 0, implicit $mode, implicit $exec
527 %31:vgpr_32 = GLOBAL_LOAD_DWORD killed %15, 0, 0, implicit $exec :: (load (s32), addrspace 1)
528 %7:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %31, 0, %101, 0, %102, 0, 0, implicit $mode, implicit $exec
531 successors: %bb.2(0x40000000), %bb.3(0x40000000)
532 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
534 S_NOP 0, implicit %6, implicit %7
535 %16:vgpr_32(s32) = COPY $vgpr0
536 %23:sreg_32 = S_MOV_B32 1
537 %24:sreg_64 = V_CMP_LT_I32_e64 %16(s32), %23, implicit $exec
538 %0:sreg_64 = COPY %24
539 %5:sreg_64 = SI_IF %0, %bb.3, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
543 successors: %bb.3(0x80000000)
544 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
549 successors: %bb.4(0x40000000), %bb.6(0x40000000)
550 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
552 SI_END_CF %5, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
553 S_CBRANCH_EXECZ %bb.6, implicit $exec
556 successors: %bb.5(0x04000000), %bb.4(0x7c000000)
557 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
560 S_CBRANCH_EXECZ %bb.4, implicit $exec
563 successors: %bb.6(0x80000000)
564 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
569 successors: %bb.7(0x04000000), %bb.1(0x7c000000)
570 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
572 S_CBRANCH_VCCZ %bb.1, implicit $vcc
575 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
579 name: test_no_sink_def_into_loop2
580 tracksRegLiveness: true
582 isEntryFunction: true
584 ; GFX9-LABEL: name: test_no_sink_def_into_loop2
586 ; GFX9-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
587 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
589 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
590 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
591 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
592 ; GFX9-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0
593 ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_]]
594 ; GFX9-NEXT: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY3]], 0, 0, implicit $exec :: (load (s32), addrspace 1)
595 ; GFX9-NEXT: %6:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
596 ; GFX9-NEXT: [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY2]], 0, 0, implicit $exec :: (load (s32), addrspace 1)
597 ; GFX9-NEXT: %8:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD1]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
598 ; GFX9-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec
599 ; GFX9-NEXT: S_BRANCH %bb.1
602 ; GFX9-NEXT: successors: %bb.2(0x80000000)
603 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
606 ; GFX9-NEXT: S_BRANCH %bb.2
609 ; GFX9-NEXT: successors: %bb.3(0x40000000), %bb.4(0x40000000)
610 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
612 ; GFX9-NEXT: S_NOP 0, implicit %6, implicit %8
613 ; GFX9-NEXT: [[COPY4:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0
614 ; GFX9-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1
615 ; GFX9-NEXT: [[V_CMP_LT_I32_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_I32_e64 [[COPY4]](s32), [[S_MOV_B32_]], implicit $exec
616 ; GFX9-NEXT: [[SI_IF:%[0-9]+]]:sreg_64 = SI_IF [[V_CMP_LT_I32_e64_]], %bb.4, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
617 ; GFX9-NEXT: S_BRANCH %bb.3
620 ; GFX9-NEXT: successors: %bb.4(0x80000000)
621 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
624 ; GFX9-NEXT: S_BRANCH %bb.4
627 ; GFX9-NEXT: successors: %bb.5(0x40000000), %bb.7(0x40000000)
628 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
630 ; GFX9-NEXT: SI_END_CF [[SI_IF]], implicit-def dead $exec, implicit-def dead $scc, implicit $exec
631 ; GFX9-NEXT: S_CBRANCH_EXECZ %bb.7, implicit $exec
632 ; GFX9-NEXT: S_BRANCH %bb.5
635 ; GFX9-NEXT: successors: %bb.6(0x04000000), %bb.5(0x7c000000)
636 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
639 ; GFX9-NEXT: S_CBRANCH_EXECZ %bb.5, implicit $exec
640 ; GFX9-NEXT: S_BRANCH %bb.6
643 ; GFX9-NEXT: successors: %bb.7(0x80000000)
644 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
647 ; GFX9-NEXT: S_BRANCH %bb.7
650 ; GFX9-NEXT: successors: %bb.8(0x04000000), %bb.2(0x7c000000)
651 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
653 ; GFX9-NEXT: S_CBRANCH_VCCZ %bb.2, implicit $vcc
654 ; GFX9-NEXT: S_BRANCH %bb.8
657 ; GFX9-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
659 ; GFX9-NEXT: S_ENDPGM 0
661 successors: %bb.1(0x40000000), %bb.2 (0x40000000)
663 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
664 %101:vgpr_32 = COPY $vgpr0
665 %102:vgpr_32 = COPY $vgpr1
666 %15:vreg_64 = COPY $vgpr2_vgpr3
667 %20:sreg_64 = S_MOV_B64 0
668 %30:vreg_64 = COPY %20
669 %29:vgpr_32 = GLOBAL_LOAD_DWORD killed %30, 0, 0, implicit $exec :: (load (s32), addrspace 1)
670 %6:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %29, 0, %101, 0, %102, 0, 0, implicit $mode, implicit $exec
671 %31:vgpr_32 = GLOBAL_LOAD_DWORD killed %15, 0, 0, implicit $exec :: (load (s32), addrspace 1)
672 %7:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %31, 0, %101, 0, %102, 0, 0, implicit $mode, implicit $exec
673 S_CBRANCH_EXECZ %bb.2, implicit $exec
677 successors: %bb.2(0x80000000)
678 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
683 successors: %bb.3(0x40000000), %bb.4(0x40000000)
684 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
686 S_NOP 0, implicit %6, implicit %7
687 %16:vgpr_32(s32) = COPY $vgpr0
688 %23:sreg_32 = S_MOV_B32 1
689 %24:sreg_64 = V_CMP_LT_I32_e64 %16(s32), %23, implicit $exec
690 %0:sreg_64 = COPY %24
691 %5:sreg_64 = SI_IF %0, %bb.4, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
695 successors: %bb.4(0x80000000)
696 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
702 successors: %bb.5(0x40000000), %bb.7(0x40000000)
703 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
705 SI_END_CF %5, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
706 S_CBRANCH_EXECZ %bb.7, implicit $exec
710 successors: %bb.6(0x04000000), %bb.5(0x7c000000)
711 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
714 S_CBRANCH_EXECZ %bb.5, implicit $exec
718 successors: %bb.7(0x80000000)
719 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
725 successors: %bb.8(0x04000000), %bb.2(0x7c000000)
726 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
728 S_CBRANCH_VCCZ %bb.2, implicit $vcc
732 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc