[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / regbankselect-freeze.mir
blobd87bc1f01bdb85b125bfd5f562dc6b4fef81abc5
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=amdgpu-regbankselect %s -o - | FileCheck %s
3 # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=amdgpu-regbankselect %s -o - | FileCheck %s
4 # RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=amdgpu-regbankselect %s -o - | FileCheck %s
6 ---
7 name: test_freeze_s1_vgpr_to_vgpr
8 legalized: true
10 body: |
11   bb.0:
12     liveins: $vgpr0
13     ; CHECK-LABEL: name: test_freeze_s1_vgpr_to_vgpr
14     ; CHECK: liveins: $vgpr0
15     ; CHECK-NEXT: {{  $}}
16     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
17     ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
18     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s1) = G_FREEZE [[TRUNC]]
19     ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[FREEZE]](s1)
20     ; CHECK-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)
21     %0:_(s32) = COPY $vgpr0
22     %1:_(s1) = G_TRUNC %0(s32)
23     %2:_(s1) = G_FREEZE %1
24     %3:_(s32) = G_ANYEXT %2(s1)
25     $vgpr0 = COPY %3(s32)
27 ...
29 ---
30 name: test_freeze_s1_vgpr_to_agpr
31 legalized: true
33 body: |
34   bb.0:
35     liveins: $vgpr0
36     ; CHECK-LABEL: name: test_freeze_s1_vgpr_to_agpr
37     ; CHECK: liveins: $vgpr0
38     ; CHECK-NEXT: {{  $}}
39     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
40     ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
41     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s1) = G_FREEZE [[TRUNC]]
42     ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[FREEZE]](s1)
43     ; CHECK-NEXT: $agpr0 = COPY [[ANYEXT]](s32)
44     %0:_(s32) = COPY $vgpr0
45     %1:_(s1) = G_TRUNC %0(s32)
46     %2:_(s1) = G_FREEZE %1
47     %3:_(s32) = G_ANYEXT %2(s1)
48     $agpr0 = COPY %3(s32)
50 ...
52 ---
53 name: test_freeze_s1_sgpr_to_sgpr
54 legalized: true
55 body:             |
56   bb.0:
57     liveins: $sgpr0
59     ; CHECK-LABEL: name: test_freeze_s1_sgpr_to_sgpr
60     ; CHECK: liveins: $sgpr0
61     ; CHECK-NEXT: {{  $}}
62     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
63     ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
64     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:sgpr(s1) = G_FREEZE [[TRUNC]]
65     ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[FREEZE]](s1)
66     ; CHECK-NEXT: $sgpr0 = COPY [[ANYEXT]](s32)
67     %0:_(s32) = COPY $sgpr0
68     %1:_(s1) = G_TRUNC %0(s32)
69     %2:_(s1) = G_FREEZE %1
70     %3:_(s32) = G_ANYEXT %2(s1)
71     $sgpr0 = COPY %3(s32)
73 ...
75 ---
76 name: test_freeze_s1_vcc
77 legalized: true
79 body: |
80   bb.0:
81     liveins: $vgpr0, $vgpr1
82     ; CHECK-LABEL: name: test_freeze_s1_vcc
83     ; CHECK: liveins: $vgpr0, $vgpr1
84     ; CHECK-NEXT: {{  $}}
85     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
86     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
87     ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
88     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vcc(s1) = G_FREEZE [[ICMP]]
89     ; CHECK-NEXT: S_ENDPGM 0, implicit [[FREEZE]](s1)
90     %0:_(s32) = COPY $vgpr0
91     %1:_(s32) = COPY $vgpr1
92     %2:_(s1) = G_ICMP intpred(eq), %0(s32), %1
93     %3:_(s1) = G_FREEZE %2
94     S_ENDPGM 0, implicit %3
96 ...
98 ---
99 name: test_freeze_s16_vgpr_to_vgpr
100 legalized: true
102 body: |
103   bb.0:
104     liveins: $vgpr0
105     ; CHECK-LABEL: name: test_freeze_s16_vgpr_to_vgpr
106     ; CHECK: liveins: $vgpr0
107     ; CHECK-NEXT: {{  $}}
108     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
109     ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)
110     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s16) = G_FREEZE [[TRUNC]]
111     ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[FREEZE]](s16)
112     ; CHECK-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)
113     %0:_(s32) = COPY $vgpr0
114     %1:_(s16) = G_TRUNC %0(s32)
115     %2:_(s16) = G_FREEZE %1
116     %3:_(s32) = G_ANYEXT %2(s16)
117     $vgpr0 = COPY %3(s32)
122 name: test_freeze_s32_vgpr_to_vgpr
123 legalized: true
125 body: |
126   bb.0:
127     liveins: $vgpr0
128     ; CHECK-LABEL: name: test_freeze_s32_vgpr_to_vgpr
129     ; CHECK: liveins: $vgpr0
130     ; CHECK-NEXT: {{  $}}
131     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
132     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s32) = G_FREEZE [[COPY]]
133     ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](s32)
134     %0:_(s32) = COPY $vgpr0
135     %1:_(s32) = G_FREEZE %0
136     $vgpr0 = COPY %1(s32)
141 name: test_freeze_s32_sgpr_to_sgpr
142 legalized: true
144 body: |
145   bb.0:
146     liveins: $sgpr0
147     ; CHECK-LABEL: name: test_freeze_s32_sgpr_to_sgpr
148     ; CHECK: liveins: $sgpr0
149     ; CHECK-NEXT: {{  $}}
150     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
151     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:sgpr(s32) = G_FREEZE [[COPY]]
152     ; CHECK-NEXT: $sgpr0 = COPY [[FREEZE]](s32)
153     %0:_(s32) = COPY $sgpr0
154     %1:_(s32) = G_FREEZE %0
155     $sgpr0 = COPY %1(s32)
160 name: test_freeze_s32_sgpr_to_vgpr
161 legalized: true
163 body: |
164   bb.0:
165     liveins: $sgpr0
166     ; CHECK-LABEL: name: test_freeze_s32_sgpr_to_vgpr
167     ; CHECK: liveins: $sgpr0
168     ; CHECK-NEXT: {{  $}}
169     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
170     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:sgpr(s32) = G_FREEZE [[COPY]]
171     ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](s32)
172     %0:_(s32) = COPY $sgpr0
173     %1:_(s32) = G_FREEZE %0
174     $vgpr0 = COPY %1(s32)
179 name: test_freeze_s32_vgpr_to_agpr
180 legalized: true
182 body: |
183   bb.0:
184     liveins: $vgpr0
185     ; CHECK-LABEL: name: test_freeze_s32_vgpr_to_agpr
186     ; CHECK: liveins: $vgpr0
187     ; CHECK-NEXT: {{  $}}
188     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
189     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s32) = G_FREEZE [[COPY]]
190     ; CHECK-NEXT: $agpr0 = COPY [[FREEZE]](s32)
191     %0:_(s32) = COPY $vgpr0
192     %1:_(s32) = G_FREEZE %0
193     $agpr0 = COPY %1(s32)
198 name: test_freeze_s32_sgpr_to_agpr
199 legalized: true
201 body: |
202   bb.0:
203     liveins: $sgpr0
204     ; CHECK-LABEL: name: test_freeze_s32_sgpr_to_agpr
205     ; CHECK: liveins: $sgpr0
206     ; CHECK-NEXT: {{  $}}
207     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
208     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:sgpr(s32) = G_FREEZE [[COPY]]
209     ; CHECK-NEXT: $agpr0 = COPY [[FREEZE]](s32)
210     %0:_(s32) = COPY $sgpr0
211     %1:_(s32) = G_FREEZE %0
212     $agpr0 = COPY %1(s32)
217 name: test_freeze_s32_agpr_to_vgpr
218 legalized: true
220 body: |
221   bb.0:
222     liveins: $agpr0
223     ; CHECK-LABEL: name: test_freeze_s32_agpr_to_vgpr
224     ; CHECK: liveins: $agpr0
225     ; CHECK-NEXT: {{  $}}
226     ; CHECK-NEXT: [[COPY:%[0-9]+]]:agpr(s32) = COPY $agpr0
227     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:agpr(s32) = G_FREEZE [[COPY]]
228     ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](s32)
229     %0:_(s32) = COPY $agpr0
230     %1:_(s32) = G_FREEZE %0
231     $vgpr0 = COPY %1(s32)
236 name: test_freeze_s32_agpr_to_agpr
237 legalized: true
239 body: |
240   bb.0:
241     liveins: $agpr0
242     ; CHECK-LABEL: name: test_freeze_s32_agpr_to_agpr
243     ; CHECK: liveins: $agpr0
244     ; CHECK-NEXT: {{  $}}
245     ; CHECK-NEXT: [[COPY:%[0-9]+]]:agpr(s32) = COPY $agpr0
246     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:agpr(s32) = G_FREEZE [[COPY]]
247     ; CHECK-NEXT: $agpr0 = COPY [[FREEZE]](s32)
248     %0:_(s32) = COPY $agpr0
249     %1:_(s32) = G_FREEZE %0
250     $agpr0 = COPY %1(s32)
255 name: test_freeze_s64
256 legalized: true
258 body:  |
259   bb.0:
260     liveins: $vgpr0_vgpr1
261     ; CHECK-LABEL: name: test_freeze_s64
262     ; CHECK: liveins: $vgpr0_vgpr1
263     ; CHECK-NEXT: {{  $}}
264     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
265     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s64) = G_FREEZE [[COPY]]
266     ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](s64)
267     %0:_(s64) = COPY $vgpr0_vgpr1
268     %1:_(s64) = G_FREEZE %0
269     $vgpr0_vgpr1 = COPY %1(s64)
273 name: test_freeze_s128
274 legalized: true
276 body: |
277   bb.0:
278     liveins: $vgpr0_vgpr1_vgpr2_vgpr3
279     ; CHECK-LABEL: name: test_freeze_s128
280     ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
281     ; CHECK-NEXT: {{  $}}
282     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
283     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s128) = G_FREEZE [[COPY]]
284     ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FREEZE]](s128)
285     %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
286     %1:_(s128) = G_FREEZE %0
287     $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(s128)
291 name: test_freeze_256
292 legalized: true
294 body: |
295   bb.0:
296     liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
297     ; CHECK-LABEL: name: test_freeze_256
298     ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
299     ; CHECK-NEXT: {{  $}}
300     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
301     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s256) = G_FREEZE [[COPY]]
302     ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[FREEZE]](s256)
303     %0:_(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
304     %1:_(s256) = G_FREEZE %0
305     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1(s256)
309 name: test_freeze_s512
310 legalized: true
312 body: |
313   bb.0:
314     liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
315     ; CHECK-LABEL: name: test_freeze_s512
316     ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
317     ; CHECK-NEXT: {{  $}}
318     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
319     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s512) = G_FREEZE [[COPY]]
320     ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[FREEZE]](s512)
321     %0:_(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
322     %1:_(s512) = G_FREEZE %0
323     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %1(s512)
327 name: test_freeze_v2s32
328 legalized: true
330 body: |
331   bb.0:
332     liveins: $vgpr0_vgpr1
333     ; CHECK-LABEL: name: test_freeze_v2s32
334     ; CHECK: liveins: $vgpr0_vgpr1
335     ; CHECK-NEXT: {{  $}}
336     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1
337     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<2 x s32>) = G_FREEZE [[COPY]]
338     ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](<2 x s32>)
339     %0:_(<2 x s32>) = COPY $vgpr0_vgpr1
340     %1:_(<2 x s32>) = G_FREEZE %0
341     $vgpr0_vgpr1 = COPY %1(<2 x s32>)
345 name: test_freeze_v3s32
346 legalized: true
348 body: |
349   bb.0:
350     liveins: $vgpr0_vgpr1_vgpr2
351     ; CHECK-LABEL: name: test_freeze_v3s32
352     ; CHECK: liveins: $vgpr0_vgpr1_vgpr2
353     ; CHECK-NEXT: {{  $}}
354     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
355     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<3 x s32>) = G_FREEZE [[COPY]]
356     ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[FREEZE]](<3 x s32>)
357     %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
358     %1:_(<3 x s32>) = G_FREEZE %0
359     $vgpr0_vgpr1_vgpr2 = COPY %1(<3 x s32>)
363 name: test_freeze_v4s32
364 legalized: true
366 body: |
367   bb.0:
368     liveins: $vgpr0_vgpr1_vgpr2_vgpr3
369     ; CHECK-LABEL: name: test_freeze_v4s32
370     ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
371     ; CHECK-NEXT: {{  $}}
372     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
373     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<4 x s32>) = G_FREEZE [[COPY]]
374     ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FREEZE]](<4 x s32>)
375     %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
376     %1:_(<4 x s32>) = G_FREEZE %0
377     $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(<4 x s32>)
381 name: test_freeze_v5s32
382 legalized: true
384 body:  |
385   bb.0:
386     liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4
387     ; CHECK-LABEL: name: test_freeze_v5s32
388     ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4
389     ; CHECK-NEXT: {{  $}}
390     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<5 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4
391     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<5 x s32>) = G_FREEZE [[COPY]]
392     ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY [[FREEZE]](<5 x s32>)
393     %0:_(<5 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4
394     %1:_(<5 x s32>) = G_FREEZE %0
395     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY %1(<5 x s32>)
399 name: test_freeze_v8s32
400 legalized: true
402 body: |
403   bb.0:
404     liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
405     ; CHECK-LABEL: name: test_freeze_v8s32
406     ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
407     ; CHECK-NEXT: {{  $}}
408     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<8 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
409     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<8 x s32>) = G_FREEZE [[COPY]]
410     ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[FREEZE]](<8 x s32>)
411     %0:_(<8 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
412     %1:_(<8 x s32>) = G_FREEZE %0
413     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1(<8 x s32>)
417 name: test_freeze_v16s32
418 legalized: true
420 body: |
421   bb.0:
422     liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
423     ; CHECK-LABEL: name: test_freeze_v16s32
424     ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
425     ; CHECK-NEXT: {{  $}}
426     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<16 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
427     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<16 x s32>) = G_FREEZE [[COPY]]
428     ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[FREEZE]](<16 x s32>)
429     %0:_(<16 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
430     %1:_(<16 x s32>) = G_FREEZE %0
431     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %1(<16 x s32>)
435 name: test_freeze_v2s16
436 legalized: true
438 body: |
439   bb.0:
440     liveins: $vgpr0
441     ; CHECK-LABEL: name: test_freeze_v2s16
442     ; CHECK: liveins: $vgpr0
443     ; CHECK-NEXT: {{  $}}
444     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0
445     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<2 x s16>) = G_FREEZE [[COPY]]
446     ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](<2 x s16>)
447     %0:_(<2 x s16>) = COPY $vgpr0
448     %1:_(<2 x s16>) = G_FREEZE %0
449     $vgpr0 = COPY %1(<2 x s16>)
453 name: test_freeze_v4s16
454 legalized: true
456 body: |
457   bb.0:
458     liveins: $vgpr0_vgpr1
459     ; CHECK-LABEL: name: test_freeze_v4s16
460     ; CHECK: liveins: $vgpr0_vgpr1
461     ; CHECK-NEXT: {{  $}}
462     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1
463     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<4 x s16>) = G_FREEZE [[COPY]]
464     ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](<4 x s16>)
465     %0:_(<4 x s16>) = COPY $vgpr0_vgpr1
466     %1:_(<4 x s16>) = G_FREEZE %0
467     $vgpr0_vgpr1 = COPY %1(<4 x s16>)
471 name: test_freeze_v6s16
472 legalized: true
474 body: |
475   bb.0:
476     liveins: $vgpr0_vgpr1_vgpr2
477     ; CHECK-LABEL: name: test_freeze_v6s16
478     ; CHECK: liveins: $vgpr0_vgpr1_vgpr2
479     ; CHECK-NEXT: {{  $}}
480     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2
481     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<6 x s16>) = G_FREEZE [[COPY]]
482     ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[FREEZE]](<6 x s16>)
483     %0:_(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2
484     %1:_(<6 x s16>) = G_FREEZE %0
485     $vgpr0_vgpr1_vgpr2 = COPY %1(<6 x s16>)
489 name: test_freeze_v8s16
490 legalized: true
492 body: |
493   bb.0:
494     liveins: $vgpr0_vgpr1_vgpr2_vgpr3
495     ; CHECK-LABEL: name: test_freeze_v8s16
496     ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
497     ; CHECK-NEXT: {{  $}}
498     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<8 x s16>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
499     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<8 x s16>) = G_FREEZE [[COPY]]
500     ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FREEZE]](<8 x s16>)
501     %0:_(<8 x s16>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
502     %1:_(<8 x s16>) = G_FREEZE %0
503     $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(<8 x s16>)
507 name: test_freeze_v2s64
508 legalized: true
510 body: |
511   bb.0:
512     liveins: $vgpr0_vgpr1_vgpr2_vgpr3
513     ; CHECK-LABEL: name: test_freeze_v2s64
514     ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
515     ; CHECK-NEXT: {{  $}}
516     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
517     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<2 x s64>) = G_FREEZE [[COPY]]
518     ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FREEZE]](<2 x s64>)
519     %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
520     %1:_(<2 x s64>) = G_FREEZE %0
521     $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(<2 x s64>)
525 name: test_freeze_p0
526 legalized: true
528 body: |
529   bb.0:
530     liveins: $vgpr0_vgpr1
531     ; CHECK-LABEL: name: test_freeze_p0
532     ; CHECK: liveins: $vgpr0_vgpr1
533     ; CHECK-NEXT: {{  $}}
534     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1
535     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(p0) = G_FREEZE [[COPY]]
536     ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](p0)
537     %0:_(p0) = COPY $vgpr0_vgpr1
538     %1:_(p0) = G_FREEZE %0
539     $vgpr0_vgpr1 = COPY %1(p0)
543 name: test_freeze_p1
544 legalized: true
546 body: |
547   bb.0:
548     liveins: $vgpr0_vgpr1
549     ; CHECK-LABEL: name: test_freeze_p1
550     ; CHECK: liveins: $vgpr0_vgpr1
551     ; CHECK-NEXT: {{  $}}
552     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
553     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(p1) = G_FREEZE [[COPY]]
554     ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](p1)
555     %0:_(p1) = COPY $vgpr0_vgpr1
556     %1:_(p1) = G_FREEZE %0
557     $vgpr0_vgpr1 = COPY %1(p1)
561 name: test_freeze_p2
562 legalized: true
564 body:  |
565   bb.0:
566     liveins: $vgpr0
567     ; CHECK-LABEL: name: test_freeze_p2
568     ; CHECK: liveins: $vgpr0
569     ; CHECK-NEXT: {{  $}}
570     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p2) = COPY $vgpr0
571     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(p2) = G_FREEZE [[COPY]]
572     ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](p2)
573     %0:_(p2) = COPY $vgpr0
574     %1:_(p2) = G_FREEZE %0
575     $vgpr0 = COPY %1(p2)
579 name: test_freeze_p3
580 legalized: true
582 body: |
583   bb.0:
584     liveins: $vgpr0
585     ; CHECK-LABEL: name: test_freeze_p3
586     ; CHECK: liveins: $vgpr0
587     ; CHECK-NEXT: {{  $}}
588     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
589     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(p3) = G_FREEZE [[COPY]]
590     ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](p3)
591     %0:_(p3) = COPY $vgpr0
592     %1:_(p3) = G_FREEZE %0
593     $vgpr0 = COPY %1(p3)
597 name: test_freeze_p4
598 legalized: true
600 body: |
601   bb.0:
602     liveins: $vgpr0_vgpr1
603     ; CHECK-LABEL: name: test_freeze_p4
604     ; CHECK: liveins: $vgpr0_vgpr1
605     ; CHECK-NEXT: {{  $}}
606     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p4) = COPY $vgpr0_vgpr1
607     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(p4) = G_FREEZE [[COPY]]
608     ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](p4)
609     %0:_(p4) = COPY $vgpr0_vgpr1
610     %1:_(p4) = G_FREEZE %0
611     $vgpr0_vgpr1 = COPY %1(p4)
615 name: test_freeze_p5
616 legalized: true
618 body: |
619   bb.0:
620     liveins: $vgpr0
621     ; CHECK-LABEL: name: test_freeze_p5
622     ; CHECK: liveins: $vgpr0
623     ; CHECK-NEXT: {{  $}}
624     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p5) = COPY $vgpr0
625     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(p5) = G_FREEZE [[COPY]]
626     ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](p5)
627     %0:_(p5) = COPY $vgpr0
628     %1:_(p5) = G_FREEZE %0
629     $vgpr0 = COPY %1(p5)
633 name: test_freeze_p999
634 legalized: true
636 body: |
637   bb.0:
638     liveins: $vgpr0_vgpr1
639     ; CHECK-LABEL: name: test_freeze_p999
640     ; CHECK: liveins: $vgpr0_vgpr1
641     ; CHECK-NEXT: {{  $}}
642     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p999) = COPY $vgpr0_vgpr1
643     ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(p999) = G_FREEZE [[COPY]]
644     ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](p999)
645     %0:_(p999) = COPY $vgpr0_vgpr1
646     %1:_(p999) = G_FREEZE %0
647     $vgpr0_vgpr1 = COPY %1(p999)