356 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -O0 -run-pass=legalizer %s -o - | FileCheck %s3 4---5name: shufflevector_scalar_src6tracksRegLiveness: true7 8body: |9 bb.0:10 liveins: $vgpr0, $vgpr111 12 ; CHECK-LABEL: name: shufflevector_scalar_src13 ; CHECK: liveins: $vgpr0, $vgpr114 ; CHECK-NEXT: {{ $}}15 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr016 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr117 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)18 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)19 %0:_(s32) = COPY $vgpr020 %1:_(s32) = COPY $vgpr121 %2:_(<2 x s32>) = G_BUILD_VECTOR %0, %122 $vgpr0_vgpr1 = COPY %223 24...25 26---27name: shufflevector_v2s32_0_128tracksRegLiveness: true29 30body: |31 bb.0:32 liveins: $vgpr0_vgpr1, $vgpr2_vgpr333 34 ; CHECK-LABEL: name: shufflevector_v2s32_0_135 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr336 ; CHECK-NEXT: {{ $}}37 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr138 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr339 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)40 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV]](s32)41 ; CHECK-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)42 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV3]](s32)43 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY2]](s32), [[COPY3]](s32)44 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)45 %0:_(<2 x s32>) = COPY $vgpr0_vgpr146 %1:_(<2 x s32>) = COPY $vgpr2_vgpr347 %2:_(<2 x s32>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 1)48 $vgpr0_vgpr1 = COPY %249 50...51 52---53name: shufflevector_v2s32_1_054tracksRegLiveness: true55 56body: |57 bb.0:58 liveins: $vgpr0_vgpr1, $vgpr2_vgpr359 60 ; CHECK-LABEL: name: shufflevector_v2s32_1_061 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr362 ; CHECK-NEXT: {{ $}}63 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr164 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr365 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)66 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV1]](s32)67 ; CHECK-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)68 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV2]](s32)69 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY2]](s32), [[COPY3]](s32)70 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)71 %0:_(<2 x s32>) = COPY $vgpr0_vgpr172 %1:_(<2 x s32>) = COPY $vgpr2_vgpr373 %2:_(<2 x s32>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(1, 0)74 $vgpr0_vgpr1 = COPY %275 76...77 78---79name: shufflevector_v2s32_0_080tracksRegLiveness: true81 82body: |83 bb.0:84 liveins: $vgpr0_vgpr1, $vgpr2_vgpr385 86 ; CHECK-LABEL: name: shufflevector_v2s32_0_087 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr388 ; CHECK-NEXT: {{ $}}89 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr190 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr391 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)92 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV]](s32)93 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY2]](s32), [[COPY2]](s32)94 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)95 %0:_(<2 x s32>) = COPY $vgpr0_vgpr196 %1:_(<2 x s32>) = COPY $vgpr2_vgpr397 %2:_(<2 x s32>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 0)98 $vgpr0_vgpr1 = COPY %299 100...101 102---103name: shufflevector_v2s32_undef_undef104tracksRegLiveness: true105 106body: |107 bb.0:108 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3109 110 ; CHECK-LABEL: name: shufflevector_v2s32_undef_undef111 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3112 ; CHECK-NEXT: {{ $}}113 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1114 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3115 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF116 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[DEF]](s32), [[DEF]](s32)117 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)118 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1119 %1:_(<2 x s32>) = COPY $vgpr2_vgpr3120 %2:_(<2 x s32>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, undef)121 $vgpr0_vgpr1 = COPY %2122 123...124 125---126name: shufflevector_v2s32_undef_0127tracksRegLiveness: true128 129body: |130 bb.0:131 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3132 133 ; CHECK-LABEL: name: shufflevector_v2s32_undef_0134 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3135 ; CHECK-NEXT: {{ $}}136 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1137 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3138 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF139 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)140 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV]](s32)141 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[DEF]](s32), [[COPY2]](s32)142 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)143 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1144 %1:_(<2 x s32>) = COPY $vgpr2_vgpr3145 %2:_(<2 x s32>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, 0)146 $vgpr0_vgpr1 = COPY %2147 148...149 150---151name: shufflevector_v2s32_0_undef152tracksRegLiveness: true153 154body: |155 bb.0:156 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3157 158 ; CHECK-LABEL: name: shufflevector_v2s32_0_undef159 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3160 ; CHECK-NEXT: {{ $}}161 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1162 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3163 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[COPY]](<2 x s32>)164 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1165 %1:_(<2 x s32>) = COPY $vgpr2_vgpr3166 %2:_(<2 x s32>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, undef)167 $vgpr0_vgpr1 = COPY %2168 169...170 171---172name: shufflevector_v3s32_3_2_1173tracksRegLiveness: true174 175body: |176 bb.0:177 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5178 179 ; CHECK-LABEL: name: shufflevector_v3s32_3_2_1180 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5181 ; CHECK-NEXT: {{ $}}182 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2183 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr3_vgpr4_vgpr5184 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>)185 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV]](s32)186 ; CHECK-NEXT: [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)187 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV5]](s32)188 ; CHECK-NEXT: [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32), [[UV8:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)189 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV7]](s32)190 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32)191 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)192 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2193 %1:_(<3 x s32>) = COPY $vgpr3_vgpr4_vgpr5194 %2:_(<3 x s32>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(3, 2, 1)195 $vgpr0_vgpr1_vgpr2 = COPY %2196 197...198 199---200name: shufflevector_v3s32_3_2_1_smaller201tracksRegLiveness: true202 203body: |204 bb.0:205 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5206 207 ; CHECK-LABEL: name: shufflevector_v3s32_3_2_1_smaller208 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5209 ; CHECK-NEXT: {{ $}}210 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2211 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr3_vgpr4_vgpr5212 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)213 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV2]](s32)214 ; CHECK-NEXT: [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)215 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV4]](s32)216 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY2]](s32), [[COPY3]](s32)217 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)218 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2219 %1:_(<3 x s32>) = COPY $vgpr3_vgpr4_vgpr5220 %2:_(<2 x s32>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(2, 1)221 $vgpr0_vgpr1 = COPY %2222 223...224 225---226name: shufflevector_v2s16_0_1227tracksRegLiveness: true228 229body: |230 bb.0:231 liveins: $vgpr0, $vgpr1232 233 ; CHECK-LABEL: name: shufflevector_v2s16_0_1234 ; CHECK: liveins: $vgpr0, $vgpr1235 ; CHECK-NEXT: {{ $}}236 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0237 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1238 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0239 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)240 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)241 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)242 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16243 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C1]](s32)244 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535245 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[LSHR]], [[C2]]246 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR1]], [[C1]](s32)247 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]248 ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)249 ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST2]](<2 x s16>)250 %0:_(<2 x s16>) = COPY $vgpr0251 %1:_(<2 x s16>) = COPY $vgpr1252 %2:_(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 1)253 $vgpr0 = COPY %2254 255...256 257---258name: shufflevector_v2s16_1_0259tracksRegLiveness: true260 261body: |262 bb.0:263 liveins: $vgpr0, $vgpr1264 265 ; CHECK-LABEL: name: shufflevector_v2s16_1_0266 ; CHECK: liveins: $vgpr0, $vgpr1267 ; CHECK-NEXT: {{ $}}268 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0269 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1270 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)271 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0272 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16273 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C1]](s32)274 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)275 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32)276 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535277 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[LSHR1]], [[C2]]278 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32)279 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[LSHR]], [[SHL]]280 ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)281 ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST2]](<2 x s16>)282 %0:_(<2 x s16>) = COPY $vgpr0283 %1:_(<2 x s16>) = COPY $vgpr1284 %2:_(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(1, 0)285 $vgpr0 = COPY %2286 287...288 289---290name: shufflevector_v3s16_2_0291tracksRegLiveness: true292 293body: |294 bb.0:295 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3296 297 ; CHECK-LABEL: name: shufflevector_v3s16_2_0298 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3299 ; CHECK-NEXT: {{ $}}300 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1301 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr2_vgpr3302 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)303 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)304 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16305 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)306 ; CHECK-NEXT: [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY1]](<4 x s16>)307 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV2]](<2 x s16>)308 ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV3]](<2 x s16>)309 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535310 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST2]], [[C1]]311 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)312 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]313 ; CHECK-NEXT: [[BITCAST3:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)314 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST1]], [[C1]]315 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]316 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C]](s32)317 ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL1]]318 ; CHECK-NEXT: [[BITCAST4:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)319 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST3]](<2 x s16>), [[BITCAST4]](<2 x s16>)320 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)321 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1322 %1:_(<4 x s16>) = COPY $vgpr2_vgpr3323 %2:_(<3 x s16>) = G_EXTRACT %0, 0324 %3:_(<3 x s16>) = G_EXTRACT %1, 0325 %4:_(<4 x s16>) = G_SHUFFLE_VECTOR %2, %3, shufflemask(5, 1, 3, 0)326 $vgpr0_vgpr1 = COPY %4327 328...329 330---331name: shufflevector_cache_element332tracksRegLiveness: true333 334body: |335 bb.0:336 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3337 338 ; CHECK-LABEL: name: shufflevector_cache_element339 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3340 ; CHECK-NEXT: {{ $}}341 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0342 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1343 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)344 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)345 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY2]](s32), [[COPY2]](s32), [[COPY2]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY3]](s32), [[COPY3]](s32), [[COPY3]](s32)346 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<8 x s32>), [[COPY1]](s32)347 ; CHECK-NEXT: $vgpr0 = COPY [[EVEC]](s32)348 %0:_(s32) = COPY $vgpr0349 %1:_(s32) = COPY $vgpr1350 %2:_(<2 x s32>) = G_BUILD_VECTOR %0, %1351 %3:_(<8 x s32>) = G_SHUFFLE_VECTOR %2, %2, shufflemask(0, 0, 0, 0, 3, 3, 3, 3)352 %4:_(s32) = G_EXTRACT_VECTOR_ELT %3(<8 x s32>), %1(s32)353 $vgpr0 = COPY %4354 355...356