1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=WAVE64 %s
3 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -mattr=+wavefrontsize32,-wavefrontsize64 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=WAVE32 %s
4 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+wavefrontsize32,-wavefrontsize64 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=WAVE32 %s
17 ; WAVE64-LABEL: name: copy
18 ; WAVE64: liveins: $sgpr2_sgpr3
20 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
21 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY [[COPY]]
22 ; WAVE64-NEXT: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
23 ; WAVE64-NEXT: FLAT_STORE_DWORD [[COPY1]], [[DEF]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 1)
25 ; WAVE32-LABEL: name: copy
26 ; WAVE32: liveins: $sgpr2_sgpr3
28 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
29 ; WAVE32-NEXT: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
30 ; WAVE32-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
31 ; WAVE32-NEXT: GLOBAL_STORE_DWORD_SADDR [[V_MOV_B32_e32_]], [[DEF]], [[COPY]], 0, 0, implicit $exec :: (store (s32), addrspace 1)
32 %0:sgpr(p1) = COPY $sgpr2_sgpr3
34 %2:vgpr(s32) = G_IMPLICIT_DEF
35 G_STORE %2, %1 :: (store (s32), addrspace 1)
39 name: copy_vcc_bank_sgpr_bank
45 liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc
47 ; WAVE64-LABEL: name: copy_vcc_bank_sgpr_bank
48 ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc
50 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
51 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
52 ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3
53 ; WAVE64-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc
54 ; WAVE64-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, [[COPY3]], implicit-def dead $scc
55 ; WAVE64-NEXT: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U32_e64 0, [[S_AND_B32_]], implicit $exec
56 ; WAVE64-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_]], implicit $exec
57 ; WAVE64-NEXT: FLAT_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 1)
59 ; WAVE32-LABEL: name: copy_vcc_bank_sgpr_bank
60 ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc
62 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
63 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
64 ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3
65 ; WAVE32-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc
66 ; WAVE32-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, [[COPY3]], implicit-def dead $scc
67 ; WAVE32-NEXT: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_32_xm0_xexec = V_CMP_NE_U32_e64 0, [[S_AND_B32_]], implicit $exec
68 ; WAVE32-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_]], implicit $exec
69 ; WAVE32-NEXT: GLOBAL_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_]], 0, 0, implicit $exec :: (store (s32), addrspace 1)
70 %0:vgpr(p1) = COPY $vgpr0_vgpr1
71 %1:vgpr(s32) = COPY $vgpr2
72 %2:vgpr(s32) = COPY $vgpr3
73 %3:sgpr(s1) = COPY $scc
75 %5:vgpr(s32) = G_SELECT %4, %1, %2
76 G_STORE %5, %0 :: (store (s32), addrspace 1)
80 name: copy_vcc_bank_sgpr_bank_2_uses
86 liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc
88 ; WAVE64-LABEL: name: copy_vcc_bank_sgpr_bank_2_uses
89 ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc
91 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
92 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
93 ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3
94 ; WAVE64-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc
95 ; WAVE64-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, [[COPY3]], implicit-def dead $scc
96 ; WAVE64-NEXT: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U32_e64 0, [[S_AND_B32_]], implicit $exec
97 ; WAVE64-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_]], implicit $exec
98 ; WAVE64-NEXT: [[S_AND_B32_1:%[0-9]+]]:sreg_32 = S_AND_B32 1, [[COPY3]], implicit-def dead $scc
99 ; WAVE64-NEXT: [[V_CMP_NE_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U32_e64 0, [[S_AND_B32_1]], implicit $exec
100 ; WAVE64-NEXT: [[V_CNDMASK_B32_e64_1:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[V_CNDMASK_B32_e64_]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_1]], implicit $exec
101 ; WAVE64-NEXT: FLAT_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 1)
103 ; WAVE32-LABEL: name: copy_vcc_bank_sgpr_bank_2_uses
104 ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc
105 ; WAVE32-NEXT: {{ $}}
106 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
107 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
108 ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3
109 ; WAVE32-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc
110 ; WAVE32-NEXT: [[COPY4:%[0-9]+]]:sreg_32_xm0_xexec = COPY [[COPY3]]
111 ; WAVE32-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[COPY4]], implicit $exec
112 ; WAVE32-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, [[COPY3]], implicit-def dead $scc
113 ; WAVE32-NEXT: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_32_xm0_xexec = V_CMP_NE_U32_e64 0, [[S_AND_B32_]], implicit $exec
114 ; WAVE32-NEXT: [[V_CNDMASK_B32_e64_1:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[V_CNDMASK_B32_e64_]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_]], implicit $exec
115 ; WAVE32-NEXT: GLOBAL_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_1]], 0, 0, implicit $exec :: (store (s32), addrspace 1)
116 %0:vgpr(p1) = COPY $vgpr0_vgpr1
117 %1:vgpr(s32) = COPY $vgpr2
118 %2:vgpr(s32) = COPY $vgpr3
119 %3:sgpr(s1) = COPY $scc
121 %5:vgpr(s32) = G_SELECT %4, %1, %2
123 %7:vgpr(s32) = G_SELECT %6, %1, %5
124 G_STORE %7, %0 :: (store (s32), addrspace 1)
129 name: copy_vcc_bank_scc_physreg
131 regBankSelected: true
135 liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc
137 ; WAVE64-LABEL: name: copy_vcc_bank_scc_physreg
138 ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc
139 ; WAVE64-NEXT: {{ $}}
140 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
141 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
142 ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3
143 ; WAVE64-NEXT: [[COPY3:%[0-9]+]]:sreg_64_xexec = COPY $scc
144 ; WAVE64-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[COPY3]], implicit $exec
145 ; WAVE64-NEXT: FLAT_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 1)
147 ; WAVE32-LABEL: name: copy_vcc_bank_scc_physreg
148 ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc
149 ; WAVE32-NEXT: {{ $}}
150 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
151 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
152 ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3
153 ; WAVE32-NEXT: [[COPY3:%[0-9]+]]:sreg_32_xm0_xexec = COPY $scc
154 ; WAVE32-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[COPY3]], implicit $exec
155 ; WAVE32-NEXT: GLOBAL_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_]], 0, 0, implicit $exec :: (store (s32), addrspace 1)
156 %0:vgpr(p1) = COPY $vgpr0_vgpr1
157 %1:vgpr(s32) = COPY $vgpr2
158 %2:vgpr(s32) = COPY $vgpr3
159 %3:vcc(s1) = COPY $scc
160 %5:vgpr(s32) = G_SELECT %3, %1, %2
161 G_STORE %5, %0 :: (store (s32), addrspace 1)
165 name: copy_sgpr_no_type
167 regBankSelected: true
173 ; WAVE64-LABEL: name: copy_sgpr_no_type
174 ; WAVE64: liveins: $sgpr0
175 ; WAVE64-NEXT: {{ $}}
176 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_32_xm0 = COPY $sgpr0
177 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY]]
179 ; WAVE32-LABEL: name: copy_sgpr_no_type
180 ; WAVE32: liveins: $sgpr0
181 ; WAVE32-NEXT: {{ $}}
182 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_32_xm0 = COPY $sgpr0
183 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY]]
184 %0:sreg_32_xm0 = COPY $sgpr0
185 %1:sreg_32_xm0 = COPY %0
186 S_ENDPGM 0, implicit %1
192 name: copy_vgpr_no_type
194 regBankSelected: true
200 ; WAVE64-LABEL: name: copy_vgpr_no_type
201 ; WAVE64: liveins: $vgpr0
202 ; WAVE64-NEXT: {{ $}}
203 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
204 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY]]
206 ; WAVE32-LABEL: name: copy_vgpr_no_type
207 ; WAVE32: liveins: $vgpr0
208 ; WAVE32-NEXT: {{ $}}
209 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
210 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY]]
211 %0:vgpr_32 = COPY $vgpr0
213 S_ENDPGM 0, implicit %1
221 regBankSelected: true
226 liveins: $sgpr0_sgpr1
227 ; WAVE64-LABEL: name: copy_maybe_vcc
228 ; WAVE64: liveins: $sgpr0_sgpr1
229 ; WAVE64-NEXT: {{ $}}
230 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_64_xexec = COPY $sgpr0_sgpr1
231 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY]]
233 ; WAVE32-LABEL: name: copy_maybe_vcc
234 ; WAVE32: liveins: $sgpr0_sgpr1
235 ; WAVE32-NEXT: {{ $}}
236 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_64_xexec = COPY $sgpr0_sgpr1
237 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY]]
238 %0:sreg_64_xexec = COPY $sgpr0_sgpr1
239 %1:sreg_64_xexec = COPY %0
240 S_ENDPGM 0, implicit %1
244 # FIXME: This is malformed. There should never be a trunc to vcc.
247 name: copy_s1_vcc_to_vcc
249 regBankSelected: true
254 liveins: $sgpr0_sgpr1
256 ; WAVE64-LABEL: name: copy_s1_vcc_to_vcc
257 ; WAVE64: liveins: $sgpr0_sgpr1
258 ; WAVE64-NEXT: {{ $}}
259 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
260 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sreg_64_xexec = COPY [[COPY]]
261 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY1]]
263 ; WAVE32-LABEL: name: copy_s1_vcc_to_vcc
264 ; WAVE32: liveins: $sgpr0_sgpr1
265 ; WAVE32-NEXT: {{ $}}
266 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
267 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sreg_32_xm0_xexec = COPY [[COPY]]
268 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY1]]
269 %0:sgpr(s32) = COPY $sgpr0
270 %1:vcc(s1) = G_TRUNC %0
272 S_ENDPGM 0, implicit %2
278 name: copy_s64_to_vcc
280 regBankSelected: true
285 liveins: $sgpr0_sgpr1
286 ; WAVE64-LABEL: name: copy_s64_to_vcc
287 ; WAVE64: liveins: $sgpr0_sgpr1
288 ; WAVE64-NEXT: {{ $}}
289 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
290 ; WAVE64-NEXT: $vcc = COPY [[COPY]]
291 ; WAVE64-NEXT: S_ENDPGM 0, implicit $vcc
293 ; WAVE32-LABEL: name: copy_s64_to_vcc
294 ; WAVE32: liveins: $sgpr0_sgpr1
295 ; WAVE32-NEXT: {{ $}}
296 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
297 ; WAVE32-NEXT: $vcc = COPY [[COPY]]
298 ; WAVE32-NEXT: S_ENDPGM 0, implicit $vcc_lo
299 %0:sgpr(s64) = COPY $sgpr0_sgpr1
301 S_ENDPGM 0, implicit $vcc
307 name: copy_s32_to_vcc_lo
309 regBankSelected: true
315 ; WAVE64-LABEL: name: copy_s32_to_vcc_lo
316 ; WAVE64: liveins: $sgpr0
317 ; WAVE64-NEXT: {{ $}}
318 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
319 ; WAVE64-NEXT: $vcc_lo = COPY [[COPY]]
320 ; WAVE64-NEXT: S_ENDPGM 0, implicit $vcc
322 ; WAVE32-LABEL: name: copy_s32_to_vcc_lo
323 ; WAVE32: liveins: $sgpr0
324 ; WAVE32-NEXT: {{ $}}
325 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
326 ; WAVE32-NEXT: $vcc_lo = COPY [[COPY]]
327 ; WAVE32-NEXT: S_ENDPGM 0, implicit $vcc_lo
328 %0:sgpr(s32) = COPY $sgpr0
330 S_ENDPGM 0, implicit $vcc
336 name: copy_vcc_to_s64
338 regBankSelected: true
344 ; WAVE64-LABEL: name: copy_vcc_to_s64
345 ; WAVE64: liveins: $vcc
346 ; WAVE64-NEXT: {{ $}}
347 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $vcc
348 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY]]
350 ; WAVE32-LABEL: name: copy_vcc_to_s64
351 ; WAVE32: liveins: $vcc
352 ; WAVE32-NEXT: {{ $}}
353 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $vcc
354 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY]]
355 %0:sgpr(s64) = COPY $vcc
356 S_ENDPGM 0, implicit %0
362 name: copy_vcc_lo_to_s32
364 regBankSelected: true
370 ; WAVE64-LABEL: name: copy_vcc_lo_to_s32
371 ; WAVE64: liveins: $vcc
372 ; WAVE64-NEXT: {{ $}}
373 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $vcc_lo
374 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY]]
376 ; WAVE32-LABEL: name: copy_vcc_lo_to_s32
377 ; WAVE32: liveins: $vcc
378 ; WAVE32-NEXT: {{ $}}
379 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $vcc_lo
380 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY]]
381 %0:sgpr(s32) = COPY $vcc_lo
382 S_ENDPGM 0, implicit %0
390 regBankSelected: true
391 tracksRegLiveness: true
394 liveins: $sgpr0_sgpr1
396 ; WAVE64-LABEL: name: copy_s1_to_vcc
397 ; WAVE64: liveins: $sgpr0_sgpr1
398 ; WAVE64-NEXT: {{ $}}
399 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
400 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
401 ; WAVE64-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, [[COPY1]], implicit-def dead $scc
402 ; WAVE64-NEXT: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_64 = V_CMP_NE_U32_e64 0, [[S_AND_B32_]], implicit $exec
403 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[V_CMP_NE_U32_e64_]]
405 ; WAVE32-LABEL: name: copy_s1_to_vcc
406 ; WAVE32: liveins: $sgpr0_sgpr1
407 ; WAVE32-NEXT: {{ $}}
408 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
409 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
410 ; WAVE32-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, [[COPY1]], implicit-def dead $scc
411 ; WAVE32-NEXT: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_32 = V_CMP_NE_U32_e64 0, [[S_AND_B32_]], implicit $exec
412 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[V_CMP_NE_U32_e64_]]
413 %0:sgpr(s64) = COPY $sgpr0_sgpr1
414 %1:sgpr(s1) = G_TRUNC %0(s64)
415 %2:vcc(s1) = COPY %1(s1)
416 S_ENDPGM 0, implicit %2
422 name: copy_s1_false_to_vcc
424 regBankSelected: true
425 tracksRegLiveness: true
430 ; WAVE64-LABEL: name: copy_s1_false_to_vcc
431 ; WAVE64: liveins: $sgpr0
432 ; WAVE64-NEXT: {{ $}}
433 ; WAVE64-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0
434 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[S_MOV_B64_]]
436 ; WAVE32-LABEL: name: copy_s1_false_to_vcc
437 ; WAVE32: liveins: $sgpr0
438 ; WAVE32-NEXT: {{ $}}
439 ; WAVE32-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
440 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[S_MOV_B32_]]
441 %0:sgpr(s1) = G_CONSTANT i1 false
442 %1:vcc(s1) = COPY %0(s1)
443 S_ENDPGM 0, implicit %1
449 name: copy_s1_true_to_vcc
451 regBankSelected: true
452 tracksRegLiveness: true
457 ; WAVE64-LABEL: name: copy_s1_true_to_vcc
458 ; WAVE64: liveins: $sgpr0
459 ; WAVE64-NEXT: {{ $}}
460 ; WAVE64-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 -1
461 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[S_MOV_B64_]]
463 ; WAVE32-LABEL: name: copy_s1_true_to_vcc
464 ; WAVE32: liveins: $sgpr0
465 ; WAVE32-NEXT: {{ $}}
466 ; WAVE32-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 -1
467 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[S_MOV_B32_]]
468 %0:sgpr(s1) = G_CONSTANT i1 true
469 %1:vcc(s1) = COPY %0(s1)
470 S_ENDPGM 0, implicit %1