1108 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-- -O0 -run-pass=legalizer -global-isel-abort=0 -o - %s | FileCheck %s3 4---5name: test_unmerge_s32_s646body: |7 bb.0:8 ; CHECK-LABEL: name: test_unmerge_s32_s649 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 010 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[C]](s64)11 ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)12 ; CHECK-NEXT: $vgpr1 = COPY [[UV1]](s32)13 %0:_(s64) = G_CONSTANT i64 014 %1:_(s32), %2:_(s32) = G_UNMERGE_VALUES %0:_(s64)15 $vgpr0 = COPY %1(s32)16 $vgpr1 = COPY %2(s32)17...18 19---20name: test_unmerge_s32_v2s3221body: |22 bb.0:23 liveins: $vgpr0_vgpr124 ; CHECK-LABEL: name: test_unmerge_s32_v2s3225 ; CHECK: liveins: $vgpr0_vgpr126 ; CHECK-NEXT: {{ $}}27 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr128 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)29 ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)30 ; CHECK-NEXT: $vgpr1 = COPY [[UV1]](s32)31 %0:_(<2 x s32>) = COPY $vgpr0_vgpr132 %1:_(s32), %2:_(s32) = G_UNMERGE_VALUES %033 $vgpr0 = COPY %134 $vgpr1 = COPY %235...36 37---38name: test_unmerge_s32_v7s6439body: |40 bb.0:41 liveins:42 ; CHECK-LABEL: name: test_unmerge_s32_v7s6443 ; CHECK: [[DEF:%[0-9]+]]:_(<7 x s64>) = IMPLICIT_DEF44 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32), [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32), [[UV12:%[0-9]+]]:_(s32), [[UV13:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<7 x s64>)45 ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)46 ; CHECK-NEXT: $vgpr1 = COPY [[UV1]](s32)47 ; CHECK-NEXT: $vgpr2 = COPY [[UV2]](s32)48 ; CHECK-NEXT: $vgpr3 = COPY [[UV3]](s32)49 ; CHECK-NEXT: $vgpr4 = COPY [[UV4]](s32)50 ; CHECK-NEXT: $vgpr5 = COPY [[UV5]](s32)51 ; CHECK-NEXT: $vgpr6 = COPY [[UV6]](s32)52 ; CHECK-NEXT: $vgpr7 = COPY [[UV7]](s32)53 ; CHECK-NEXT: $vgpr8 = COPY [[UV8]](s32)54 ; CHECK-NEXT: $vgpr9 = COPY [[UV9]](s32)55 ; CHECK-NEXT: $vgpr10 = COPY [[UV10]](s32)56 ; CHECK-NEXT: $vgpr11 = COPY [[UV11]](s32)57 ; CHECK-NEXT: $vgpr12 = COPY [[UV12]](s32)58 ; CHECK-NEXT: $vgpr13 = COPY [[UV13]](s32)59 %0:_(<7 x s64>) = IMPLICIT_DEF60 %1:_(s32), %2:_(s32), %3:_(s32), %4:_(s32), %5:_(s32), %6:_(s32), %7:_(s32), %8:_(s32), %9:_(s32), %10:_(s32), %11:_(s32), %12:_(s32), %13:_(s32), %14:_(s32) = G_UNMERGE_VALUES %061 $vgpr0 = COPY %162 $vgpr1 = COPY %263 $vgpr2 = COPY %364 $vgpr3 = COPY %465 $vgpr4 = COPY %566 $vgpr5 = COPY %667 $vgpr6 = COPY %768 $vgpr7 = COPY %869 $vgpr8 = COPY %970 $vgpr9 = COPY %1071 $vgpr10 = COPY %1172 $vgpr11 = COPY %1273 $vgpr12 = COPY %1374 $vgpr13 = COPY %1475...76 77---78name: test_unmerge_s16_v2s1679body: |80 bb.0:81 liveins: $vgpr082 ; CHECK-LABEL: name: test_unmerge_s16_v2s1683 ; CHECK: liveins: $vgpr084 ; CHECK-NEXT: {{ $}}85 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr086 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)87 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1688 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)89 ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST]](s32)90 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR]](s32)91 %0:_(<2 x s16>) = COPY $vgpr092 %1:_(s16), %2:_(s16) = G_UNMERGE_VALUES %093 %3:_(s32) = G_ANYEXT %194 %4:_(s32) = G_ANYEXT %295 $vgpr0 = COPY %396 $vgpr1 = COPY %497...98 99---100name: test_unmerge_s16_v3s16101body: |102 bb.0:103 ; CHECK-LABEL: name: test_unmerge_s16_v3s16104 ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF105 ; CHECK-NEXT: $vgpr0 = COPY [[DEF]](s32)106 ; CHECK-NEXT: $vgpr1 = COPY [[DEF]](s32)107 ; CHECK-NEXT: $vgpr2 = COPY [[DEF]](s32)108 %0:_(<3 x s16>) = G_IMPLICIT_DEF109 %1:_(s16), %2:_(s16), %3:_(s16) = G_UNMERGE_VALUES %0110 %4:_(s32) = G_ANYEXT %1111 %5:_(s32) = G_ANYEXT %2112 %6:_(s32) = G_ANYEXT %3113 $vgpr0 = COPY %4114 $vgpr1 = COPY %5115 $vgpr2 = COPY %6116...117 118---119 120name: test_unmerge_s16_v4s16121body: |122 bb.0:123 liveins: $vgpr0_vgpr1124 ; CHECK-LABEL: name: test_unmerge_s16_v4s16125 ; CHECK: liveins: $vgpr0_vgpr1126 ; CHECK-NEXT: {{ $}}127 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1128 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)129 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)130 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16131 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)132 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)133 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32)134 ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST]](s32)135 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR]](s32)136 ; CHECK-NEXT: $vgpr2 = COPY [[BITCAST1]](s32)137 ; CHECK-NEXT: $vgpr3 = COPY [[LSHR1]](s32)138 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1139 %1:_(s16), %2:_(s16), %3:_(s16), %4:_(s16) = G_UNMERGE_VALUES %0140 %5:_(s32) = G_ANYEXT %1141 %6:_(s32) = G_ANYEXT %2142 %7:_(s32) = G_ANYEXT %3143 %8:_(s32) = G_ANYEXT %4144 $vgpr0 = COPY %5145 $vgpr1 = COPY %6146 $vgpr2 = COPY %7147 $vgpr3 = COPY %8148...149 150---151name: test_unmerge_s16_v6s16152body: |153 bb.0:154 liveins: $vgpr0_vgpr1155 ; CHECK-LABEL: name: test_unmerge_s16_v6s16156 ; CHECK: liveins: $vgpr0_vgpr1157 ; CHECK-NEXT: {{ $}}158 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2159 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>), [[UV2:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<6 x s16>)160 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)161 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16162 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)163 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)164 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32)165 ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV2]](<2 x s16>)166 ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C]](s32)167 ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST]](s32)168 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR]](s32)169 ; CHECK-NEXT: $vgpr2 = COPY [[BITCAST1]](s32)170 ; CHECK-NEXT: $vgpr3 = COPY [[LSHR1]](s32)171 ; CHECK-NEXT: $vgpr4 = COPY [[BITCAST2]](s32)172 ; CHECK-NEXT: $vgpr5 = COPY [[LSHR2]](s32)173 %0:_(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2174 %1:_(s16), %2:_(s16), %3:_(s16), %4:_(s16), %5:_(s16), %6:_(s16) = G_UNMERGE_VALUES %0175 %7:_(s32) = G_ANYEXT %1176 %8:_(s32) = G_ANYEXT %2177 %9:_(s32) = G_ANYEXT %3178 %10:_(s32) = G_ANYEXT %4179 %11:_(s32) = G_ANYEXT %5180 %12:_(s32) = G_ANYEXT %6181 $vgpr0 = COPY %7182 $vgpr1 = COPY %8183 $vgpr2 = COPY %9184 $vgpr3 = COPY %10185 $vgpr4 = COPY %11186 $vgpr5 = COPY %12187...188 189---190 191name: test_unmerge_s8_s16192body: |193 bb.0:194 liveins: $vgpr0195 ; CHECK-LABEL: name: test_unmerge_s8_s16196 ; CHECK: liveins: $vgpr0197 ; CHECK-NEXT: {{ $}}198 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0199 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8200 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)201 ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)202 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR]](s32)203 %0:_(s32) = COPY $vgpr0204 %1:_(s16) = G_TRUNC %0205 %2:_(s8), %3:_(s8) = G_UNMERGE_VALUES %1206 %4:_(s32) = G_ANYEXT %2207 %5:_(s32) = G_ANYEXT %3208 $vgpr0 = COPY %4209 $vgpr1 = COPY %5210...211 212---213name: test_unmerge_s8_s32214body: |215 bb.0:216 liveins: $vgpr0217 ; CHECK-LABEL: name: test_unmerge_s8_s32218 ; CHECK: liveins: $vgpr0219 ; CHECK-NEXT: {{ $}}220 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0221 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8222 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)223 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16224 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C1]](s32)225 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 24226 ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C2]](s32)227 ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)228 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR]](s32)229 ; CHECK-NEXT: $vgpr2 = COPY [[LSHR1]](s32)230 ; CHECK-NEXT: $vgpr3 = COPY [[LSHR2]](s32)231 %0:_(s32) = COPY $vgpr0232 %1:_(s8), %2:_(s8), %3:_(s8), %4:_(s8) = G_UNMERGE_VALUES %0233 %5:_(s32) = G_ANYEXT %1234 %6:_(s32) = G_ANYEXT %2235 %7:_(s32) = G_ANYEXT %3236 %8:_(s32) = G_ANYEXT %4237 $vgpr0 = COPY %5238 $vgpr1 = COPY %6239 $vgpr2 = COPY %7240 $vgpr3 = COPY %8241...242 243---244name: test_unmerge_s8_s48245body: |246 bb.0:247 liveins: $vgpr0_vgpr1248 ; CHECK-LABEL: name: test_unmerge_s8_s48249 ; CHECK: liveins: $vgpr0_vgpr1250 ; CHECK-NEXT: {{ $}}251 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1252 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)253 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16254 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32)255 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8256 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C1]](s32)257 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535258 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C2]]259 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[COPY1]](s32)260 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C1]](s32)261 ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[LSHR]], [[COPY2]](s32)262 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C2]]263 ; CHECK-NEXT: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[AND1]], [[C1]](s32)264 ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)265 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR1]](s32)266 ; CHECK-NEXT: $vgpr2 = COPY [[LSHR]](s32)267 ; CHECK-NEXT: $vgpr3 = COPY [[LSHR2]](s32)268 ; CHECK-NEXT: $vgpr4 = COPY [[UV1]](s32)269 ; CHECK-NEXT: $vgpr5 = COPY [[LSHR3]](s32)270 %0:_(s64) = COPY $vgpr0_vgpr1271 %1:_(s48) = G_TRUNC %0272 %2:_(s8), %3:_(s8), %4:_(s8), %5:_(s8), %6:_(s8), %7:_(s8) = G_UNMERGE_VALUES %1273 %8:_(s32) = G_ANYEXT %2274 %9:_(s32) = G_ANYEXT %3275 %10:_(s32) = G_ANYEXT %4276 %11:_(s32) = G_ANYEXT %5277 %12:_(s32) = G_ANYEXT %6278 %13:_(s32) = G_ANYEXT %7279 $vgpr0 = COPY %8280 $vgpr1 = COPY %9281 $vgpr2 = COPY %10282 $vgpr3 = COPY %11283 $vgpr4 = COPY %12284 $vgpr5 = COPY %13285...286 287---288name: test_unmerge_s16_s48289body: |290 bb.0:291 liveins: $vgpr0_vgpr1292 ; CHECK-LABEL: name: test_unmerge_s16_s48293 ; CHECK: liveins: $vgpr0_vgpr1294 ; CHECK-NEXT: {{ $}}295 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1296 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)297 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16298 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32)299 ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)300 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR]](s32)301 ; CHECK-NEXT: $vgpr2 = COPY [[UV1]](s32)302 %0:_(s64) = COPY $vgpr0_vgpr1303 %1:_(s48) = G_TRUNC %0304 %2:_(s16), %3:_(s16), %4:_(s16) = G_UNMERGE_VALUES %1305 %5:_(s32) = G_ANYEXT %2306 %6:_(s32) = G_ANYEXT %3307 %7:_(s32) = G_ANYEXT %4308 $vgpr0 = COPY %5309 $vgpr1 = COPY %6310 $vgpr2 = COPY %7311...312 313---314name: test_unmerge_s8_s64315body: |316 bb.0:317 liveins: $vgpr0_vgpr1318 ; CHECK-LABEL: name: test_unmerge_s8_s64319 ; CHECK: liveins: $vgpr0_vgpr1320 ; CHECK-NEXT: {{ $}}321 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1322 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)323 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16324 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32)325 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C]](s32)326 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8327 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C1]](s32)328 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535329 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C2]]330 ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[COPY1]](s32)331 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C1]](s32)332 ; CHECK-NEXT: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[LSHR]], [[COPY2]](s32)333 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[C1]](s32)334 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C2]]335 ; CHECK-NEXT: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[AND1]], [[COPY3]](s32)336 ; CHECK-NEXT: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[LSHR1]], [[C1]](s32)337 ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)338 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR2]](s32)339 ; CHECK-NEXT: $vgpr2 = COPY [[LSHR]](s32)340 ; CHECK-NEXT: $vgpr3 = COPY [[LSHR3]](s32)341 ; CHECK-NEXT: $vgpr4 = COPY [[UV1]](s32)342 ; CHECK-NEXT: $vgpr5 = COPY [[LSHR4]](s32)343 ; CHECK-NEXT: $vgpr6 = COPY [[LSHR1]](s32)344 ; CHECK-NEXT: $vgpr7 = COPY [[LSHR5]](s32)345 %0:_(s64) = COPY $vgpr0_vgpr1346 %1:_(s8), %2:_(s8), %3:_(s8), %4:_(s8), %5:_(s8), %6:_(s8), %7:_(s8), %8:_(s8) = G_UNMERGE_VALUES %0347 %10:_(s32) = G_ANYEXT %1348 %11:_(s32) = G_ANYEXT %2349 %12:_(s32) = G_ANYEXT %3350 %13:_(s32) = G_ANYEXT %4351 %14:_(s32) = G_ANYEXT %5352 %15:_(s32) = G_ANYEXT %6353 %16:_(s32) = G_ANYEXT %7354 %17:_(s32) = G_ANYEXT %8355 $vgpr0 = COPY %10356 $vgpr1 = COPY %11357 $vgpr2 = COPY %12358 $vgpr3 = COPY %13359 $vgpr4 = COPY %14360 $vgpr5 = COPY %15361 $vgpr6 = COPY %16362 $vgpr7 = COPY %17363...364 365---366name: test_unmerge_s8_p1367body: |368 bb.0:369 liveins: $vgpr0_vgpr1370 ; CHECK-LABEL: name: test_unmerge_s8_p1371 ; CHECK: liveins: $vgpr0_vgpr1372 ; CHECK-NEXT: {{ $}}373 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1374 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](p1)375 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16376 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32)377 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C]](s32)378 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8379 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C1]](s32)380 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535381 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C2]]382 ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[COPY1]](s32)383 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C1]](s32)384 ; CHECK-NEXT: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[LSHR]], [[COPY2]](s32)385 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[C1]](s32)386 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C2]]387 ; CHECK-NEXT: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[AND1]], [[COPY3]](s32)388 ; CHECK-NEXT: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[LSHR1]], [[C1]](s32)389 ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)390 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR2]](s32)391 ; CHECK-NEXT: $vgpr2 = COPY [[LSHR]](s32)392 ; CHECK-NEXT: $vgpr3 = COPY [[LSHR3]](s32)393 ; CHECK-NEXT: $vgpr4 = COPY [[UV1]](s32)394 ; CHECK-NEXT: $vgpr5 = COPY [[LSHR4]](s32)395 ; CHECK-NEXT: $vgpr6 = COPY [[LSHR1]](s32)396 ; CHECK-NEXT: $vgpr7 = COPY [[LSHR5]](s32)397 %0:_(p1) = COPY $vgpr0_vgpr1398 %1:_(s8), %2:_(s8), %3:_(s8), %4:_(s8), %5:_(s8), %6:_(s8), %7:_(s8), %8:_(s8) = G_UNMERGE_VALUES %0399 %10:_(s32) = G_ANYEXT %1400 %11:_(s32) = G_ANYEXT %2401 %12:_(s32) = G_ANYEXT %3402 %13:_(s32) = G_ANYEXT %4403 %14:_(s32) = G_ANYEXT %5404 %15:_(s32) = G_ANYEXT %6405 %16:_(s32) = G_ANYEXT %7406 %17:_(s32) = G_ANYEXT %8407 $vgpr0 = COPY %10408 $vgpr1 = COPY %11409 $vgpr2 = COPY %12410 $vgpr3 = COPY %13411 $vgpr4 = COPY %14412 $vgpr5 = COPY %15413 $vgpr6 = COPY %16414 $vgpr7 = COPY %17415...416 417---418name: test_unmerge_s4_p1419body: |420 bb.0:421 liveins: $vgpr0_vgpr1422 ; CHECK-LABEL: name: test_unmerge_s4_p1423 ; CHECK: liveins: $vgpr0_vgpr1424 ; CHECK-NEXT: {{ $}}425 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1426 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](p1)427 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16428 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32)429 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C]](s32)430 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 4431 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C1]](s32)432 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535433 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C2]]434 ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[COPY1]](s32)435 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 8436 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C3]](s32)437 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C2]]438 ; CHECK-NEXT: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[AND1]], [[COPY2]](s32)439 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 12440 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[C4]](s32)441 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C2]]442 ; CHECK-NEXT: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[AND2]], [[COPY3]](s32)443 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY [[C1]](s32)444 ; CHECK-NEXT: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[LSHR]], [[COPY4]](s32)445 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY [[C3]](s32)446 ; CHECK-NEXT: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[LSHR]], [[COPY5]](s32)447 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY [[C4]](s32)448 ; CHECK-NEXT: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[LSHR]], [[COPY6]](s32)449 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY [[C1]](s32)450 ; CHECK-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C2]]451 ; CHECK-NEXT: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[AND3]], [[COPY7]](s32)452 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY [[C3]](s32)453 ; CHECK-NEXT: [[AND4:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C2]]454 ; CHECK-NEXT: [[LSHR9:%[0-9]+]]:_(s32) = G_LSHR [[AND4]], [[COPY8]](s32)455 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY [[C4]](s32)456 ; CHECK-NEXT: [[AND5:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C2]]457 ; CHECK-NEXT: [[LSHR10:%[0-9]+]]:_(s32) = G_LSHR [[AND5]], [[COPY9]](s32)458 ; CHECK-NEXT: [[LSHR11:%[0-9]+]]:_(s32) = G_LSHR [[LSHR1]], [[C1]](s32)459 ; CHECK-NEXT: [[LSHR12:%[0-9]+]]:_(s32) = G_LSHR [[LSHR1]], [[C3]](s32)460 ; CHECK-NEXT: [[LSHR13:%[0-9]+]]:_(s32) = G_LSHR [[LSHR1]], [[C4]](s32)461 ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)462 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR2]](s32)463 ; CHECK-NEXT: $vgpr2 = COPY [[LSHR3]](s32)464 ; CHECK-NEXT: $vgpr3 = COPY [[LSHR4]](s32)465 ; CHECK-NEXT: $vgpr4 = COPY [[LSHR]](s32)466 ; CHECK-NEXT: $vgpr5 = COPY [[LSHR5]](s32)467 ; CHECK-NEXT: $vgpr6 = COPY [[LSHR6]](s32)468 ; CHECK-NEXT: $vgpr7 = COPY [[LSHR7]](s32)469 ; CHECK-NEXT: $vgpr8 = COPY [[UV1]](s32)470 ; CHECK-NEXT: $vgpr9 = COPY [[LSHR8]](s32)471 ; CHECK-NEXT: $vgpr10 = COPY [[LSHR9]](s32)472 ; CHECK-NEXT: $vgpr11 = COPY [[LSHR10]](s32)473 ; CHECK-NEXT: $vgpr12 = COPY [[LSHR1]](s32)474 ; CHECK-NEXT: $vgpr13 = COPY [[LSHR11]](s32)475 ; CHECK-NEXT: $vgpr14 = COPY [[LSHR12]](s32)476 ; CHECK-NEXT: $vgpr15 = COPY [[LSHR13]](s32)477 %0:_(p1) = COPY $vgpr0_vgpr1478 %1:_(s4), %2:_(s4), %3:_(s4), %4:_(s4), %5:_(s4), %6:_(s4), %7:_(s4), %8:_(s4), %9:_(s4), %10:_(s4), %11:_(s4), %12:_(s4), %13:_(s4), %14:_(s4), %15:_(s4), %16:_(s4) = G_UNMERGE_VALUES %0479 %17:_(s32) = G_ANYEXT %1480 %18:_(s32) = G_ANYEXT %2481 %19:_(s32) = G_ANYEXT %3482 %20:_(s32) = G_ANYEXT %4483 %21:_(s32) = G_ANYEXT %5484 %22:_(s32) = G_ANYEXT %6485 %23:_(s32) = G_ANYEXT %7486 %24:_(s32) = G_ANYEXT %8487 %25:_(s32) = G_ANYEXT %9488 %26:_(s32) = G_ANYEXT %10489 %27:_(s32) = G_ANYEXT %11490 %28:_(s32) = G_ANYEXT %12491 %29:_(s32) = G_ANYEXT %13492 %30:_(s32) = G_ANYEXT %14493 %31:_(s32) = G_ANYEXT %15494 %32:_(s32) = G_ANYEXT %16495 $vgpr0 = COPY %17496 $vgpr1 = COPY %18497 $vgpr2 = COPY %19498 $vgpr3 = COPY %20499 $vgpr4 = COPY %21500 $vgpr5 = COPY %22501 $vgpr6 = COPY %23502 $vgpr7 = COPY %24503 $vgpr8 = COPY %25504 $vgpr9 = COPY %26505 $vgpr10 = COPY %27506 $vgpr11 = COPY %28507 $vgpr12 = COPY %29508 $vgpr13 = COPY %30509 $vgpr14 = COPY %31510 $vgpr15 = COPY %32511...512 513---514name: test_unmerge_s16_p1515body: |516 bb.0:517 liveins: $vgpr0_vgpr1518 ; CHECK-LABEL: name: test_unmerge_s16_p1519 ; CHECK: liveins: $vgpr0_vgpr1520 ; CHECK-NEXT: {{ $}}521 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1522 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](p1)523 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16524 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32)525 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C]](s32)526 ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)527 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR]](s32)528 ; CHECK-NEXT: $vgpr2 = COPY [[UV1]](s32)529 ; CHECK-NEXT: $vgpr3 = COPY [[LSHR1]](s32)530 %0:_(p1) = COPY $vgpr0_vgpr1531 %1:_(s16), %2:_(s16), %3:_(s16), %4:_(s16) = G_UNMERGE_VALUES %0532 %5:_(s32) = G_ANYEXT %1533 %6:_(s32) = G_ANYEXT %2534 %7:_(s32) = G_ANYEXT %3535 %8:_(s32) = G_ANYEXT %4536 $vgpr0 = COPY %5537 $vgpr1 = COPY %6538 $vgpr2 = COPY %7539 $vgpr3 = COPY %8540...541 542---543name: test_unmerge_s32_p1544body: |545 bb.0:546 liveins: $vgpr0_vgpr1547 ; CHECK-LABEL: name: test_unmerge_s32_p1548 ; CHECK: liveins: $vgpr0_vgpr1549 ; CHECK-NEXT: {{ $}}550 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1551 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](p1)552 ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)553 ; CHECK-NEXT: $vgpr1 = COPY [[UV1]](s32)554 %0:_(p1) = COPY $vgpr0_vgpr1555 %1:_(s32), %2:_(s32) = G_UNMERGE_VALUES %0556 $vgpr0 = COPY %1557 $vgpr1 = COPY %2558...559 560---561name: test_unmerge_s16_s32562body: |563 bb.0:564 liveins: $vgpr0565 ; CHECK-LABEL: name: test_unmerge_s16_s32566 ; CHECK: liveins: $vgpr0567 ; CHECK-NEXT: {{ $}}568 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0569 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16570 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)571 ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)572 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR]](s32)573 %0:_(s32) = COPY $vgpr0574 %1:_(s16), %2:_(s16) = G_UNMERGE_VALUES %0575 %3:_(s32) = G_ANYEXT %1576 %4:_(s32) = G_ANYEXT %2577 $vgpr0 = COPY %3578 $vgpr1 = COPY %4579...580 581---582name: test_unmerge_s16_p3583body: |584 bb.0:585 liveins: $vgpr0586 ; CHECK-LABEL: name: test_unmerge_s16_p3587 ; CHECK: liveins: $vgpr0588 ; CHECK-NEXT: {{ $}}589 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0590 ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p3)591 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16592 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[PTRTOINT]], [[C]](s32)593 ; CHECK-NEXT: $vgpr0 = COPY [[PTRTOINT]](s32)594 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR]](s32)595 %0:_(p3) = COPY $vgpr0596 %1:_(s16), %2:_(s16) = G_UNMERGE_VALUES %0597 %3:_(s32) = G_ANYEXT %1598 %4:_(s32) = G_ANYEXT %2599 $vgpr0 = COPY %3600 $vgpr1 = COPY %4601...602 603---604name: test_unmerge_s8_p3605body: |606 bb.0:607 liveins: $vgpr0608 ; CHECK-LABEL: name: test_unmerge_s8_p3609 ; CHECK: liveins: $vgpr0610 ; CHECK-NEXT: {{ $}}611 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0612 ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p3)613 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8614 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[PTRTOINT]], [[C]](s32)615 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16616 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[PTRTOINT]], [[C1]](s32)617 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 24618 ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[PTRTOINT]], [[C2]](s32)619 ; CHECK-NEXT: $vgpr0 = COPY [[PTRTOINT]](s32)620 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR]](s32)621 ; CHECK-NEXT: $vgpr2 = COPY [[LSHR1]](s32)622 ; CHECK-NEXT: $vgpr3 = COPY [[LSHR2]](s32)623 %0:_(p3) = COPY $vgpr0624 %1:_(s8), %2:_(s8), %3:_(s8), %4:_(s8) = G_UNMERGE_VALUES %0625 %5:_(s32) = G_ANYEXT %1626 %6:_(s32) = G_ANYEXT %2627 %7:_(s32) = G_ANYEXT %3628 %8:_(s32) = G_ANYEXT %4629 $vgpr0 = COPY %5630 $vgpr1 = COPY %6631 $vgpr2 = COPY %7632 $vgpr3 = COPY %8633 634...635 636---637name: test_unmerge_s16_s64638body: |639 bb.0:640 liveins: $vgpr0_vgpr1641 ; CHECK-LABEL: name: test_unmerge_s16_s64642 ; CHECK: liveins: $vgpr0_vgpr1643 ; CHECK-NEXT: {{ $}}644 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1645 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)646 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16647 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32)648 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C]](s32)649 ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)650 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR]](s32)651 ; CHECK-NEXT: $vgpr2 = COPY [[UV1]](s32)652 ; CHECK-NEXT: $vgpr3 = COPY [[LSHR1]](s32)653 %0:_(s64) = COPY $vgpr0_vgpr1654 %1:_(s16), %2:_(s16), %3:_(s16), %4:_(s16) = G_UNMERGE_VALUES %0655 %5:_(s32) = G_ANYEXT %1656 %6:_(s32) = G_ANYEXT %2657 %7:_(s32) = G_ANYEXT %3658 %8:_(s32) = G_ANYEXT %4659 $vgpr0 = COPY %5660 $vgpr1 = COPY %6661 $vgpr2 = COPY %7662 $vgpr3 = COPY %8663...664 665---666name: test_unmerge_s1_s3667body: |668 bb.0:669 liveins: $vgpr0670 ; CHECK-LABEL: name: test_unmerge_s1_s3671 ; CHECK: liveins: $vgpr0672 ; CHECK-NEXT: {{ $}}673 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0674 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1675 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)676 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2677 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C1]](s32)678 ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)679 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR]](s32)680 ; CHECK-NEXT: $vgpr2 = COPY [[LSHR1]](s32)681 %0:_(s32) = COPY $vgpr0682 %1:_(s3) = G_TRUNC %0683 %2:_(s1), %3:_(s1), %4:_(s1) = G_UNMERGE_VALUES %1684 %5:_(s32) = G_ANYEXT %2685 %6:_(s32) = G_ANYEXT %3686 %7:_(s32) = G_ANYEXT %4687 $vgpr0 = COPY %5688 $vgpr1 = COPY %6689 $vgpr2 = COPY %7690...691 692---693name: test_unmerge_s1_s8694body: |695 bb.0:696 liveins: $vgpr0697 ; CHECK-LABEL: name: test_unmerge_s1_s8698 ; CHECK: liveins: $vgpr0699 ; CHECK-NEXT: {{ $}}700 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0701 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1702 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)703 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2704 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C1]](s32)705 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 3706 ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C2]](s32)707 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 4708 ; CHECK-NEXT: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C3]](s32)709 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 5710 ; CHECK-NEXT: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C4]](s32)711 ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 6712 ; CHECK-NEXT: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C5]](s32)713 ; CHECK-NEXT: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 7714 ; CHECK-NEXT: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C6]](s32)715 ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)716 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR]](s32)717 ; CHECK-NEXT: $vgpr2 = COPY [[LSHR1]](s32)718 ; CHECK-NEXT: $vgpr3 = COPY [[LSHR2]](s32)719 ; CHECK-NEXT: $vgpr4 = COPY [[LSHR3]](s32)720 ; CHECK-NEXT: $vgpr5 = COPY [[LSHR4]](s32)721 ; CHECK-NEXT: $vgpr6 = COPY [[LSHR5]](s32)722 ; CHECK-NEXT: $vgpr7 = COPY [[LSHR6]](s32)723 %0:_(s32) = COPY $vgpr0724 %1:_(s8) = G_TRUNC %0725 %2:_(s1), %3:_(s1), %4:_(s1), %5:_(s1), %6:_(s1), %7:_(s1), %8:_(s1), %9:_(s1) = G_UNMERGE_VALUES %1726 %10:_(s32) = G_ANYEXT %2727 %11:_(s32) = G_ANYEXT %3728 %12:_(s32) = G_ANYEXT %4729 %13:_(s32) = G_ANYEXT %5730 %14:_(s32) = G_ANYEXT %6731 %15:_(s32) = G_ANYEXT %7732 %16:_(s32) = G_ANYEXT %8733 %17:_(s32) = G_ANYEXT %9734 $vgpr0 = COPY %10735 $vgpr1 = COPY %11736 $vgpr2 = COPY %12737 $vgpr3 = COPY %13738 $vgpr4 = COPY %14739 $vgpr5 = COPY %15740 $vgpr6 = COPY %16741 $vgpr7 = COPY %17742...743 744---745 746name: test_unmerge_s128_v2s128747body: |748 bb.0:749 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7750 ; CHECK-LABEL: name: test_unmerge_s128_v2s128751 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7752 ; CHECK-NEXT: {{ $}}753 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s128>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7754 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s128), [[UV1:%[0-9]+]]:_(s128) = G_UNMERGE_VALUES [[COPY]](<2 x s128>)755 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[UV]](s128)756 ; CHECK-NEXT: $vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[UV1]](s128)757 %0:_(<2 x s128>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7758 %1:_(s128), %2:_(s128) = G_UNMERGE_VALUES %0759 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1760 $vgpr4_vgpr5_vgpr6_vgpr7 = COPY %2761...762 763---764 765name: test_unmerge_s128_s256766body: |767 bb.0:768 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7769 ; CHECK-LABEL: name: test_unmerge_s128_s256770 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7771 ; CHECK-NEXT: {{ $}}772 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7773 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s128), [[UV1:%[0-9]+]]:_(s128) = G_UNMERGE_VALUES [[COPY]](s256)774 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[UV]](s128)775 ; CHECK-NEXT: $vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[UV1]](s128)776 %0:_(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7777 %1:_(s128), %2:_(s128) = G_UNMERGE_VALUES %0778 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1779 $vgpr4_vgpr5_vgpr6_vgpr7 = COPY %2780...781 782---783 784name: test_unmerge_s256_s512785body: |786 bb.0:787 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15788 789 ; CHECK-LABEL: name: test_unmerge_s256_s512790 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15791 ; CHECK-NEXT: {{ $}}792 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15793 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s256), [[UV1:%[0-9]+]]:_(s256) = G_UNMERGE_VALUES [[COPY]](s512)794 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[UV]](s256)795 ; CHECK-NEXT: $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[UV1]](s256)796 %0:_(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15797 %1:_(s256), %2:_(s256) = G_UNMERGE_VALUES %0798 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1799 $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %2800...801 802---803 804name: test_unmerge_s256_v2s256805body: |806 bb.0:807 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15808 809 ; CHECK-LABEL: name: test_unmerge_s256_v2s256810 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15811 ; CHECK-NEXT: {{ $}}812 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s256>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15813 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s256), [[UV1:%[0-9]+]]:_(s256) = G_UNMERGE_VALUES [[COPY]](<2 x s256>)814 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[UV]](s256)815 ; CHECK-NEXT: $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[UV1]](s256)816 %0:_(<2 x s256>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15817 %1:_(s256), %2:_(s256) = G_UNMERGE_VALUES %0818 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1819 $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %2820...821 822---823 824name: test_unmerge_s512_s1024825body: |826 bb.0:827 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31828 829 ; CHECK-LABEL: name: test_unmerge_s512_s1024830 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31831 ; CHECK-NEXT: {{ $}}832 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s1024) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31833 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s512), [[UV1:%[0-9]+]]:_(s512) = G_UNMERGE_VALUES [[COPY]](s1024)834 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[UV]](s512)835 ; CHECK-NEXT: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31 = COPY [[UV1]](s512)836 %0:_(s1024) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31837 %1:_(s512), %2:_(s512) = G_UNMERGE_VALUES %0838 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %1839 $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31 = COPY %2840...841 842---843 844name: test_unmerge_s512_v2s512845body: |846 bb.0:847 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31848 849 ; CHECK-LABEL: name: test_unmerge_s512_v2s512850 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31851 ; CHECK-NEXT: {{ $}}852 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s512>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31853 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s512), [[UV1:%[0-9]+]]:_(s512) = G_UNMERGE_VALUES [[COPY]](<2 x s512>)854 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[UV]](s512)855 ; CHECK-NEXT: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31 = COPY [[UV1]](s512)856 %0:_(<2 x s512>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31857 %1:_(s512), %2:_(s512) = G_UNMERGE_VALUES %0858 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %1859 $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31 = COPY %2860...861 862---863name: test_unmerge_v2s1864body: |865 bb.0:866 ; CHECK-LABEL: name: test_unmerge_v2s1867 ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF868 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[DEF]](s32)869 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s1) = G_TRUNC [[DEF]](s32)870 ; CHECK-NEXT: S_NOP 0, implicit [[TRUNC]](s1)871 ; CHECK-NEXT: S_NOP 0, implicit [[TRUNC1]](s1)872 %0:_(<2 x s1>) = G_IMPLICIT_DEF873 %1:_(s1), %2:_(s1) = G_UNMERGE_VALUES %0874 S_NOP 0, implicit %1875 S_NOP 0, implicit %2876...877 878---879name: test_unmerge_s8_v4s8880body: |881 bb.0:882 liveins: $vgpr0883 884 ; CHECK-LABEL: name: test_unmerge_s8_v4s8885 ; CHECK: liveins: $vgpr0886 ; CHECK-NEXT: {{ $}}887 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0888 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8889 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)890 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16891 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C1]](s32)892 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 24893 ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C2]](s32)894 ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)895 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR]](s32)896 ; CHECK-NEXT: $vgpr2 = COPY [[LSHR1]](s32)897 ; CHECK-NEXT: $vgpr3 = COPY [[LSHR2]](s32)898 %0:_(s32) = COPY $vgpr0899 %1:_(<4 x s8>) = G_BITCAST %0900 %2:_(s8), %3:_(s8), %4:_(s8), %5:_(s8) = G_UNMERGE_VALUES %1901 %6:_(s32) = G_ANYEXT %2902 %7:_(s32) = G_ANYEXT %3903 %8:_(s32) = G_ANYEXT %4904 %9:_(s32) = G_ANYEXT %5905 $vgpr0 = COPY %6906 $vgpr1 = COPY %7907 $vgpr2 = COPY %8908 $vgpr3 = COPY %9909...910 911---912name: test_unmerge_s8_v3s8913body: |914 bb.0:915 liveins: $vgpr0916 917 ; CHECK-LABEL: name: test_unmerge_s8_v3s8918 ; CHECK: liveins: $vgpr0919 ; CHECK-NEXT: {{ $}}920 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0921 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8922 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)923 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16924 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C1]](s32)925 ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)926 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR]](s32)927 ; CHECK-NEXT: $vgpr2 = COPY [[LSHR1]](s32)928 %0:_(s32) = COPY $vgpr0929 %1:_(s24) = G_TRUNC %0930 %2:_(<3 x s8>) = G_BITCAST %1931 %3:_(s8), %4:_(s8), %5:_(s8) = G_UNMERGE_VALUES %2932 %6:_(s32) = G_ANYEXT %3933 %7:_(s32) = G_ANYEXT %4934 %8:_(s32) = G_ANYEXT %5935 $vgpr0 = COPY %6936 $vgpr1 = COPY %7937 $vgpr2 = COPY %8938...939 940---941name: test_unmerge_s8_v2s8942body: |943 bb.0:944 liveins: $vgpr0945 946 ; CHECK-LABEL: name: test_unmerge_s8_v2s8947 ; CHECK: liveins: $vgpr0948 ; CHECK-NEXT: {{ $}}949 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0950 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8951 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)952 ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)953 ; CHECK-NEXT: $vgpr1 = COPY [[LSHR]](s32)954 %0:_(s32) = COPY $vgpr0955 %1:_(s16) = G_TRUNC %0956 %2:_(<2 x s8>) = G_BITCAST %1957 %3:_(s8), %4:_(s8) = G_UNMERGE_VALUES %2958 %5:_(s32) = G_ANYEXT %3959 %6:_(s32) = G_ANYEXT %4960 $vgpr0 = COPY %5961 $vgpr1 = COPY %6962 963...964 965---966name: test_unmerge_v3s32_v12s32967body: |968 bb.0:969 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5, $vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11970 971 ; CHECK-LABEL: name: test_unmerge_v3s32_v12s32972 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5, $vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11973 ; CHECK-NEXT: {{ $}}974 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<6 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5975 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<6 x s32>) = COPY $vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11976 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<3 x s32>), [[UV1:%[0-9]+]]:_(<3 x s32>) = G_UNMERGE_VALUES [[COPY]](<6 x s32>)977 ; CHECK-NEXT: [[UV2:%[0-9]+]]:_(<3 x s32>), [[UV3:%[0-9]+]]:_(<3 x s32>) = G_UNMERGE_VALUES [[COPY1]](<6 x s32>)978 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[UV]](<3 x s32>)979 ; CHECK-NEXT: $vgpr3_vgpr4_vgpr5 = COPY [[UV1]](<3 x s32>)980 ; CHECK-NEXT: $vgpr6_vgpr7_vgpr8 = COPY [[UV2]](<3 x s32>)981 ; CHECK-NEXT: $vgpr9_vgpr10_vgpr11 = COPY [[UV3]](<3 x s32>)982 %0:_(<6 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5983 %1:_(<6 x s32>) = COPY $vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11984 %2:_(<12 x s32>) = G_CONCAT_VECTORS %0, %1985 %3:_(<3 x s32>), %4:_(<3 x s32>), %5:_(<3 x s32>), %6:_(<3 x s32>) = G_UNMERGE_VALUES %2986 $vgpr0_vgpr1_vgpr2 = COPY %3987 $vgpr3_vgpr4_vgpr5 = COPY %4988 $vgpr6_vgpr7_vgpr8 = COPY %5989 $vgpr9_vgpr10_vgpr11 = COPY %6990 991...992 993---994name: test_unmerge_v3s8_v12s8995body: |996 bb.0:997 liveins: $vgpr0_vgpr1_vgpr2998 999 ; CHECK-LABEL: name: test_unmerge_v3s8_v12s81000 ; CHECK: liveins: $vgpr0_vgpr1_vgpr21001 ; CHECK-NEXT: {{ $}}1002 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr21003 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)1004 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 81005 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32)1006 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 161007 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C1]](s32)1008 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 241009 ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C2]](s32)1010 ; CHECK-NEXT: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C]](s32)1011 ; CHECK-NEXT: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C1]](s32)1012 ; CHECK-NEXT: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C2]](s32)1013 ; CHECK-NEXT: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[UV2]], [[C]](s32)1014 ; CHECK-NEXT: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[UV2]], [[C1]](s32)1015 ; CHECK-NEXT: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[UV2]], [[C2]](s32)1016 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[LSHR]](s32), [[LSHR1]](s32)1017 ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[LSHR2]](s32), [[UV1]](s32), [[LSHR3]](s32)1018 ; CHECK-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[LSHR4]](s32), [[LSHR5]](s32), [[UV2]](s32)1019 ; CHECK-NEXT: [[BUILD_VECTOR3:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[LSHR6]](s32), [[LSHR7]](s32), [[LSHR8]](s32)1020 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)1021 ; CHECK-NEXT: $vgpr3_vgpr4_vgpr5 = COPY [[BUILD_VECTOR1]](<3 x s32>)1022 ; CHECK-NEXT: $vgpr6_vgpr7_vgpr8 = COPY [[BUILD_VECTOR2]](<3 x s32>)1023 ; CHECK-NEXT: $vgpr9_vgpr10_vgpr11 = COPY [[BUILD_VECTOR3]](<3 x s32>)1024 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr21025 %1:_(<12 x s8>) = G_BITCAST %01026 %2:_(<3 x s8>), %3:_(<3 x s8>), %4:_(<3 x s8>), %5:_(<3 x s8>) = G_UNMERGE_VALUES %11027 %6:_(<3 x s32>) = G_ANYEXT %21028 %7:_(<3 x s32>) = G_ANYEXT %31029 %8:_(<3 x s32>) = G_ANYEXT %41030 %9:_(<3 x s32>) = G_ANYEXT %51031 $vgpr0_vgpr1_vgpr2 = COPY %61032 $vgpr3_vgpr4_vgpr5 = COPY %71033 $vgpr6_vgpr7_vgpr8 = COPY %81034 $vgpr9_vgpr10_vgpr11 = COPY %91035 1036...1037 1038---1039name: test_unmerge_v3s16_v12s161040body: |1041 bb.0:1042 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr51043 1044 ; CHECK-LABEL: name: test_unmerge_v3s16_v12s161045 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr51046 ; CHECK-NEXT: {{ $}}1047 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<12 x s16>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr51048 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>), [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>), [[UV4:%[0-9]+]]:_(<2 x s16>), [[UV5:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<12 x s16>)1049 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)1050 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161051 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)1052 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)1053 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[BITCAST]](s32), [[LSHR]](s32), [[BITCAST1]](s32)1054 ; CHECK-NEXT: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>), [[UV8:%[0-9]+]]:_(<2 x s16>), [[UV9:%[0-9]+]]:_(<2 x s16>), [[UV10:%[0-9]+]]:_(<2 x s16>), [[UV11:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<12 x s16>)1055 ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV7]](<2 x s16>)1056 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C]](s32)1057 ; CHECK-NEXT: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[UV8]](<2 x s16>)1058 ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST3]], [[C]](s32)1059 ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[LSHR1]](s32), [[BITCAST3]](s32), [[LSHR2]](s32)1060 ; CHECK-NEXT: [[UV12:%[0-9]+]]:_(<2 x s16>), [[UV13:%[0-9]+]]:_(<2 x s16>), [[UV14:%[0-9]+]]:_(<2 x s16>), [[UV15:%[0-9]+]]:_(<2 x s16>), [[UV16:%[0-9]+]]:_(<2 x s16>), [[UV17:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<12 x s16>)1061 ; CHECK-NEXT: [[BITCAST4:%[0-9]+]]:_(s32) = G_BITCAST [[UV15]](<2 x s16>)1062 ; CHECK-NEXT: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST4]], [[C]](s32)1063 ; CHECK-NEXT: [[BITCAST5:%[0-9]+]]:_(s32) = G_BITCAST [[UV16]](<2 x s16>)1064 ; CHECK-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[BITCAST4]](s32), [[LSHR3]](s32), [[BITCAST5]](s32)1065 ; CHECK-NEXT: [[UV18:%[0-9]+]]:_(<2 x s16>), [[UV19:%[0-9]+]]:_(<2 x s16>), [[UV20:%[0-9]+]]:_(<2 x s16>), [[UV21:%[0-9]+]]:_(<2 x s16>), [[UV22:%[0-9]+]]:_(<2 x s16>), [[UV23:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<12 x s16>)1066 ; CHECK-NEXT: [[BITCAST6:%[0-9]+]]:_(s32) = G_BITCAST [[UV22]](<2 x s16>)1067 ; CHECK-NEXT: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST6]], [[C]](s32)1068 ; CHECK-NEXT: [[BITCAST7:%[0-9]+]]:_(s32) = G_BITCAST [[UV23]](<2 x s16>)1069 ; CHECK-NEXT: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST7]], [[C]](s32)1070 ; CHECK-NEXT: [[BUILD_VECTOR3:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[LSHR4]](s32), [[BITCAST7]](s32), [[LSHR5]](s32)1071 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)1072 ; CHECK-NEXT: $vgpr3_vgpr4_vgpr5 = COPY [[BUILD_VECTOR1]](<3 x s32>)1073 ; CHECK-NEXT: $vgpr6_vgpr7_vgpr8 = COPY [[BUILD_VECTOR2]](<3 x s32>)1074 ; CHECK-NEXT: $vgpr9_vgpr10_vgpr11 = COPY [[BUILD_VECTOR3]](<3 x s32>)1075 %0:_(<12 x s16>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr51076 %1:_(<3 x s16>), %2:_(<3 x s16>), %3:_(<3 x s16>), %4:_(<3 x s16>) = G_UNMERGE_VALUES %01077 %5:_(<3 x s32>) = G_ANYEXT %11078 %6:_(<3 x s32>) = G_ANYEXT %21079 %7:_(<3 x s32>) = G_ANYEXT %31080 %8:_(<3 x s32>) = G_ANYEXT %41081 $vgpr0_vgpr1_vgpr2 = COPY %51082 $vgpr3_vgpr4_vgpr5 = COPY %61083 $vgpr6_vgpr7_vgpr8 = COPY %71084 $vgpr9_vgpr10_vgpr11 = COPY %81085 1086...1087 1088---1089name: test_unmerge_through_copy1090body: |1091 bb.0:1092 liveins: $vgpr01093 1094 ; CHECK-LABEL: name: test_unmerge_through_copy1095 ; CHECK: liveins: $vgpr01096 ; CHECK-NEXT: {{ $}}1097 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01098 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2551099 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]1100 ; CHECK-NEXT: $vgpr0 = COPY [[AND]](s32)1101 %0:_(s32) = COPY $vgpr01102 %1:_(s16), %2:_(s16) = G_UNMERGE_VALUES %0:_(s32)1103 %3:_(s16) = COPY %1:_(s16)1104 %4:_(s8), %5:_(s8) = G_UNMERGE_VALUES %3:_(s16)1105 %6:_(s32) = G_ZEXT %4:_(s8)1106 $vgpr0 = COPY %6:_(s32)1107...1108