xref: /llvm-project/llvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-freeze.mir (revision 806761a7629df268c8aed49657aeccffa6bca449)
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
6
7---
8name:            test_freeze_s1_vgpr_to_vgpr
9alignment:       1
10legalized:       true
11regBankSelected: true
12
13body: |
14  bb.0:
15    liveins: $vgpr0
16    ; GFX6-LABEL: name: test_freeze_s1_vgpr_to_vgpr
17    ; GFX6: liveins: $vgpr0
18    ; GFX6-NEXT: {{  $}}
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
23    ; GFX10-NEXT: {{  $}}
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)
30    $vgpr0 = COPY %3(s32)
31
32...
33
34---
35name:            test_freeze_s1_vgpr_to_agpr
36alignment:       1
37legalized:       true
38regBankSelected: true
39
40body: |
41  bb.0:
42    liveins: $vgpr0
43    ; GFX6-LABEL: name: test_freeze_s1_vgpr_to_agpr
44    ; GFX6: liveins: $vgpr0
45    ; GFX6-NEXT: {{  $}}
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
50    ; GFX10-NEXT: {{  $}}
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)
57    $agpr0 = COPY %3(s32)
58
59...
60
61---
62name:            test_freeze_s1_vcc
63alignment:       1
64legalized:       true
65regBankSelected: true
66
67body: |
68  bb.0:
69    liveins: $vgpr0, $vgpr1
70    ; GFX6-LABEL: name: test_freeze_s1_vcc
71    ; GFX6: liveins: $vgpr0, $vgpr1
72    ; GFX6-NEXT: {{  $}}
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
80    ; GFX10-NEXT: {{  $}}
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)
91
92...
93
94---
95name:            test_freeze_s16_vgpr_to_vgpr
96alignment:       1
97legalized:       true
98regBankSelected: true
99
100body: |
101  bb.0:
102    liveins: $vgpr0
103    ; GFX6-LABEL: name: test_freeze_s16_vgpr_to_vgpr
104    ; GFX6: liveins: $vgpr0
105    ; GFX6-NEXT: {{  $}}
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
110    ; GFX10-NEXT: {{  $}}
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)
118
119...
120
121---
122name:            test_freeze_s32_vgpr_to_vgpr
123alignment:       1
124legalized:       true
125regBankSelected: true
126
127body: |
128  bb.0:
129    liveins: $vgpr0
130    ; GFX6-LABEL: name: test_freeze_s32_vgpr_to_vgpr
131    ; GFX6: liveins: $vgpr0
132    ; GFX6-NEXT: {{  $}}
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
137    ; GFX10-NEXT: {{  $}}
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)
143
144...
145
146---
147name:            test_freeze_s32_sgpr_to_sgpr
148alignment:       1
149legalized:       true
150regBankSelected: true
151
152body: |
153  bb.0:
154    liveins: $sgpr0
155    ; GFX6-LABEL: name: test_freeze_s32_sgpr_to_sgpr
156    ; GFX6: liveins: $sgpr0
157    ; GFX6-NEXT: {{  $}}
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
162    ; GFX10-NEXT: {{  $}}
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)
168
169...
170
171---
172name:            test_freeze_s32_sgpr_to_vgpr
173alignment:       1
174legalized:       true
175regBankSelected: true
176
177body: |
178  bb.0:
179    liveins: $sgpr0
180    ; GFX6-LABEL: name: test_freeze_s32_sgpr_to_vgpr
181    ; GFX6: liveins: $sgpr0
182    ; GFX6-NEXT: {{  $}}
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
187    ; GFX10-NEXT: {{  $}}
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)
193
194...
195
196---
197name:            test_freeze_s32_vgpr_to_agpr
198alignment:       1
199legalized:       true
200regBankSelected: true
201
202body: |
203  bb.0:
204    liveins: $vgpr0
205    ; GFX6-LABEL: name: test_freeze_s32_vgpr_to_agpr
206    ; GFX6: liveins: $vgpr0
207    ; GFX6-NEXT: {{  $}}
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
212    ; GFX10-NEXT: {{  $}}
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)
218
219...
220
221---
222name:            test_freeze_s32_sgpr_to_agpr
223alignment:       1
224legalized:       true
225regBankSelected: true
226
227body: |
228  bb.0:
229    liveins: $sgpr0
230    ; GFX6-LABEL: name: test_freeze_s32_sgpr_to_agpr
231    ; GFX6: liveins: $sgpr0
232    ; GFX6-NEXT: {{  $}}
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
237    ; GFX10-NEXT: {{  $}}
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)
243
244...
245
246---
247name:            test_freeze_s32_agpr_to_vgpr
248alignment:       1
249legalized:       true
250regBankSelected: true
251
252body: |
253  bb.0:
254    liveins: $agpr0
255    ; GFX6-LABEL: name: test_freeze_s32_agpr_to_vgpr
256    ; GFX6: liveins: $agpr0
257    ; GFX6-NEXT: {{  $}}
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
262    ; GFX10-NEXT: {{  $}}
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)
268
269...
270
271---
272name:            test_freeze_s32_agpr_to_agpr
273alignment:       1
274legalized:       true
275regBankSelected: true
276
277body: |
278  bb.0:
279    liveins: $agpr0
280    ; GFX6-LABEL: name: test_freeze_s32_agpr_to_agpr
281    ; GFX6: liveins: $agpr0
282    ; GFX6-NEXT: {{  $}}
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
287    ; GFX10-NEXT: {{  $}}
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)
293
294...
295
296---
297name:            test_freeze_s64
298alignment:       1
299legalized:       true
300regBankSelected: true
301
302body: |
303  bb.0:
304    liveins: $vgpr0_vgpr1
305    ; GFX6-LABEL: name: test_freeze_s64
306    ; GFX6: liveins: $vgpr0_vgpr1
307    ; GFX6-NEXT: {{  $}}
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
312    ; GFX10-NEXT: {{  $}}
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)
318
319...
320
321---
322name:            test_freeze_s128
323alignment:       1
324legalized:       true
325regBankSelected: true
326
327body: |
328  bb.0:
329    liveins: $vgpr0_vgpr1_vgpr2_vgpr3
330    ; GFX6-LABEL: name: test_freeze_s128
331    ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
332    ; GFX6-NEXT: {{  $}}
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
337    ; GFX10-NEXT: {{  $}}
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)
343
344...
345
346---
347name:            test_freeze_256
348alignment:       1
349legalized:       true
350regBankSelected: true
351
352body: |
353  bb.0:
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
357    ; GFX6-NEXT: {{  $}}
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
362    ; GFX10-NEXT: {{  $}}
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)
368
369...
370
371---
372name:            test_freeze_s512
373alignment:       1
374legalized:       true
375regBankSelected: true
376
377body: |
378  bb.0:
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
382    ; GFX6-NEXT: {{  $}}
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
387    ; GFX10-NEXT: {{  $}}
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)
393
394...
395
396---
397name:            test_freeze_v2s32
398alignment:       1
399legalized:       true
400regBankSelected: true
401
402body: |
403  bb.0:
404    liveins: $vgpr0_vgpr1
405    ; GFX6-LABEL: name: test_freeze_v2s32
406    ; GFX6: liveins: $vgpr0_vgpr1
407    ; GFX6-NEXT: {{  $}}
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
412    ; GFX10-NEXT: {{  $}}
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>)
418
419...
420
421---
422name:            test_freeze_v3s32
423alignment:       1
424legalized:       true
425regBankSelected: true
426
427body: |
428  bb.0:
429    liveins: $vgpr0_vgpr1_vgpr2
430    ; GFX6-LABEL: name: test_freeze_v3s32
431    ; GFX6: liveins: $vgpr0_vgpr1_vgpr2
432    ; GFX6-NEXT: {{  $}}
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
437    ; GFX10-NEXT: {{  $}}
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>)
443
444...
445
446---
447name:            test_freeze_v4s32
448alignment:       1
449legalized:       true
450regBankSelected: true
451
452body: |
453  bb.0:
454    liveins: $vgpr0_vgpr1_vgpr2_vgpr3
455    ; GFX6-LABEL: name: test_freeze_v4s32
456    ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
457    ; GFX6-NEXT: {{  $}}
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
462    ; GFX10-NEXT: {{  $}}
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>)
468
469...
470
471---
472name:            test_freeze_v5s32
473alignment:       1
474legalized:       true
475regBankSelected: true
476
477body: |
478  bb.0:
479    liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4
480    ; GFX6-LABEL: name: test_freeze_v5s32
481    ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4
482    ; GFX6-NEXT: {{  $}}
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
487    ; GFX10-NEXT: {{  $}}
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>)
493
494...
495
496---
497name:            test_freeze_v8s32
498alignment:       1
499legalized:       true
500regBankSelected: true
501
502body: |
503  bb.0:
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
507    ; GFX6-NEXT: {{  $}}
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
512    ; GFX10-NEXT: {{  $}}
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>)
518
519...
520
521---
522name:            test_freeze_v16s32
523alignment:       1
524legalized:       true
525regBankSelected: true
526
527body: |
528  bb.0:
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
532    ; GFX6-NEXT: {{  $}}
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
537    ; GFX10-NEXT: {{  $}}
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>)
543
544...
545
546---
547name:            test_freeze_v2s16
548alignment:       1
549legalized:       true
550regBankSelected: true
551
552body: |
553  bb.0:
554    liveins: $vgpr0
555    ; GFX6-LABEL: name: test_freeze_v2s16
556    ; GFX6: liveins: $vgpr0
557    ; GFX6-NEXT: {{  $}}
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
562    ; GFX10-NEXT: {{  $}}
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>)
568
569...
570
571---
572name:            test_freeze_v4s16
573alignment:       1
574legalized:       true
575regBankSelected: true
576
577body: |
578  bb.0:
579    liveins: $vgpr0_vgpr1
580    ; GFX6-LABEL: name: test_freeze_v4s16
581    ; GFX6: liveins: $vgpr0_vgpr1
582    ; GFX6-NEXT: {{  $}}
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
587    ; GFX10-NEXT: {{  $}}
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>)
593
594...
595
596---
597name:            test_freeze_v6s16
598alignment:       1
599legalized:       true
600regBankSelected: true
601
602body: |
603  bb.0:
604    liveins: $vgpr0_vgpr1_vgpr2
605    ; GFX6-LABEL: name: test_freeze_v6s16
606    ; GFX6: liveins: $vgpr0_vgpr1_vgpr2
607    ; GFX6-NEXT: {{  $}}
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
612    ; GFX10-NEXT: {{  $}}
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>)
618
619...
620
621---
622name:            test_freeze_v8s16
623alignment:       1
624legalized:       true
625regBankSelected: true
626
627body: |
628  bb.0:
629    liveins: $vgpr0_vgpr1_vgpr2_vgpr3
630    ; GFX6-LABEL: name: test_freeze_v8s16
631    ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
632    ; GFX6-NEXT: {{  $}}
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
637    ; GFX10-NEXT: {{  $}}
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>)
643
644...
645
646---
647name:            test_freeze_v2s64
648alignment:       1
649legalized:       true
650regBankSelected: true
651
652body: |
653  bb.0:
654    liveins: $vgpr0_vgpr1_vgpr2_vgpr3
655    ; GFX6-LABEL: name: test_freeze_v2s64
656    ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
657    ; GFX6-NEXT: {{  $}}
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
662    ; GFX10-NEXT: {{  $}}
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>)
668
669...
670
671---
672name:            test_freeze_p0
673alignment:       1
674legalized:       true
675regBankSelected: true
676
677body: |
678  bb.0:
679    liveins: $vgpr0_vgpr1
680    ; GFX6-LABEL: name: test_freeze_p0
681    ; GFX6: liveins: $vgpr0_vgpr1
682    ; GFX6-NEXT: {{  $}}
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
687    ; GFX10-NEXT: {{  $}}
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)
693
694...
695
696---
697name:            test_freeze_p1
698alignment:       1
699legalized:       true
700regBankSelected: true
701
702body: |
703  bb.0:
704    liveins: $vgpr0_vgpr1
705    ; GFX6-LABEL: name: test_freeze_p1
706    ; GFX6: liveins: $vgpr0_vgpr1
707    ; GFX6-NEXT: {{  $}}
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
712    ; GFX10-NEXT: {{  $}}
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)
718
719...
720
721---
722name:            test_freeze_p2
723alignment:       1
724legalized:       true
725regBankSelected: true
726
727body: |
728  bb.0:
729    liveins: $vgpr0
730    ; GFX6-LABEL: name: test_freeze_p2
731    ; GFX6: liveins: $vgpr0
732    ; GFX6-NEXT: {{  $}}
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
737    ; GFX10-NEXT: {{  $}}
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
742    $vgpr0 = COPY %1(p2)
743
744...
745
746---
747name:            test_freeze_p3
748alignment:       1
749legalized:       true
750regBankSelected: true
751
752body: |
753  bb.0:
754    liveins: $vgpr0
755    ; GFX6-LABEL: name: test_freeze_p3
756    ; GFX6: liveins: $vgpr0
757    ; GFX6-NEXT: {{  $}}
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
762    ; GFX10-NEXT: {{  $}}
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
767    $vgpr0 = COPY %1(p3)
768
769...
770
771---
772name:            test_freeze_p4
773alignment:       1
774legalized:       true
775regBankSelected: true
776
777body: |
778  bb.0:
779    liveins: $vgpr0_vgpr1
780    ; GFX6-LABEL: name: test_freeze_p4
781    ; GFX6: liveins: $vgpr0_vgpr1
782    ; GFX6-NEXT: {{  $}}
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
787    ; GFX10-NEXT: {{  $}}
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)
793
794...
795
796---
797name:            test_freeze_p5
798alignment:       1
799legalized:       true
800regBankSelected: true
801
802body: |
803  bb.0:
804    liveins: $vgpr0
805    ; GFX6-LABEL: name: test_freeze_p5
806    ; GFX6: liveins: $vgpr0
807    ; GFX6-NEXT: {{  $}}
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
812    ; GFX10-NEXT: {{  $}}
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
817    $vgpr0 = COPY %1(p5)
818
819...
820
821---
822name:            test_freeze_p999
823alignment:       1
824legalized:       true
825regBankSelected: true
826
827body: |
828  bb.0:
829    liveins: $vgpr0_vgpr1
830    ; GFX6-LABEL: name: test_freeze_p999
831    ; GFX6: liveins: $vgpr0_vgpr1
832    ; GFX6-NEXT: {{  $}}
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
837    ; GFX10-NEXT: {{  $}}
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)
843
844...
845