1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=instruction-select %s -o - | FileCheck -check-prefix=GFX6 %s
3 # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=instruction-select %s -o - | FileCheck -check-prefix=GFX6 %s
4 # RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select %s -o - | FileCheck -check-prefix=GFX10 %s
5 # RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select %s -o - | FileCheck -check-prefix=GFX10 %s
8 name: test_freeze_s1_vgpr_to_vgpr
16 ; GFX6-LABEL: name: test_freeze_s1_vgpr_to_vgpr
17 ; GFX6: liveins: $vgpr0
19 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
20 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]]
21 ; GFX10-LABEL: name: test_freeze_s1_vgpr_to_vgpr
22 ; GFX10: liveins: $vgpr0
24 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
25 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]]
26 %0:vgpr(s32) = COPY $vgpr0
27 %1:vgpr(s1) = G_TRUNC %0(s32)
28 %2:vgpr(s1) = G_FREEZE %1
29 %3:vgpr(s32) = G_ANYEXT %2(s1)
35 name: test_freeze_s1_vgpr_to_agpr
43 ; GFX6-LABEL: name: test_freeze_s1_vgpr_to_agpr
44 ; GFX6: liveins: $vgpr0
46 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
47 ; GFX6-NEXT: $agpr0 = COPY [[COPY]]
48 ; GFX10-LABEL: name: test_freeze_s1_vgpr_to_agpr
49 ; GFX10: liveins: $vgpr0
51 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
52 ; GFX10-NEXT: $agpr0 = COPY [[COPY]]
53 %0:vgpr(s32) = COPY $vgpr0
54 %1:vgpr(s1) = G_TRUNC %0(s32)
55 %2:vgpr(s1) = G_FREEZE %1
56 %3:vgpr(s32) = G_ANYEXT %2(s1)
62 name: test_freeze_s1_vcc
69 liveins: $vgpr0, $vgpr1
70 ; GFX6-LABEL: name: test_freeze_s1_vcc
71 ; GFX6: liveins: $vgpr0, $vgpr1
73 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
74 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
75 ; GFX6-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64 = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec
76 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:sreg_64_xexec = COPY [[V_CMP_EQ_U32_e64_]]
77 ; GFX6-NEXT: S_ENDPGM 0, implicit [[COPY2]]
78 ; GFX10-LABEL: name: test_freeze_s1_vcc
79 ; GFX10: liveins: $vgpr0, $vgpr1
81 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
82 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
83 ; GFX10-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_32 = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec
84 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:sreg_32_xm0_xexec = COPY [[V_CMP_EQ_U32_e64_]]
85 ; GFX10-NEXT: S_ENDPGM 0, implicit [[COPY2]]
86 %0:vgpr(s32) = COPY $vgpr0
87 %1:vgpr(s32) = COPY $vgpr1
88 %2:vcc(s1) = G_ICMP intpred(eq), %0(s32), %1
89 %3:vcc(s1) = G_FREEZE %2
90 S_ENDPGM 0, implicit %3(s1)
95 name: test_freeze_s16_vgpr_to_vgpr
103 ; GFX6-LABEL: name: test_freeze_s16_vgpr_to_vgpr
104 ; GFX6: liveins: $vgpr0
106 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
107 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]]
108 ; GFX10-LABEL: name: test_freeze_s16_vgpr_to_vgpr
109 ; GFX10: liveins: $vgpr0
111 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
112 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]]
113 %0:vgpr(s32) = COPY $vgpr0
114 %1:vgpr(s16) = G_TRUNC %0(s32)
115 %2:vgpr(s16) = G_FREEZE %1
116 %3:vgpr(s32) = G_ANYEXT %2(s16)
117 $vgpr0 = COPY %3(s32)
122 name: test_freeze_s32_vgpr_to_vgpr
125 regBankSelected: true
130 ; GFX6-LABEL: name: test_freeze_s32_vgpr_to_vgpr
131 ; GFX6: liveins: $vgpr0
133 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
134 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]]
135 ; GFX10-LABEL: name: test_freeze_s32_vgpr_to_vgpr
136 ; GFX10: liveins: $vgpr0
138 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
139 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]]
140 %0:vgpr(s32) = COPY $vgpr0
141 %1:vgpr(s32) = G_FREEZE %0
142 $vgpr0 = COPY %1(s32)
147 name: test_freeze_s32_sgpr_to_sgpr
150 regBankSelected: true
155 ; GFX6-LABEL: name: test_freeze_s32_sgpr_to_sgpr
156 ; GFX6: liveins: $sgpr0
158 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
159 ; GFX6-NEXT: $sgpr0 = COPY [[COPY]]
160 ; GFX10-LABEL: name: test_freeze_s32_sgpr_to_sgpr
161 ; GFX10: liveins: $sgpr0
163 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
164 ; GFX10-NEXT: $sgpr0 = COPY [[COPY]]
165 %0:sgpr(s32) = COPY $sgpr0
166 %1:sgpr(s32) = G_FREEZE %0
167 $sgpr0 = COPY %1(s32)
172 name: test_freeze_s32_sgpr_to_vgpr
175 regBankSelected: true
180 ; GFX6-LABEL: name: test_freeze_s32_sgpr_to_vgpr
181 ; GFX6: liveins: $sgpr0
183 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
184 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]]
185 ; GFX10-LABEL: name: test_freeze_s32_sgpr_to_vgpr
186 ; GFX10: liveins: $sgpr0
188 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
189 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]]
190 %0:sgpr(s32) = COPY $sgpr0
191 %1:sgpr(s32) = G_FREEZE %0
192 $vgpr0 = COPY %1(s32)
197 name: test_freeze_s32_vgpr_to_agpr
200 regBankSelected: true
205 ; GFX6-LABEL: name: test_freeze_s32_vgpr_to_agpr
206 ; GFX6: liveins: $vgpr0
208 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
209 ; GFX6-NEXT: $agpr0 = COPY [[COPY]]
210 ; GFX10-LABEL: name: test_freeze_s32_vgpr_to_agpr
211 ; GFX10: liveins: $vgpr0
213 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
214 ; GFX10-NEXT: $agpr0 = COPY [[COPY]]
215 %0:vgpr(s32) = COPY $vgpr0
216 %1:vgpr(s32) = G_FREEZE %0
217 $agpr0 = COPY %1(s32)
222 name: test_freeze_s32_sgpr_to_agpr
225 regBankSelected: true
230 ; GFX6-LABEL: name: test_freeze_s32_sgpr_to_agpr
231 ; GFX6: liveins: $sgpr0
233 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
234 ; GFX6-NEXT: $agpr0 = COPY [[COPY]]
235 ; GFX10-LABEL: name: test_freeze_s32_sgpr_to_agpr
236 ; GFX10: liveins: $sgpr0
238 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
239 ; GFX10-NEXT: $agpr0 = COPY [[COPY]]
240 %0:sgpr(s32) = COPY $sgpr0
241 %1:sgpr(s32) = G_FREEZE %0
242 $agpr0 = COPY %1(s32)
247 name: test_freeze_s32_agpr_to_vgpr
250 regBankSelected: true
255 ; GFX6-LABEL: name: test_freeze_s32_agpr_to_vgpr
256 ; GFX6: liveins: $agpr0
258 ; GFX6-NEXT: [[COPY:%[0-9]+]]:agpr_32 = COPY $agpr0
259 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]]
260 ; GFX10-LABEL: name: test_freeze_s32_agpr_to_vgpr
261 ; GFX10: liveins: $agpr0
263 ; GFX10-NEXT: [[COPY:%[0-9]+]]:agpr_32 = COPY $agpr0
264 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]]
265 %0:agpr(s32) = COPY $agpr0
266 %1:agpr(s32) = G_FREEZE %0
267 $vgpr0 = COPY %1(s32)
272 name: test_freeze_s32_agpr_to_agpr
275 regBankSelected: true
280 ; GFX6-LABEL: name: test_freeze_s32_agpr_to_agpr
281 ; GFX6: liveins: $agpr0
283 ; GFX6-NEXT: [[COPY:%[0-9]+]]:agpr_32 = COPY $agpr0
284 ; GFX6-NEXT: $agpr0 = COPY [[COPY]]
285 ; GFX10-LABEL: name: test_freeze_s32_agpr_to_agpr
286 ; GFX10: liveins: $agpr0
288 ; GFX10-NEXT: [[COPY:%[0-9]+]]:agpr_32 = COPY $agpr0
289 ; GFX10-NEXT: $agpr0 = COPY [[COPY]]
290 %0:agpr(s32) = COPY $agpr0
291 %1:agpr(s32) = G_FREEZE %0
292 $agpr0 = COPY %1(s32)
297 name: test_freeze_s64
300 regBankSelected: true
304 liveins: $vgpr0_vgpr1
305 ; GFX6-LABEL: name: test_freeze_s64
306 ; GFX6: liveins: $vgpr0_vgpr1
308 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
309 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[COPY]]
310 ; GFX10-LABEL: name: test_freeze_s64
311 ; GFX10: liveins: $vgpr0_vgpr1
313 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
314 ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[COPY]]
315 %0:vgpr(s64) = COPY $vgpr0_vgpr1
316 %1:vgpr(s64) = G_FREEZE %0
317 $vgpr0_vgpr1 = COPY %1(s64)
322 name: test_freeze_s128
325 regBankSelected: true
329 liveins: $vgpr0_vgpr1_vgpr2_vgpr3
330 ; GFX6-LABEL: name: test_freeze_s128
331 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
333 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
334 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[COPY]]
335 ; GFX10-LABEL: name: test_freeze_s128
336 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
338 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
339 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[COPY]]
340 %0:vgpr(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
341 %1:vgpr(s128) = G_FREEZE %0
342 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(s128)
347 name: test_freeze_256
350 regBankSelected: true
354 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
355 ; GFX6-LABEL: name: test_freeze_256
356 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
358 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
359 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[COPY]]
360 ; GFX10-LABEL: name: test_freeze_256
361 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
363 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
364 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[COPY]]
365 %0:vgpr(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
366 %1:vgpr(s256) = G_FREEZE %0
367 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1(s256)
372 name: test_freeze_s512
375 regBankSelected: true
379 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
380 ; GFX6-LABEL: name: test_freeze_s512
381 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
383 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_512 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
384 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[COPY]]
385 ; GFX10-LABEL: name: test_freeze_s512
386 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
388 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_512 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
389 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[COPY]]
390 %0:vgpr(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
391 %1:vgpr(s512) = G_FREEZE %0
392 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %1(s512)
397 name: test_freeze_v2s32
400 regBankSelected: true
404 liveins: $vgpr0_vgpr1
405 ; GFX6-LABEL: name: test_freeze_v2s32
406 ; GFX6: liveins: $vgpr0_vgpr1
408 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
409 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[COPY]]
410 ; GFX10-LABEL: name: test_freeze_v2s32
411 ; GFX10: liveins: $vgpr0_vgpr1
413 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
414 ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[COPY]]
415 %0:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1
416 %1:vgpr(<2 x s32>) = G_FREEZE %0
417 $vgpr0_vgpr1 = COPY %1(<2 x s32>)
422 name: test_freeze_v3s32
425 regBankSelected: true
429 liveins: $vgpr0_vgpr1_vgpr2
430 ; GFX6-LABEL: name: test_freeze_v3s32
431 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2
433 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr2
434 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[COPY]]
435 ; GFX10-LABEL: name: test_freeze_v3s32
436 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2
438 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr2
439 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[COPY]]
440 %0:vgpr(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
441 %1:vgpr(<3 x s32>) = G_FREEZE %0
442 $vgpr0_vgpr1_vgpr2 = COPY %1(<3 x s32>)
447 name: test_freeze_v4s32
450 regBankSelected: true
454 liveins: $vgpr0_vgpr1_vgpr2_vgpr3
455 ; GFX6-LABEL: name: test_freeze_v4s32
456 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
458 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
459 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[COPY]]
460 ; GFX10-LABEL: name: test_freeze_v4s32
461 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
463 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
464 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[COPY]]
465 %0:vgpr(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
466 %1:vgpr(<4 x s32>) = G_FREEZE %0
467 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(<4 x s32>)
472 name: test_freeze_v5s32
475 regBankSelected: true
479 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4
480 ; GFX6-LABEL: name: test_freeze_v5s32
481 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4
483 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_160 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4
484 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY [[COPY]]
485 ; GFX10-LABEL: name: test_freeze_v5s32
486 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4
488 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_160 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4
489 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY [[COPY]]
490 %0:vgpr(<5 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4
491 %1:vgpr(<5 x s32>) = G_FREEZE %0
492 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY %1(<5 x s32>)
497 name: test_freeze_v8s32
500 regBankSelected: true
504 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
505 ; GFX6-LABEL: name: test_freeze_v8s32
506 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
508 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
509 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[COPY]]
510 ; GFX10-LABEL: name: test_freeze_v8s32
511 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
513 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
514 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[COPY]]
515 %0:vgpr(<8 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
516 %1:vgpr(<8 x s32>) = G_FREEZE %0
517 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1(<8 x s32>)
522 name: test_freeze_v16s32
525 regBankSelected: true
529 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
530 ; GFX6-LABEL: name: test_freeze_v16s32
531 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
533 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_512 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
534 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[COPY]]
535 ; GFX10-LABEL: name: test_freeze_v16s32
536 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
538 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_512 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
539 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[COPY]]
540 %0:vgpr(<16 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
541 %1:vgpr(<16 x s32>) = G_FREEZE %0
542 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %1(<16 x s32>)
547 name: test_freeze_v2s16
550 regBankSelected: true
555 ; GFX6-LABEL: name: test_freeze_v2s16
556 ; GFX6: liveins: $vgpr0
558 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
559 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]]
560 ; GFX10-LABEL: name: test_freeze_v2s16
561 ; GFX10: liveins: $vgpr0
563 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
564 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]]
565 %0:vgpr(<2 x s16>) = COPY $vgpr0
566 %1:vgpr(<2 x s16>) = G_FREEZE %0
567 $vgpr0 = COPY %1(<2 x s16>)
572 name: test_freeze_v4s16
575 regBankSelected: true
579 liveins: $vgpr0_vgpr1
580 ; GFX6-LABEL: name: test_freeze_v4s16
581 ; GFX6: liveins: $vgpr0_vgpr1
583 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
584 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[COPY]]
585 ; GFX10-LABEL: name: test_freeze_v4s16
586 ; GFX10: liveins: $vgpr0_vgpr1
588 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
589 ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[COPY]]
590 %0:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1
591 %1:vgpr(<4 x s16>) = G_FREEZE %0
592 $vgpr0_vgpr1 = COPY %1(<4 x s16>)
597 name: test_freeze_v6s16
600 regBankSelected: true
604 liveins: $vgpr0_vgpr1_vgpr2
605 ; GFX6-LABEL: name: test_freeze_v6s16
606 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2
608 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr2
609 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[COPY]]
610 ; GFX10-LABEL: name: test_freeze_v6s16
611 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2
613 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr2
614 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[COPY]]
615 %0:vgpr(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2
616 %1:vgpr(<6 x s16>) = G_FREEZE %0
617 $vgpr0_vgpr1_vgpr2 = COPY %1(<6 x s16>)
622 name: test_freeze_v8s16
625 regBankSelected: true
629 liveins: $vgpr0_vgpr1_vgpr2_vgpr3
630 ; GFX6-LABEL: name: test_freeze_v8s16
631 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
633 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
634 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[COPY]]
635 ; GFX10-LABEL: name: test_freeze_v8s16
636 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
638 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
639 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[COPY]]
640 %0:vgpr(<8 x s16>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
641 %1:vgpr(<8 x s16>) = G_FREEZE %0
642 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(<8 x s16>)
647 name: test_freeze_v2s64
650 regBankSelected: true
654 liveins: $vgpr0_vgpr1_vgpr2_vgpr3
655 ; GFX6-LABEL: name: test_freeze_v2s64
656 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
658 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
659 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[COPY]]
660 ; GFX10-LABEL: name: test_freeze_v2s64
661 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
663 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
664 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[COPY]]
665 %0:vgpr(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
666 %1:vgpr(<2 x s64>) = G_FREEZE %0
667 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(<2 x s64>)
675 regBankSelected: true
679 liveins: $vgpr0_vgpr1
680 ; GFX6-LABEL: name: test_freeze_p0
681 ; GFX6: liveins: $vgpr0_vgpr1
683 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
684 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[COPY]]
685 ; GFX10-LABEL: name: test_freeze_p0
686 ; GFX10: liveins: $vgpr0_vgpr1
688 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
689 ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[COPY]]
690 %0:vgpr(p0) = COPY $vgpr0_vgpr1
691 %1:vgpr(p0) = G_FREEZE %0
692 $vgpr0_vgpr1 = COPY %1(p0)
700 regBankSelected: true
704 liveins: $vgpr0_vgpr1
705 ; GFX6-LABEL: name: test_freeze_p1
706 ; GFX6: liveins: $vgpr0_vgpr1
708 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
709 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[COPY]]
710 ; GFX10-LABEL: name: test_freeze_p1
711 ; GFX10: liveins: $vgpr0_vgpr1
713 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
714 ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[COPY]]
715 %0:vgpr(p1) = COPY $vgpr0_vgpr1
716 %1:vgpr(p1) = G_FREEZE %0
717 $vgpr0_vgpr1 = COPY %1(p1)
725 regBankSelected: true
730 ; GFX6-LABEL: name: test_freeze_p2
731 ; GFX6: liveins: $vgpr0
733 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
734 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]]
735 ; GFX10-LABEL: name: test_freeze_p2
736 ; GFX10: liveins: $vgpr0
738 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
739 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]]
740 %0:vgpr(p2) = COPY $vgpr0
741 %1:vgpr(p2) = G_FREEZE %0
750 regBankSelected: true
755 ; GFX6-LABEL: name: test_freeze_p3
756 ; GFX6: liveins: $vgpr0
758 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
759 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]]
760 ; GFX10-LABEL: name: test_freeze_p3
761 ; GFX10: liveins: $vgpr0
763 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
764 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]]
765 %0:vgpr(p3) = COPY $vgpr0
766 %1:vgpr(p3) = G_FREEZE %0
775 regBankSelected: true
779 liveins: $vgpr0_vgpr1
780 ; GFX6-LABEL: name: test_freeze_p4
781 ; GFX6: liveins: $vgpr0_vgpr1
783 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
784 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[COPY]]
785 ; GFX10-LABEL: name: test_freeze_p4
786 ; GFX10: liveins: $vgpr0_vgpr1
788 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
789 ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[COPY]]
790 %0:vgpr(p4) = COPY $vgpr0_vgpr1
791 %1:vgpr(p4) = G_FREEZE %0
792 $vgpr0_vgpr1 = COPY %1(p4)
800 regBankSelected: true
805 ; GFX6-LABEL: name: test_freeze_p5
806 ; GFX6: liveins: $vgpr0
808 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
809 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]]
810 ; GFX10-LABEL: name: test_freeze_p5
811 ; GFX10: liveins: $vgpr0
813 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
814 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]]
815 %0:vgpr(p5) = COPY $vgpr0
816 %1:vgpr(p5) = G_FREEZE %0
822 name: test_freeze_p999
825 regBankSelected: true
829 liveins: $vgpr0_vgpr1
830 ; GFX6-LABEL: name: test_freeze_p999
831 ; GFX6: liveins: $vgpr0_vgpr1
833 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
834 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[COPY]]
835 ; GFX10-LABEL: name: test_freeze_p999
836 ; GFX10: liveins: $vgpr0_vgpr1
838 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
839 ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[COPY]]
840 %0:vgpr(p999) = COPY $vgpr0_vgpr1
841 %1:vgpr(p999) = G_FREEZE %0
842 $vgpr0_vgpr1 = COPY %1(p999)