xref: /llvm-project/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-concat-vector.mir (revision 87503fa51c8d726510d48e707a7d2885a5b5936c)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn -mcpu=gfx908 -run-pass=regbankselect -regbankselect-fast -verify-machineinstrs -o - %s | FileCheck %s
3# RUN: llc -mtriple=amdgcn -mcpu=gfx908 -run-pass=regbankselect -regbankselect-greedy -verify-machineinstrs -o - %s | FileCheck %s
4
5---
6name: concat_vectors_v4s16_ss
7legalized: true
8
9body: |
10  bb.0:
11    liveins: $sgpr0, $sgpr1
12    ; CHECK-LABEL: name: concat_vectors_v4s16_ss
13    ; CHECK: liveins: $sgpr0, $sgpr1
14    ; CHECK-NEXT: {{  $}}
15    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0
16    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr1
17    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:sgpr(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)
18    %0:_(<2 x s16>) = COPY $sgpr0
19    %1:_(<2 x s16>) = COPY $sgpr1
20    %2:_(<4 x s16>) = G_CONCAT_VECTORS %0, %1
21...
22
23---
24name: concat_vectors_v4s16_sv
25legalized: true
26
27body: |
28  bb.0:
29    liveins: $sgpr0, $vgpr0
30    ; CHECK-LABEL: name: concat_vectors_v4s16_sv
31    ; CHECK: liveins: $sgpr0, $vgpr0
32    ; CHECK-NEXT: {{  $}}
33    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0
34    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0
35    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY]](<2 x s16>)
36    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY1]](<2 x s16>)
37    %0:_(<2 x s16>) = COPY $sgpr0
38    %1:_(<2 x s16>) = COPY $vgpr0
39    %2:_(<4 x s16>) = G_CONCAT_VECTORS %0, %1
40...
41
42---
43name: concat_vectors_v4s16_vs
44legalized: true
45
46body: |
47  bb.0:
48    liveins: $vgpr0, $sgpr0
49    ; CHECK-LABEL: name: concat_vectors_v4s16_vs
50    ; CHECK: liveins: $vgpr0, $sgpr0
51    ; CHECK-NEXT: {{  $}}
52    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0
53    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0
54    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY1]](<2 x s16>)
55    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY2]](<2 x s16>)
56    %0:_(<2 x s16>) = COPY $vgpr0
57    %1:_(<2 x s16>) = COPY $sgpr0
58    %2:_(<4 x s16>) = G_CONCAT_VECTORS %0, %1
59...
60
61---
62name: concat_vectors_v4s16_vv
63legalized: true
64
65body: |
66  bb.0:
67    liveins: $vgpr0, $vgpr1
68    ; CHECK-LABEL: name: concat_vectors_v4s16_vv
69    ; CHECK: liveins: $vgpr0, $vgpr1
70    ; CHECK-NEXT: {{  $}}
71    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0
72    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr1
73    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)
74    %0:_(<2 x s16>) = COPY $vgpr0
75    %1:_(<2 x s16>) = COPY $vgpr1
76    %2:_(<4 x s16>) = G_CONCAT_VECTORS %0, %1
77...
78
79---
80name: concat_vectors_v4s16_aa
81legalized: true
82
83body: |
84  bb.0:
85    liveins: $agpr0, $agpr1
86    ; CHECK-LABEL: name: concat_vectors_v4s16_aa
87    ; CHECK: liveins: $agpr0, $agpr1
88    ; CHECK-NEXT: {{  $}}
89    ; CHECK-NEXT: [[COPY:%[0-9]+]]:agpr(<2 x s16>) = COPY $agpr0
90    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:agpr(<2 x s16>) = COPY $agpr1
91    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:agpr(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)
92    ; CHECK-NEXT: S_ENDPGM 0, implicit [[CONCAT_VECTORS]](<4 x s16>)
93    %0:_(<2 x s16>) = COPY $agpr0
94    %1:_(<2 x s16>) = COPY $agpr1
95    %2:_(<4 x s16>) = G_CONCAT_VECTORS %0, %1
96    S_ENDPGM 0, implicit %2
97...
98
99---
100name: concat_vectors_v4s16_av
101legalized: true
102
103body: |
104  bb.0:
105    liveins: $agpr0, $vgpr0
106    ; CHECK-LABEL: name: concat_vectors_v4s16_av
107    ; CHECK: liveins: $agpr0, $vgpr0
108    ; CHECK-NEXT: {{  $}}
109    ; CHECK-NEXT: [[COPY:%[0-9]+]]:agpr(<2 x s16>) = COPY $agpr0
110    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0
111    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY]](<2 x s16>)
112    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY1]](<2 x s16>)
113    ; CHECK-NEXT: S_ENDPGM 0, implicit [[CONCAT_VECTORS]](<4 x s16>)
114    %0:_(<2 x s16>) = COPY $agpr0
115    %1:_(<2 x s16>) = COPY $vgpr0
116    %2:_(<4 x s16>) = G_CONCAT_VECTORS %0, %1
117    S_ENDPGM 0, implicit %2
118...
119
120---
121name: concat_vectors_v4s16_va
122legalized: true
123
124body: |
125  bb.0:
126    liveins: $agpr0, $vgpr0
127    ; CHECK-LABEL: name: concat_vectors_v4s16_va
128    ; CHECK: liveins: $agpr0, $vgpr0
129    ; CHECK-NEXT: {{  $}}
130    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0
131    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:agpr(<2 x s16>) = COPY $agpr0
132    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY1]](<2 x s16>)
133    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY2]](<2 x s16>)
134    ; CHECK-NEXT: S_ENDPGM 0, implicit [[CONCAT_VECTORS]](<4 x s16>)
135    %0:_(<2 x s16>) = COPY $vgpr0
136    %1:_(<2 x s16>) = COPY $agpr0
137    %2:_(<4 x s16>) = G_CONCAT_VECTORS %0, %1
138    S_ENDPGM 0, implicit %2
139...
140
141---
142name: concat_vectors_v4s16_as
143legalized: true
144
145body: |
146  bb.0:
147    liveins: $agpr0, $sgpr0
148    ; CHECK-LABEL: name: concat_vectors_v4s16_as
149    ; CHECK: liveins: $agpr0, $sgpr0
150    ; CHECK-NEXT: {{  $}}
151    ; CHECK-NEXT: [[COPY:%[0-9]+]]:agpr(<2 x s16>) = COPY $agpr0
152    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0
153    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY]](<2 x s16>)
154    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY1]](<2 x s16>)
155    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)
156    ; CHECK-NEXT: S_ENDPGM 0, implicit [[CONCAT_VECTORS]](<4 x s16>)
157    %0:_(<2 x s16>) = COPY $agpr0
158    %1:_(<2 x s16>) = COPY $sgpr0
159    %2:_(<4 x s16>) = G_CONCAT_VECTORS %0, %1
160    S_ENDPGM 0, implicit %2
161...
162
163---
164name: concat_vectors_v4s16_sa
165legalized: true
166
167body: |
168  bb.0:
169    liveins: $agpr0, $sgpr0
170    ; CHECK-LABEL: name: concat_vectors_v4s16_sa
171    ; CHECK: liveins: $agpr0, $sgpr0
172    ; CHECK-NEXT: {{  $}}
173    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0
174    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:agpr(<2 x s16>) = COPY $agpr0
175    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY]](<2 x s16>)
176    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY1]](<2 x s16>)
177    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)
178    ; CHECK-NEXT: S_ENDPGM 0, implicit [[CONCAT_VECTORS]](<4 x s16>)
179    %0:_(<2 x s16>) = COPY $sgpr0
180    %1:_(<2 x s16>) = COPY $agpr0
181    %2:_(<4 x s16>) = G_CONCAT_VECTORS %0, %1
182    S_ENDPGM 0, implicit %2
183...
184