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 -verify-machineinstrs -global-isel-abort=2 -pass-remarks-missed='gisel*' -o - %s | FileCheck -check-prefix=GCN %s
5 name: test_merge_values_v_s64_v_s32_v_s32
8 tracksRegLiveness: true
12 liveins: $vgpr0, $vgpr1
14 ; GCN-LABEL: name: test_merge_values_v_s64_v_s32_v_s32
15 ; GCN: liveins: $vgpr0, $vgpr1
17 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
18 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
19 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
20 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
21 %0:vgpr(s32) = COPY $vgpr0
22 %1:vgpr(s32) = COPY $vgpr1
23 %2:vgpr(s64) = G_MERGE_VALUES %0, %1
24 S_ENDPGM 0, implicit %2
28 name: test_merge_values_v_s64_s_s32_v_s32
31 tracksRegLiveness: true
35 liveins: $sgpr0, $vgpr0
37 ; GCN-LABEL: name: test_merge_values_v_s64_s_s32_v_s32
38 ; GCN: liveins: $sgpr0, $vgpr0
40 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
41 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0
42 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
43 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
44 %0:sgpr(s32) = COPY $sgpr0
45 %1:vgpr(s32) = COPY $vgpr0
46 %2:vgpr(s64) = G_MERGE_VALUES %0, %1
47 S_ENDPGM 0, implicit %2
51 name: test_merge_values_v_s64_v_s32_s_s32
54 tracksRegLiveness: true
58 liveins: $sgpr0, $vgpr0
60 ; GCN-LABEL: name: test_merge_values_v_s64_v_s32_s_s32
61 ; GCN: liveins: $sgpr0, $vgpr0
63 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
64 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0
65 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
66 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
67 %0:vgpr(s32) = COPY $vgpr0
68 %1:sgpr(s32) = COPY $sgpr0
69 %2:vgpr(s64) = G_MERGE_VALUES %0, %1
70 S_ENDPGM 0, implicit %2
74 name: test_merge_values_s_s64_s_s32_s_s32
77 tracksRegLiveness: true
81 liveins: $sgpr0, $sgpr1
83 ; GCN-LABEL: name: test_merge_values_s_s64_s_s32_s_s32
84 ; GCN: liveins: $sgpr0, $sgpr1
86 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
87 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
88 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
89 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
90 %0:sgpr(s32) = COPY $sgpr0
91 %1:sgpr(s32) = COPY $sgpr1
92 %2:sgpr(s64) = G_MERGE_VALUES %0, %1
93 S_ENDPGM 0, implicit %2
97 name: test_merge_values_s_s96_s_s32_s_s32_s_s32
103 liveins: $sgpr0, $sgpr1, $sgpr2
105 ; GCN-LABEL: name: test_merge_values_s_s96_s_s32_s_s32_s_s32
106 ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2
108 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
109 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
110 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
111 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_96 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2
112 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2 = COPY [[REG_SEQUENCE]]
113 %0:sgpr(s32) = COPY $sgpr0
114 %1:sgpr(s32) = COPY $sgpr1
115 %2:sgpr(s32) = COPY $sgpr2
116 %3:sgpr(s96) = G_MERGE_VALUES %0, %1, %2
117 $sgpr0_sgpr1_sgpr2 = COPY %3
121 name: test_merge_values_v_s96_v_s32_v_s32_v_s32
123 regBankSelected: true
124 tracksRegLiveness: true
128 liveins: $vgpr0, $vgpr1, $vgpr2
130 ; GCN-LABEL: name: test_merge_values_v_s96_v_s32_v_s32_v_s32
131 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2
133 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
134 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
135 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
136 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2
137 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[REG_SEQUENCE]]
138 %0:vgpr(s32) = COPY $vgpr0
139 %1:vgpr(s32) = COPY $vgpr1
140 %2:vgpr(s32) = COPY $vgpr2
141 %3:vgpr(s96) = G_MERGE_VALUES %0, %1, %2
142 $vgpr0_vgpr1_vgpr2 = COPY %3
146 name: test_merge_values_s_s128_s_s32_s_s32_s_s32_s_s32
148 regBankSelected: true
149 tracksRegLiveness: true
153 liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3
155 ; GCN-LABEL: name: test_merge_values_s_s128_s_s32_s_s32_s_s32_s_s32
156 ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3
158 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
159 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
160 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
161 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3
162 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
163 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]]
164 %0:sgpr(s32) = COPY $sgpr0
165 %1:sgpr(s32) = COPY $sgpr1
166 %2:sgpr(s32) = COPY $sgpr2
167 %3:sgpr(s32) = COPY $sgpr3
168 %4:sgpr(s128) = G_MERGE_VALUES %0, %1, %2, %3
169 $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %4
173 name: test_merge_values_v_s128_v_s32_v_s32_v_s32
175 regBankSelected: true
176 tracksRegLiveness: true
180 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
182 ; GCN-LABEL: name: test_merge_values_v_s128_v_s32_v_s32_v_s32
183 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
185 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
186 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
187 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
188 ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
189 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
190 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[REG_SEQUENCE]]
191 %0:vgpr(s32) = COPY $vgpr0
192 %1:vgpr(s32) = COPY $vgpr1
193 %2:vgpr(s32) = COPY $vgpr2
194 %3:vgpr(s32) = COPY $vgpr3
195 %4:vgpr(s128) = G_MERGE_VALUES %0, %1, %2, %3
196 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %4
200 name: test_merge_values_s_s128_s_s64_s_s64
202 regBankSelected: true
203 tracksRegLiveness: true
207 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
209 ; GCN-LABEL: name: test_merge_values_s_s128_s_s64_s_s64
210 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
212 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
213 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
214 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3
215 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]]
216 %0:sgpr(s64) = COPY $sgpr0_sgpr1
217 %1:sgpr(s64) = COPY $sgpr2_sgpr3
218 %4:sgpr(s128) = G_MERGE_VALUES %0, %1
219 $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %4
223 name: test_merge_values_v_s128_v_s64_v_s64
225 regBankSelected: true
226 tracksRegLiveness: true
230 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
232 ; GCN-LABEL: name: test_merge_values_v_s128_v_s64_v_s64
233 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
235 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
236 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
237 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3
238 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[REG_SEQUENCE]]
239 %0:vgpr(s64) = COPY $vgpr0_vgpr1
240 %1:vgpr(s64) = COPY $vgpr2_vgpr3
241 %2:vgpr(s128) = G_MERGE_VALUES %0, %1
242 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
246 name: test_merge_values_s_s160_s_s32_s_s32_s_s32_s_s32_s_s32
248 regBankSelected: true
249 tracksRegLiveness: true
253 liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4
255 ; GCN-LABEL: name: test_merge_values_s_s160_s_s32_s_s32_s_s32_s_s32_s_s32
256 ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4
258 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
259 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
260 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
261 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3
262 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr4
263 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_160 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3, [[COPY4]], %subreg.sub4
264 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4 = COPY [[REG_SEQUENCE]]
265 %0:sgpr(s32) = COPY $sgpr0
266 %1:sgpr(s32) = COPY $sgpr1
267 %2:sgpr(s32) = COPY $sgpr2
268 %3:sgpr(s32) = COPY $sgpr3
269 %4:sgpr(s32) = COPY $sgpr4
270 %5:sgpr(s160) = G_MERGE_VALUES %0, %1, %2, %3, %4
271 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4 = COPY %5
275 name: test_merge_values_v_s160_v_s32_v_s32_v_s32_v_s32_v_s32
277 regBankSelected: true
278 tracksRegLiveness: true
282 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
284 ; GCN-LABEL: name: test_merge_values_v_s160_v_s32_v_s32_v_s32_v_s32_v_s32
285 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
287 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
288 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
289 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
290 ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
291 ; GCN-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr4
292 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_160 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3, [[COPY4]], %subreg.sub4
293 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY [[REG_SEQUENCE]]
294 %0:vgpr(s32) = COPY $vgpr0
295 %1:vgpr(s32) = COPY $vgpr1
296 %2:vgpr(s32) = COPY $vgpr2
297 %3:vgpr(s32) = COPY $vgpr3
298 %4:vgpr(s32) = COPY $vgpr4
299 %5:vgpr(s160) = G_MERGE_VALUES %0, %1, %2, %3, %4
300 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY %5
304 name: test_merge_values_s_s192_s_s64_s_s64_s_s64
306 regBankSelected: true
307 tracksRegLiveness: true
311 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5
313 ; GCN-LABEL: name: test_merge_values_s_s192_s_s64_s_s64_s_s64
314 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5
316 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
317 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
318 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5
319 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_192 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5
320 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
321 %0:sgpr(s64) = COPY $sgpr0_sgpr1
322 %1:sgpr(s64) = COPY $sgpr2_sgpr3
323 %2:sgpr(s64) = COPY $sgpr4_sgpr5
324 %3:sgpr(s192) = G_MERGE_VALUES %0, %1, %2
325 S_ENDPGM 0, implicit %3
329 name: test_merge_values_v_s192_v_s64_v_s64_v_s64
331 regBankSelected: true
332 tracksRegLiveness: true
336 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5
338 ; GCN-LABEL: name: test_merge_values_v_s192_v_s64_v_s64_v_s64
339 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5
341 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
342 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
343 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr4_vgpr5
344 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_192 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5
345 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
346 %0:vgpr(s64) = COPY $vgpr0_vgpr1
347 %1:vgpr(s64) = COPY $vgpr2_vgpr3
348 %2:vgpr(s64) = COPY $vgpr4_vgpr5
349 %3:vgpr(s192) = G_MERGE_VALUES %0, %1, %2
350 S_ENDPGM 0, implicit %3
354 name: test_merge_values_s_s256_s_s64_s_s64_s_s64_s_s64
356 regBankSelected: true
357 tracksRegLiveness: true
361 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7
363 ; GCN-LABEL: name: test_merge_values_s_s256_s_s64_s_s64_s_s64_s_s64
364 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7
366 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
367 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
368 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5
369 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7
370 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5, [[COPY3]], %subreg.sub6_sub7
371 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]
372 %0:sgpr(s64) = COPY $sgpr0_sgpr1
373 %1:sgpr(s64) = COPY $sgpr2_sgpr3
374 %2:sgpr(s64) = COPY $sgpr4_sgpr5
375 %3:sgpr(s64) = COPY $sgpr6_sgpr7
376 %4:sgpr(s256) = G_MERGE_VALUES %0, %1, %2, %3
377 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %4
381 name: test_merge_values_s_s256_s_s128_s_s128
383 regBankSelected: true
384 tracksRegLiveness: true
388 liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
390 ; GCN-LABEL: name: test_merge_values_s_s256_s_s128_s_s128
391 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7
393 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
394 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7
395 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3, [[COPY1]], %subreg.sub4_sub5_sub6_sub7
396 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]
397 %0:sgpr(s128) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
398 %1:sgpr(s128) = COPY $sgpr4_sgpr5_sgpr6_sgpr7
399 %2:sgpr(s256) = G_MERGE_VALUES %0, %1
400 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %2
404 name: test_merge_values_s_s512_s_s256_s_s256
406 regBankSelected: true
407 tracksRegLiveness: true
411 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
413 ; GCN-LABEL: name: test_merge_values_s_s512_s_s256_s_s256
414 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
416 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
417 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_256 = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
418 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_512 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7, [[COPY1]], %subreg.sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15
419 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]]
420 %0:sgpr(s256) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7,
421 %1:sgpr(s256) = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
422 %4:sgpr(s512) = G_MERGE_VALUES %0, %1
423 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %4
427 name: test_merge_values_s_s512_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64
429 regBankSelected: true
430 tracksRegLiveness: true
434 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr14_sgpr15
436 ; GCN-LABEL: name: test_merge_values_s_s512_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64
437 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr14_sgpr15
439 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
440 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
441 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5
442 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7
443 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_64 = COPY $sgpr8_sgpr9
444 ; GCN-NEXT: [[COPY5:%[0-9]+]]:sreg_64 = COPY $sgpr10_sgpr11
445 ; GCN-NEXT: [[COPY6:%[0-9]+]]:sreg_64 = COPY $sgpr12_sgpr13
446 ; GCN-NEXT: [[COPY7:%[0-9]+]]:sreg_64 = COPY $sgpr14_sgpr15
447 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_512 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5, [[COPY3]], %subreg.sub6_sub7, [[COPY4]], %subreg.sub8_sub9, [[COPY5]], %subreg.sub10_sub11, [[COPY6]], %subreg.sub12_sub13, [[COPY7]], %subreg.sub14_sub15
448 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]]
449 %0:sgpr(s64) = COPY $sgpr0_sgpr1
450 %1:sgpr(s64) = COPY $sgpr2_sgpr3
451 %2:sgpr(s64) = COPY $sgpr4_sgpr5
452 %3:sgpr(s64) = COPY $sgpr6_sgpr7
453 %4:sgpr(s64) = COPY $sgpr8_sgpr9
454 %5:sgpr(s64) = COPY $sgpr10_sgpr11
455 %6:sgpr(s64) = COPY $sgpr12_sgpr13
456 %7:sgpr(s64) = COPY $sgpr14_sgpr15
457 %8:sgpr(s512) = G_MERGE_VALUES %0, %1, %2, %3, %4, %5, %6, %7
458 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %8
462 name: test_merge_values_v_v512_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64
464 regBankSelected: true
465 tracksRegLiveness: true
469 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15
471 ; GCN-LABEL: name: test_merge_values_v_v512_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64
472 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15
474 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
475 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
476 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr4_vgpr5
477 ; GCN-NEXT: [[COPY3:%[0-9]+]]:vreg_64 = COPY $vgpr6_vgpr7
478 ; GCN-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr8_vgpr9
479 ; GCN-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY $vgpr10_vgpr11
480 ; GCN-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY $vgpr12_vgpr13
481 ; GCN-NEXT: [[COPY7:%[0-9]+]]:vreg_64 = COPY $vgpr14_vgpr15
482 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_512 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5, [[COPY3]], %subreg.sub6_sub7, [[COPY4]], %subreg.sub8_sub9, [[COPY5]], %subreg.sub10_sub11, [[COPY6]], %subreg.sub12_sub13, [[COPY7]], %subreg.sub14_sub15
483 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[REG_SEQUENCE]]
484 %0:vgpr(s64) = COPY $vgpr0_vgpr1
485 %1:vgpr(s64) = COPY $vgpr2_vgpr3
486 %2:vgpr(s64) = COPY $vgpr4_vgpr5
487 %3:vgpr(s64) = COPY $vgpr6_vgpr7
488 %4:vgpr(s64) = COPY $vgpr8_vgpr9
489 %5:vgpr(s64) = COPY $vgpr10_vgpr11
490 %6:vgpr(s64) = COPY $vgpr12_vgpr13
491 %7:vgpr(s64) = COPY $vgpr14_vgpr15
492 %8:vgpr(s512) = G_MERGE_VALUES %0, %1, %2, %3, %4, %5, %6, %7
493 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %8
497 name: test_merge_values_rc_already_set_src_v_s64_v_s32_v_s32
499 regBankSelected: true
500 tracksRegLiveness: true
504 liveins: $vgpr0, $vgpr1
506 ; GCN-LABEL: name: test_merge_values_rc_already_set_src_v_s64_v_s32_v_s32
507 ; GCN: liveins: $vgpr0, $vgpr1
509 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
510 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
511 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
512 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
513 %0:vgpr_32(s32) = COPY $vgpr0
514 %1:vgpr_32(s32) = COPY $vgpr1
515 %2:vgpr(s64) = G_MERGE_VALUES %0, %1
516 S_ENDPGM 0, implicit %2
520 name: test_merge_values_rc_already_set_dst_v_s64_v_s32_v_s32
522 regBankSelected: true
523 tracksRegLiveness: true
527 liveins: $vgpr0, $vgpr1
529 ; GCN-LABEL: name: test_merge_values_rc_already_set_dst_v_s64_v_s32_v_s32
530 ; GCN: liveins: $vgpr0, $vgpr1
532 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
533 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
534 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
535 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
536 %0:vgpr(s32) = COPY $vgpr0
537 %1:vgpr(s32) = COPY $vgpr1
538 %2:vreg_64(s64) = G_MERGE_VALUES %0, %1
539 S_ENDPGM 0, implicit %2
543 name: test_merge_values_s_s1024_s_s256_s_s256_s_s256_s_s256
545 regBankSelected: true
546 tracksRegLiveness: true
550 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
552 ; GCN-LABEL: name: test_merge_values_s_s1024_s_s256_s_s256_s_s256_s_s256
553 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
555 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7
556 ; GCN-NEXT: [[DEF:%[0-9]+]]:sgpr_256 = IMPLICIT_DEF
557 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_256 = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
558 ; GCN-NEXT: [[DEF1:%[0-9]+]]:sgpr_256 = IMPLICIT_DEF
559 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_1024 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7, [[DEF]], %subreg.sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15, [[COPY1]], %subreg.sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23, [[DEF1]], %subreg.sub24_sub25_sub26_sub27_sub28_sub29_sub30_sub31
560 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
561 %0:sgpr(s256) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7,
562 %1:sgpr(s256) = G_IMPLICIT_DEF
563 %2:sgpr(s256) = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
564 %3:sgpr(s256) = G_IMPLICIT_DEF
565 %4:sgpr(s1024) = G_MERGE_VALUES %0, %1, %2, %3
566 S_ENDPGM 0, implicit %4
571 name: test_merge_values_s_s1024_s_s512
573 regBankSelected: true
574 tracksRegLiveness: true
578 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15, $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31
580 ; GCN-LABEL: name: test_merge_values_s_s1024_s_s512
581 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15, $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31
583 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_512 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
584 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_512 = COPY $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31
585 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_1024 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15, [[COPY1]], %subreg.sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23_sub24_sub25_sub26_sub27_sub28_sub29_sub30_sub31
586 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31 = COPY [[REG_SEQUENCE]]
587 %0:sgpr(s512) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
588 %1:sgpr(s512) = COPY $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31
589 %2:sgpr(s1024) = G_MERGE_VALUES %0, %1
590 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31 = COPY %2