1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=regbankselect %s -o - | FileCheck %s
3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=regbankselect %s -o - | FileCheck %s
4# RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=regbankselect %s -o - | FileCheck %s
5
6---
7name: test_freeze_s1_vgpr_to_vgpr
8legalized: true
9
10body: |
11  bb.0:
12    liveins: $vgpr0
13    ; CHECK-LABEL: name: test_freeze_s1_vgpr_to_vgpr
14    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
15    ; CHECK: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
16    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(s1) = G_FREEZE [[TRUNC]]
17    ; CHECK: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[FREEZE]](s1)
18    ; CHECK: $vgpr0 = COPY [[ANYEXT]](s32)
19    %0:_(s32) = COPY $vgpr0
20    %1:_(s1) = G_TRUNC %0(s32)
21    %2:_(s1) = G_FREEZE %1
22    %3:_(s32) = G_ANYEXT %2(s1)
23    $vgpr0 = COPY %3(s32)
24
25...
26
27---
28name: test_freeze_s1_vgpr_to_agpr
29legalized: true
30
31body: |
32  bb.0:
33    liveins: $vgpr0
34    ; CHECK-LABEL: name: test_freeze_s1_vgpr_to_agpr
35    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
36    ; CHECK: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
37    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(s1) = G_FREEZE [[TRUNC]]
38    ; CHECK: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[FREEZE]](s1)
39    ; CHECK: $agpr0 = COPY [[ANYEXT]](s32)
40    %0:_(s32) = COPY $vgpr0
41    %1:_(s1) = G_TRUNC %0(s32)
42    %2:_(s1) = G_FREEZE %1
43    %3:_(s32) = G_ANYEXT %2(s1)
44    $agpr0 = COPY %3(s32)
45
46...
47
48---
49name: test_freeze_s1_vcc
50legalized: true
51
52body: |
53  bb.0:
54    liveins: $vgpr0, $vgpr1
55    ; CHECK-LABEL: name: test_freeze_s1_vcc
56    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
57    ; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
58    ; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
59    ; CHECK: [[FREEZE:%[0-9]+]]:vcc(s1) = G_FREEZE [[ICMP]]
60    ; CHECK: S_ENDPGM 0, implicit [[FREEZE]](s1)
61    %0:_(s32) = COPY $vgpr0
62    %1:_(s32) = COPY $vgpr1
63    %2:_(s1) = G_ICMP intpred(eq), %0(s32), %1
64    %3:_(s1) = G_FREEZE %2
65    S_ENDPGM 0, implicit %3
66
67...
68
69---
70name: test_freeze_s16_vgpr_to_vgpr
71legalized: true
72
73body: |
74  bb.0:
75    liveins: $vgpr0
76    ; CHECK-LABEL: name: test_freeze_s16_vgpr_to_vgpr
77    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
78    ; CHECK: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)
79    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(s16) = G_FREEZE [[TRUNC]]
80    ; CHECK: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[FREEZE]](s16)
81    ; CHECK: $vgpr0 = COPY [[ANYEXT]](s32)
82    %0:_(s32) = COPY $vgpr0
83    %1:_(s16) = G_TRUNC %0(s32)
84    %2:_(s16) = G_FREEZE %1
85    %3:_(s32) = G_ANYEXT %2(s16)
86    $vgpr0 = COPY %3(s32)
87
88...
89
90---
91name: test_freeze_s32_vgpr_to_vgpr
92legalized: true
93
94body: |
95  bb.0:
96    liveins: $vgpr0
97    ; CHECK-LABEL: name: test_freeze_s32_vgpr_to_vgpr
98    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
99    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(s32) = G_FREEZE [[COPY]]
100    ; CHECK: $vgpr0 = COPY [[FREEZE]](s32)
101    %0:_(s32) = COPY $vgpr0
102    %1:_(s32) = G_FREEZE %0
103    $vgpr0 = COPY %1(s32)
104
105...
106
107---
108name: test_freeze_s32_sgpr_to_sgpr
109legalized: true
110
111body: |
112  bb.0:
113    liveins: $sgpr0
114    ; CHECK-LABEL: name: test_freeze_s32_sgpr_to_sgpr
115    ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
116    ; CHECK: [[FREEZE:%[0-9]+]]:sgpr(s32) = G_FREEZE [[COPY]]
117    ; CHECK: $sgpr0 = COPY [[FREEZE]](s32)
118    %0:_(s32) = COPY $sgpr0
119    %1:_(s32) = G_FREEZE %0
120    $sgpr0 = COPY %1(s32)
121
122...
123
124---
125name: test_freeze_s32_sgpr_to_vgpr
126legalized: true
127
128body: |
129  bb.0:
130    liveins: $sgpr0
131    ; CHECK-LABEL: name: test_freeze_s32_sgpr_to_vgpr
132    ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
133    ; CHECK: [[FREEZE:%[0-9]+]]:sgpr(s32) = G_FREEZE [[COPY]]
134    ; CHECK: $vgpr0 = COPY [[FREEZE]](s32)
135    %0:_(s32) = COPY $sgpr0
136    %1:_(s32) = G_FREEZE %0
137    $vgpr0 = COPY %1(s32)
138
139...
140
141---
142name: test_freeze_s32_vgpr_to_agpr
143legalized: true
144
145body: |
146  bb.0:
147    liveins: $vgpr0
148    ; CHECK-LABEL: name: test_freeze_s32_vgpr_to_agpr
149    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
150    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(s32) = G_FREEZE [[COPY]]
151    ; CHECK: $agpr0 = COPY [[FREEZE]](s32)
152    %0:_(s32) = COPY $vgpr0
153    %1:_(s32) = G_FREEZE %0
154    $agpr0 = COPY %1(s32)
155
156...
157
158---
159name: test_freeze_s32_sgpr_to_agpr
160legalized: true
161
162body: |
163  bb.0:
164    liveins: $sgpr0
165    ; CHECK-LABEL: name: test_freeze_s32_sgpr_to_agpr
166    ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
167    ; CHECK: [[FREEZE:%[0-9]+]]:sgpr(s32) = G_FREEZE [[COPY]]
168    ; CHECK: $agpr0 = COPY [[FREEZE]](s32)
169    %0:_(s32) = COPY $sgpr0
170    %1:_(s32) = G_FREEZE %0
171    $agpr0 = COPY %1(s32)
172
173...
174
175---
176name: test_freeze_s32_agpr_to_vgpr
177legalized: true
178
179body: |
180  bb.0:
181    liveins: $agpr0
182    ; CHECK-LABEL: name: test_freeze_s32_agpr_to_vgpr
183    ; CHECK: [[COPY:%[0-9]+]]:agpr(s32) = COPY $agpr0
184    ; CHECK: [[FREEZE:%[0-9]+]]:agpr(s32) = G_FREEZE [[COPY]]
185    ; CHECK: $vgpr0 = COPY [[FREEZE]](s32)
186    %0:_(s32) = COPY $agpr0
187    %1:_(s32) = G_FREEZE %0
188    $vgpr0 = COPY %1(s32)
189
190...
191
192---
193name: test_freeze_s32_agpr_to_agpr
194legalized: true
195
196body: |
197  bb.0:
198    liveins: $agpr0
199    ; CHECK-LABEL: name: test_freeze_s32_agpr_to_agpr
200    ; CHECK: [[COPY:%[0-9]+]]:agpr(s32) = COPY $agpr0
201    ; CHECK: [[FREEZE:%[0-9]+]]:agpr(s32) = G_FREEZE [[COPY]]
202    ; CHECK: $agpr0 = COPY [[FREEZE]](s32)
203    %0:_(s32) = COPY $agpr0
204    %1:_(s32) = G_FREEZE %0
205    $agpr0 = COPY %1(s32)
206
207...
208
209---
210name: test_freeze_s64
211legalized: true
212
213body:  |
214  bb.0:
215    liveins: $vgpr0_vgpr1
216    ; CHECK-LABEL: name: test_freeze_s64
217    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
218    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(s64) = G_FREEZE [[COPY]]
219    ; CHECK: $vgpr0_vgpr1 = COPY [[FREEZE]](s64)
220    %0:_(s64) = COPY $vgpr0_vgpr1
221    %1:_(s64) = G_FREEZE %0
222    $vgpr0_vgpr1 = COPY %1(s64)
223...
224
225---
226name: test_freeze_s128
227legalized: true
228
229body: |
230  bb.0:
231    liveins: $vgpr0_vgpr1_vgpr2_vgpr3
232    ; CHECK-LABEL: name: test_freeze_s128
233    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
234    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(s128) = G_FREEZE [[COPY]]
235    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FREEZE]](s128)
236    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
237    %1:_(s128) = G_FREEZE %0
238    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(s128)
239...
240
241---
242name: test_freeze_256
243legalized: true
244
245body: |
246  bb.0:
247    liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
248    ; CHECK-LABEL: name: test_freeze_256
249    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
250    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(s256) = G_FREEZE [[COPY]]
251    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[FREEZE]](s256)
252    %0:_(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
253    %1:_(s256) = G_FREEZE %0
254    $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1(s256)
255...
256
257---
258name: test_freeze_s512
259legalized: true
260
261body: |
262  bb.0:
263    liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
264    ; CHECK-LABEL: name: test_freeze_s512
265    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
266    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(s512) = G_FREEZE [[COPY]]
267    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[FREEZE]](s512)
268    %0:_(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
269    %1:_(s512) = G_FREEZE %0
270    $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %1(s512)
271...
272
273---
274name: test_freeze_v2s32
275legalized: true
276
277body: |
278  bb.0:
279    liveins: $vgpr0_vgpr1
280    ; CHECK-LABEL: name: test_freeze_v2s32
281    ; CHECK: [[COPY:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1
282    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(<2 x s32>) = G_FREEZE [[COPY]]
283    ; CHECK: $vgpr0_vgpr1 = COPY [[FREEZE]](<2 x s32>)
284    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1
285    %1:_(<2 x s32>) = G_FREEZE %0
286    $vgpr0_vgpr1 = COPY %1(<2 x s32>)
287...
288
289---
290name: test_freeze_v3s32
291legalized: true
292
293body: |
294  bb.0:
295    liveins: $vgpr0_vgpr1_vgpr2
296    ; CHECK-LABEL: name: test_freeze_v3s32
297    ; CHECK: [[COPY:%[0-9]+]]:vgpr(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
298    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(<3 x s32>) = G_FREEZE [[COPY]]
299    ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[FREEZE]](<3 x s32>)
300    %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
301    %1:_(<3 x s32>) = G_FREEZE %0
302    $vgpr0_vgpr1_vgpr2 = COPY %1(<3 x s32>)
303...
304
305---
306name: test_freeze_v4s32
307legalized: true
308
309body: |
310  bb.0:
311    liveins: $vgpr0_vgpr1_vgpr2_vgpr3
312    ; CHECK-LABEL: name: test_freeze_v4s32
313    ; CHECK: [[COPY:%[0-9]+]]:vgpr(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
314    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(<4 x s32>) = G_FREEZE [[COPY]]
315    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FREEZE]](<4 x s32>)
316    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
317    %1:_(<4 x s32>) = G_FREEZE %0
318    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(<4 x s32>)
319...
320
321---
322name: test_freeze_v5s32
323legalized: true
324
325body:  |
326  bb.0:
327    liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4
328    ; CHECK-LABEL: name: test_freeze_v5s32
329    ; CHECK: [[COPY:%[0-9]+]]:vgpr(<5 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4
330    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(<5 x s32>) = G_FREEZE [[COPY]]
331    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY [[FREEZE]](<5 x s32>)
332    %0:_(<5 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4
333    %1:_(<5 x s32>) = G_FREEZE %0
334    $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY %1(<5 x s32>)
335...
336
337---
338name: test_freeze_v8s32
339legalized: true
340
341body: |
342  bb.0:
343    liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
344    ; CHECK-LABEL: name: test_freeze_v8s32
345    ; CHECK: [[COPY:%[0-9]+]]:vgpr(<8 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
346    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(<8 x s32>) = G_FREEZE [[COPY]]
347    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[FREEZE]](<8 x s32>)
348    %0:_(<8 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
349    %1:_(<8 x s32>) = G_FREEZE %0
350    $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1(<8 x s32>)
351...
352
353---
354name: test_freeze_v16s32
355legalized: true
356
357body: |
358  bb.0:
359    liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
360    ; CHECK-LABEL: name: test_freeze_v16s32
361    ; CHECK: [[COPY:%[0-9]+]]:vgpr(<16 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
362    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(<16 x s32>) = G_FREEZE [[COPY]]
363    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[FREEZE]](<16 x s32>)
364    %0:_(<16 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
365    %1:_(<16 x s32>) = G_FREEZE %0
366    $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %1(<16 x s32>)
367...
368
369---
370name: test_freeze_v2s16
371legalized: true
372
373body: |
374  bb.0:
375    liveins: $vgpr0
376    ; CHECK-LABEL: name: test_freeze_v2s16
377    ; CHECK: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0
378    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(<2 x s16>) = G_FREEZE [[COPY]]
379    ; CHECK: $vgpr0 = COPY [[FREEZE]](<2 x s16>)
380    %0:_(<2 x s16>) = COPY $vgpr0
381    %1:_(<2 x s16>) = G_FREEZE %0
382    $vgpr0 = COPY %1(<2 x s16>)
383...
384
385---
386name: test_freeze_v4s16
387legalized: true
388
389body: |
390  bb.0:
391    liveins: $vgpr0_vgpr1
392    ; CHECK-LABEL: name: test_freeze_v4s16
393    ; CHECK: [[COPY:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1
394    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(<4 x s16>) = G_FREEZE [[COPY]]
395    ; CHECK: $vgpr0_vgpr1 = COPY [[FREEZE]](<4 x s16>)
396    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
397    %1:_(<4 x s16>) = G_FREEZE %0
398    $vgpr0_vgpr1 = COPY %1(<4 x s16>)
399...
400
401---
402name: test_freeze_v6s16
403legalized: true
404
405body: |
406  bb.0:
407    liveins: $vgpr0_vgpr1_vgpr2
408    ; CHECK-LABEL: name: test_freeze_v6s16
409    ; CHECK: [[COPY:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2
410    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(<6 x s16>) = G_FREEZE [[COPY]]
411    ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[FREEZE]](<6 x s16>)
412    %0:_(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2
413    %1:_(<6 x s16>) = G_FREEZE %0
414    $vgpr0_vgpr1_vgpr2 = COPY %1(<6 x s16>)
415...
416
417---
418name: test_freeze_v8s16
419legalized: true
420
421body: |
422  bb.0:
423    liveins: $vgpr0_vgpr1_vgpr2_vgpr3
424    ; CHECK-LABEL: name: test_freeze_v8s16
425    ; CHECK: [[COPY:%[0-9]+]]:vgpr(<8 x s16>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
426    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(<8 x s16>) = G_FREEZE [[COPY]]
427    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FREEZE]](<8 x s16>)
428    %0:_(<8 x s16>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
429    %1:_(<8 x s16>) = G_FREEZE %0
430    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(<8 x s16>)
431...
432
433---
434name: test_freeze_v2s64
435legalized: true
436
437body: |
438  bb.0:
439    liveins: $vgpr0_vgpr1_vgpr2_vgpr3
440    ; CHECK-LABEL: name: test_freeze_v2s64
441    ; CHECK: [[COPY:%[0-9]+]]:vgpr(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
442    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(<2 x s64>) = G_FREEZE [[COPY]]
443    ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FREEZE]](<2 x s64>)
444    %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
445    %1:_(<2 x s64>) = G_FREEZE %0
446    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(<2 x s64>)
447...
448
449---
450name: test_freeze_p0
451legalized: true
452
453body: |
454  bb.0:
455    liveins: $vgpr0_vgpr1
456    ; CHECK-LABEL: name: test_freeze_p0
457    ; CHECK: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1
458    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(p0) = G_FREEZE [[COPY]]
459    ; CHECK: $vgpr0_vgpr1 = COPY [[FREEZE]](p0)
460    %0:_(p0) = COPY $vgpr0_vgpr1
461    %1:_(p0) = G_FREEZE %0
462    $vgpr0_vgpr1 = COPY %1(p0)
463...
464
465---
466name: test_freeze_p1
467legalized: true
468
469body: |
470  bb.0:
471    liveins: $vgpr0_vgpr1
472    ; CHECK-LABEL: name: test_freeze_p1
473    ; CHECK: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
474    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(p1) = G_FREEZE [[COPY]]
475    ; CHECK: $vgpr0_vgpr1 = COPY [[FREEZE]](p1)
476    %0:_(p1) = COPY $vgpr0_vgpr1
477    %1:_(p1) = G_FREEZE %0
478    $vgpr0_vgpr1 = COPY %1(p1)
479...
480
481---
482name: test_freeze_p2
483legalized: true
484
485body:  |
486  bb.0:
487    liveins: $vgpr0
488    ; CHECK-LABEL: name: test_freeze_p2
489    ; CHECK: [[COPY:%[0-9]+]]:vgpr(p2) = COPY $vgpr0
490    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(p2) = G_FREEZE [[COPY]]
491    ; CHECK: $vgpr0 = COPY [[FREEZE]](p2)
492    %0:_(p2) = COPY $vgpr0
493    %1:_(p2) = G_FREEZE %0
494    $vgpr0 = COPY %1(p2)
495...
496
497---
498name: test_freeze_p3
499legalized: true
500
501body: |
502  bb.0:
503    liveins: $vgpr0
504    ; CHECK-LABEL: name: test_freeze_p3
505    ; CHECK: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
506    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(p3) = G_FREEZE [[COPY]]
507    ; CHECK: $vgpr0 = COPY [[FREEZE]](p3)
508    %0:_(p3) = COPY $vgpr0
509    %1:_(p3) = G_FREEZE %0
510    $vgpr0 = COPY %1(p3)
511...
512
513---
514name: test_freeze_p4
515legalized: true
516
517body: |
518  bb.0:
519    liveins: $vgpr0_vgpr1
520    ; CHECK-LABEL: name: test_freeze_p4
521    ; CHECK: [[COPY:%[0-9]+]]:vgpr(p4) = COPY $vgpr0_vgpr1
522    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(p4) = G_FREEZE [[COPY]]
523    ; CHECK: $vgpr0_vgpr1 = COPY [[FREEZE]](p4)
524    %0:_(p4) = COPY $vgpr0_vgpr1
525    %1:_(p4) = G_FREEZE %0
526    $vgpr0_vgpr1 = COPY %1(p4)
527...
528
529---
530name: test_freeze_p5
531legalized: true
532
533body: |
534  bb.0:
535    liveins: $vgpr0
536    ; CHECK-LABEL: name: test_freeze_p5
537    ; CHECK: [[COPY:%[0-9]+]]:vgpr(p5) = COPY $vgpr0
538    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(p5) = G_FREEZE [[COPY]]
539    ; CHECK: $vgpr0 = COPY [[FREEZE]](p5)
540    %0:_(p5) = COPY $vgpr0
541    %1:_(p5) = G_FREEZE %0
542    $vgpr0 = COPY %1(p5)
543...
544
545---
546name: test_freeze_p999
547legalized: true
548
549body: |
550  bb.0:
551    liveins: $vgpr0_vgpr1
552    ; CHECK-LABEL: name: test_freeze_p999
553    ; CHECK: [[COPY:%[0-9]+]]:vgpr(p999) = COPY $vgpr0_vgpr1
554    ; CHECK: [[FREEZE:%[0-9]+]]:vgpr(p999) = G_FREEZE [[COPY]]
555    ; CHECK: $vgpr0_vgpr1 = COPY [[FREEZE]](p999)
556    %0:_(p999) = COPY $vgpr0_vgpr1
557    %1:_(p999) = G_FREEZE %0
558    $vgpr0_vgpr1 = COPY %1(p999)
559...
560