[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / inst-select-freeze.mir
blob7afc2b9015c3c59f948603cdc27e1b9501c0b5ce
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
7 ---
8 name:            test_freeze_s1_vgpr_to_vgpr
9 alignment:       1
10 legalized:       true
11 regBankSelected: true
13 body: |
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)
32 ...
34 ---
35 name:            test_freeze_s1_vgpr_to_agpr
36 alignment:       1
37 legalized:       true
38 regBankSelected: true
40 body: |
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)
59 ...
61 ---
62 name:            test_freeze_s1_vcc
63 alignment:       1
64 legalized:       true
65 regBankSelected: true
67 body: |
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)
92 ...
94 ---
95 name:            test_freeze_s16_vgpr_to_vgpr
96 alignment:       1
97 legalized:       true
98 regBankSelected: true
100 body: |
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)
122 name:            test_freeze_s32_vgpr_to_vgpr
123 alignment:       1
124 legalized:       true
125 regBankSelected: true
127 body: |
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)
147 name:            test_freeze_s32_sgpr_to_sgpr
148 alignment:       1
149 legalized:       true
150 regBankSelected: true
152 body: |
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)
172 name:            test_freeze_s32_sgpr_to_vgpr
173 alignment:       1
174 legalized:       true
175 regBankSelected: true
177 body: |
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)
197 name:            test_freeze_s32_vgpr_to_agpr
198 alignment:       1
199 legalized:       true
200 regBankSelected: true
202 body: |
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)
222 name:            test_freeze_s32_sgpr_to_agpr
223 alignment:       1
224 legalized:       true
225 regBankSelected: true
227 body: |
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)
247 name:            test_freeze_s32_agpr_to_vgpr
248 alignment:       1
249 legalized:       true
250 regBankSelected: true
252 body: |
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)
272 name:            test_freeze_s32_agpr_to_agpr
273 alignment:       1
274 legalized:       true
275 regBankSelected: true
277 body: |
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)
297 name:            test_freeze_s64
298 alignment:       1
299 legalized:       true
300 regBankSelected: true
302 body: |
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)
322 name:            test_freeze_s128
323 alignment:       1
324 legalized:       true
325 regBankSelected: true
327 body: |
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)
347 name:            test_freeze_256
348 alignment:       1
349 legalized:       true
350 regBankSelected: true
352 body: |
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)
372 name:            test_freeze_s512
373 alignment:       1
374 legalized:       true
375 regBankSelected: true
377 body: |
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)
397 name:            test_freeze_v2s32
398 alignment:       1
399 legalized:       true
400 regBankSelected: true
402 body: |
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>)
422 name:            test_freeze_v3s32
423 alignment:       1
424 legalized:       true
425 regBankSelected: true
427 body: |
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>)
447 name:            test_freeze_v4s32
448 alignment:       1
449 legalized:       true
450 regBankSelected: true
452 body: |
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>)
472 name:            test_freeze_v5s32
473 alignment:       1
474 legalized:       true
475 regBankSelected: true
477 body: |
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>)
497 name:            test_freeze_v8s32
498 alignment:       1
499 legalized:       true
500 regBankSelected: true
502 body: |
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>)
522 name:            test_freeze_v16s32
523 alignment:       1
524 legalized:       true
525 regBankSelected: true
527 body: |
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>)
547 name:            test_freeze_v2s16
548 alignment:       1
549 legalized:       true
550 regBankSelected: true
552 body: |
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>)
572 name:            test_freeze_v4s16
573 alignment:       1
574 legalized:       true
575 regBankSelected: true
577 body: |
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>)
597 name:            test_freeze_v6s16
598 alignment:       1
599 legalized:       true
600 regBankSelected: true
602 body: |
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>)
622 name:            test_freeze_v8s16
623 alignment:       1
624 legalized:       true
625 regBankSelected: true
627 body: |
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>)
647 name:            test_freeze_v2s64
648 alignment:       1
649 legalized:       true
650 regBankSelected: true
652 body: |
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>)
672 name:            test_freeze_p0
673 alignment:       1
674 legalized:       true
675 regBankSelected: true
677 body: |
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)
697 name:            test_freeze_p1
698 alignment:       1
699 legalized:       true
700 regBankSelected: true
702 body: |
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)
722 name:            test_freeze_p2
723 alignment:       1
724 legalized:       true
725 regBankSelected: true
727 body: |
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)
747 name:            test_freeze_p3
748 alignment:       1
749 legalized:       true
750 regBankSelected: true
752 body: |
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)
772 name:            test_freeze_p4
773 alignment:       1
774 legalized:       true
775 regBankSelected: true
777 body: |
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)
797 name:            test_freeze_p5
798 alignment:       1
799 legalized:       true
800 regBankSelected: true
802 body: |
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)
822 name:            test_freeze_p999
823 alignment:       1
824 legalized:       true
825 regBankSelected: true
827 body: |
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)