1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn-- -O0 -run-pass=legalizer -global-isel-abort=0 -o - %s | FileCheck %s 3 4--- 5name: test_unmerge_s32_s64 6body: | 7 bb.0: 8 ; CHECK-LABEL: name: test_unmerge_s32_s64 9 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 10 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[C]](s64) 11 ; CHECK: $vgpr0 = COPY [[UV]](s32) 12 ; CHECK: $vgpr1 = COPY [[UV1]](s32) 13 %0:_(s64) = G_CONSTANT i64 0 14 %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_v2s32 21body: | 22 bb.0: 23 liveins: $vgpr0_vgpr1 24 ; CHECK-LABEL: name: test_unmerge_s32_v2s32 25 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 26 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 27 ; CHECK: $vgpr0 = COPY [[UV]](s32) 28 ; CHECK: $vgpr21 = COPY [[UV1]](s32) 29 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1 30 %1:_(s32), %2:_(s32) = G_UNMERGE_VALUES %0 31 $vgpr0 = COPY %1 32 $vgpr21= COPY %2 33... 34 35--- 36name: test_unmerge_s16_v2s16 37body: | 38 bb.0: 39 liveins: $vgpr0 40 ; CHECK-LABEL: name: test_unmerge_s16_v2s16 41 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 42 ; CHECK: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>) 43 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 44 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32) 45 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) 46 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 47 ; CHECK: $vgpr0 = COPY [[COPY1]](s32) 48 ; CHECK: $vgpr1 = COPY [[COPY2]](s32) 49 %0:_(<2 x s16>) = COPY $vgpr0 50 %1:_(s16), %2:_(s16) = G_UNMERGE_VALUES %0 51 %3:_(s32) = G_ANYEXT %1 52 %4:_(s32) = G_ANYEXT %2 53 $vgpr0 = COPY %3 54 $vgpr1 = COPY %4 55... 56 57--- 58name: test_unmerge_s16_v3s16 59body: | 60 bb.0: 61 ; CHECK-LABEL: name: test_unmerge_s16_v3s16 62 ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF 63 ; CHECK: [[DEF1:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF 64 ; CHECK: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF]](<4 x s16>) 65 ; CHECK: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>) 66 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 67 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32) 68 ; CHECK: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>) 69 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32) 70 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) 71 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 72 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[BITCAST1]](s32) 73 ; CHECK: $vgpr0 = COPY [[COPY]](s32) 74 ; CHECK: $vgpr1 = COPY [[COPY1]](s32) 75 ; CHECK: $vgpr2 = COPY [[COPY2]](s32) 76 %0:_(<3 x s16>) = G_IMPLICIT_DEF 77 %1:_(s16), %2:_(s16), %3:_(s16) = G_UNMERGE_VALUES %0 78 %4:_(s32) = G_ANYEXT %1 79 %5:_(s32) = G_ANYEXT %2 80 %6:_(s32) = G_ANYEXT %3 81 $vgpr0 = COPY %4 82 $vgpr1 = COPY %5 83 $vgpr2 = COPY %6 84... 85 86--- 87 88name: test_unmerge_s16_v4s16 89body: | 90 bb.0: 91 liveins: $vgpr0_vgpr1 92 ; CHECK-LABEL: name: test_unmerge_s16_v4s16 93 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 94 ; CHECK: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>) 95 ; CHECK: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>) 96 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 97 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32) 98 ; CHECK: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>) 99 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32) 100 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) 101 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 102 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[BITCAST1]](s32) 103 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 104 ; CHECK: $vgpr0 = COPY [[COPY1]](s32) 105 ; CHECK: $vgpr1 = COPY [[COPY2]](s32) 106 ; CHECK: $vgpr2 = COPY [[COPY3]](s32) 107 ; CHECK: $vgpr3 = COPY [[COPY4]](s32) 108 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 109 %1:_(s16), %2:_(s16), %3:_(s16), %4:_(s16) = G_UNMERGE_VALUES %0 110 %5:_(s32) = G_ANYEXT %1 111 %6:_(s32) = G_ANYEXT %2 112 %7:_(s32) = G_ANYEXT %3 113 %8:_(s32) = G_ANYEXT %4 114 $vgpr0 = COPY %5 115 $vgpr1 = COPY %6 116 $vgpr2 = COPY %7 117 $vgpr3 = COPY %8 118... 119 120--- 121name: test_unmerge_s16_v6s16 122body: | 123 bb.0: 124 liveins: $vgpr0_vgpr1 125 ; CHECK-LABEL: name: test_unmerge_s16_v6s16 126 ; CHECK: [[COPY:%[0-9]+]]:_(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2 127 ; CHECK: [[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>) 128 ; CHECK: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>) 129 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 130 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32) 131 ; CHECK: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>) 132 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32) 133 ; CHECK: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV2]](<2 x s16>) 134 ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C]](s32) 135 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) 136 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 137 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[BITCAST1]](s32) 138 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 139 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY [[BITCAST2]](s32) 140 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) 141 ; CHECK: $vgpr0 = COPY [[COPY1]](s32) 142 ; CHECK: $vgpr1 = COPY [[COPY2]](s32) 143 ; CHECK: $vgpr2 = COPY [[COPY3]](s32) 144 ; CHECK: $vgpr3 = COPY [[COPY4]](s32) 145 ; CHECK: $vgpr4 = COPY [[COPY5]](s32) 146 ; CHECK: $vgpr5 = COPY [[COPY6]](s32) 147 %0:_(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2 148 %1:_(s16), %2:_(s16), %3:_(s16), %4:_(s16), %5:_(s16), %6:_(s16) = G_UNMERGE_VALUES %0 149 %7:_(s32) = G_ANYEXT %1 150 %8:_(s32) = G_ANYEXT %2 151 %9:_(s32) = G_ANYEXT %3 152 %10:_(s32) = G_ANYEXT %4 153 %11:_(s32) = G_ANYEXT %5 154 %12:_(s32) = G_ANYEXT %6 155 $vgpr0 = COPY %7 156 $vgpr1 = COPY %8 157 $vgpr2 = COPY %9 158 $vgpr3 = COPY %10 159 $vgpr4 = COPY %11 160 $vgpr5 = COPY %12 161... 162 163--- 164 165name: test_unmerge_s8_s16 166body: | 167 bb.0: 168 liveins: $vgpr0 169 ; CHECK-LABEL: name: test_unmerge_s8_s16 170 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 171 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 172 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32) 173 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 174 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C1]](s32) 175 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 24 176 ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C2]](s32) 177 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 178 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 179 ; CHECK: $vgpr0 = COPY [[COPY1]](s32) 180 ; CHECK: $vgpr1 = COPY [[COPY2]](s32) 181 %0:_(s32) = COPY $vgpr0 182 %1:_(s16) = G_TRUNC %0 183 %2:_(s8), %3:_(s8) = G_UNMERGE_VALUES %1 184 %4:_(s32) = G_ANYEXT %2 185 %5:_(s32) = G_ANYEXT %3 186 $vgpr0 = COPY %4 187 $vgpr1 = COPY %5 188... 189 190--- 191name: test_unmerge_s8_s32 192body: | 193 bb.0: 194 liveins: $vgpr0 195 ; CHECK-LABEL: name: test_unmerge_s8_s32 196 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 197 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 198 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32) 199 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 200 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C1]](s32) 201 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 24 202 ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C2]](s32) 203 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 204 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 205 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 206 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) 207 ; CHECK: $vgpr0 = COPY [[COPY1]](s32) 208 ; CHECK: $vgpr1 = COPY [[COPY2]](s32) 209 ; CHECK: $vgpr2 = COPY [[COPY3]](s32) 210 ; CHECK: $vgpr3 = COPY [[COPY4]](s32) 211 %0:_(s32) = COPY $vgpr0 212 %1:_(s8), %2:_(s8), %3:_(s8), %4:_(s8) = G_UNMERGE_VALUES %0 213 %5:_(s32) = G_ANYEXT %1 214 %6:_(s32) = G_ANYEXT %2 215 %7:_(s32) = G_ANYEXT %3 216 %8:_(s32) = G_ANYEXT %4 217 $vgpr0 = COPY %5 218 $vgpr1 = COPY %6 219 $vgpr2 = COPY %7 220 $vgpr3 = COPY %8 221... 222 223--- 224name: test_unmerge_s8_s48 225body: | 226 bb.0: 227 liveins: $vgpr0_vgpr1 228 ; CHECK-LABEL: name: test_unmerge_s8_s48 229 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 230 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64) 231 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 232 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32) 233 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C]](s32) 234 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 235 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C1]](s32) 236 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 237 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV]](s32) 238 ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C2]] 239 ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[COPY1]](s32) 240 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[C1]](s32) 241 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 242 ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C2]] 243 ; CHECK: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[AND1]], [[COPY3]](s32) 244 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) 245 ; CHECK: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY5]], [[C2]] 246 ; CHECK: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[AND2]], [[C1]](s32) 247 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV]](s32) 248 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) 249 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 250 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY [[LSHR3]](s32) 251 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) 252 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32) 253 ; CHECK: $vgpr0 = COPY [[COPY6]](s32) 254 ; CHECK: $vgpr1 = COPY [[COPY7]](s32) 255 ; CHECK: $vgpr2 = COPY [[COPY8]](s32) 256 ; CHECK: $vgpr3 = COPY [[COPY9]](s32) 257 ; CHECK: $vgpr4 = COPY [[COPY10]](s32) 258 ; CHECK: $vgpr5 = COPY [[COPY11]](s32) 259 %0:_(s64) = COPY $vgpr0_vgpr1 260 %1:_(s48) = G_TRUNC %0 261 %2:_(s8), %3:_(s8), %4:_(s8), %5:_(s8), %6:_(s8), %7:_(s8) = G_UNMERGE_VALUES %1 262 %8:_(s32) = G_ANYEXT %2 263 %9:_(s32) = G_ANYEXT %3 264 %10:_(s32) = G_ANYEXT %4 265 %11:_(s32) = G_ANYEXT %5 266 %12:_(s32) = G_ANYEXT %6 267 %13:_(s32) = G_ANYEXT %7 268 $vgpr0 = COPY %8 269 $vgpr1 = COPY %9 270 $vgpr2 = COPY %10 271 $vgpr3 = COPY %11 272 $vgpr4 = COPY %12 273 $vgpr5 = COPY %13 274... 275 276--- 277name: test_unmerge_s16_s48 278body: | 279 bb.0: 280 liveins: $vgpr0_vgpr1 281 ; CHECK-LABEL: name: test_unmerge_s16_s48 282 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 283 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64) 284 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 285 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32) 286 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C]](s32) 287 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV]](s32) 288 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 289 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) 290 ; CHECK: $vgpr0 = COPY [[COPY1]](s32) 291 ; CHECK: $vgpr1 = COPY [[COPY2]](s32) 292 ; CHECK: $vgpr2 = COPY [[COPY3]](s32) 293 %0:_(s64) = COPY $vgpr0_vgpr1 294 %1:_(s48) = G_TRUNC %0 295 %2:_(s16), %3:_(s16), %4:_(s16) = G_UNMERGE_VALUES %1 296 %5:_(s32) = G_ANYEXT %2 297 %6:_(s32) = G_ANYEXT %3 298 %7:_(s32) = G_ANYEXT %4 299 $vgpr0 = COPY %5 300 $vgpr1 = COPY %6 301 $vgpr2 = COPY %7 302... 303 304--- 305name: test_unmerge_s8_s64 306body: | 307 bb.0: 308 liveins: $vgpr0_vgpr1 309 ; CHECK-LABEL: name: test_unmerge_s8_s64 310 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 311 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64) 312 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 313 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32) 314 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C]](s32) 315 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 316 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C1]](s32) 317 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 318 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV]](s32) 319 ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C2]] 320 ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[COPY1]](s32) 321 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[C1]](s32) 322 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 323 ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C2]] 324 ; CHECK: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[AND1]], [[COPY3]](s32) 325 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY [[C1]](s32) 326 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) 327 ; CHECK: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C2]] 328 ; CHECK: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[AND2]], [[COPY5]](s32) 329 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 330 ; CHECK: [[AND3:%[0-9]+]]:_(s32) = G_AND [[COPY7]], [[C2]] 331 ; CHECK: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[AND3]], [[C1]](s32) 332 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV]](s32) 333 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) 334 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 335 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY [[LSHR3]](s32) 336 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) 337 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32) 338 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 339 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY [[LSHR5]](s32) 340 ; CHECK: $vgpr0 = COPY [[COPY8]](s32) 341 ; CHECK: $vgpr1 = COPY [[COPY9]](s32) 342 ; CHECK: $vgpr2 = COPY [[COPY10]](s32) 343 ; CHECK: $vgpr3 = COPY [[COPY11]](s32) 344 ; CHECK: $vgpr4 = COPY [[COPY12]](s32) 345 ; CHECK: $vgpr5 = COPY [[COPY13]](s32) 346 ; CHECK: $vgpr6 = COPY [[COPY14]](s32) 347 ; CHECK: $vgpr7 = COPY [[COPY15]](s32) 348 %0:_(s64) = COPY $vgpr0_vgpr1 349 %1:_(s8), %2:_(s8), %3:_(s8), %4:_(s8), %5:_(s8), %6:_(s8), %7:_(s8), %8:_(s8) = G_UNMERGE_VALUES %0 350 %10:_(s32) = G_ANYEXT %1 351 %11:_(s32) = G_ANYEXT %2 352 %12:_(s32) = G_ANYEXT %3 353 %13:_(s32) = G_ANYEXT %4 354 %14:_(s32) = G_ANYEXT %5 355 %15:_(s32) = G_ANYEXT %6 356 %16:_(s32) = G_ANYEXT %7 357 %17:_(s32) = G_ANYEXT %8 358 $vgpr0 = COPY %10 359 $vgpr1 = COPY %11 360 $vgpr2 = COPY %12 361 $vgpr3 = COPY %13 362 $vgpr4 = COPY %14 363 $vgpr5 = COPY %15 364 $vgpr6 = COPY %16 365 $vgpr7 = COPY %17 366... 367 368--- 369name: test_unmerge_s8_p1 370body: | 371 bb.0: 372 liveins: $vgpr0_vgpr1 373 ; CHECK-LABEL: name: test_unmerge_s8_p1 374 ; CHECK: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 375 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](p1) 376 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 377 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32) 378 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C]](s32) 379 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 380 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C1]](s32) 381 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 382 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV]](s32) 383 ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C2]] 384 ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[COPY1]](s32) 385 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[C1]](s32) 386 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 387 ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C2]] 388 ; CHECK: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[AND1]], [[COPY3]](s32) 389 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY [[C1]](s32) 390 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) 391 ; CHECK: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C2]] 392 ; CHECK: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[AND2]], [[COPY5]](s32) 393 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 394 ; CHECK: [[AND3:%[0-9]+]]:_(s32) = G_AND [[COPY7]], [[C2]] 395 ; CHECK: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[AND3]], [[C1]](s32) 396 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV]](s32) 397 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) 398 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 399 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY [[LSHR3]](s32) 400 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) 401 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32) 402 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 403 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY [[LSHR5]](s32) 404 ; CHECK: $vgpr0 = COPY [[COPY8]](s32) 405 ; CHECK: $vgpr1 = COPY [[COPY9]](s32) 406 ; CHECK: $vgpr2 = COPY [[COPY10]](s32) 407 ; CHECK: $vgpr3 = COPY [[COPY11]](s32) 408 ; CHECK: $vgpr4 = COPY [[COPY12]](s32) 409 ; CHECK: $vgpr5 = COPY [[COPY13]](s32) 410 ; CHECK: $vgpr6 = COPY [[COPY14]](s32) 411 ; CHECK: $vgpr7 = COPY [[COPY15]](s32) 412 %0:_(p1) = COPY $vgpr0_vgpr1 413 %1:_(s8), %2:_(s8), %3:_(s8), %4:_(s8), %5:_(s8), %6:_(s8), %7:_(s8), %8:_(s8) = G_UNMERGE_VALUES %0 414 %10:_(s32) = G_ANYEXT %1 415 %11:_(s32) = G_ANYEXT %2 416 %12:_(s32) = G_ANYEXT %3 417 %13:_(s32) = G_ANYEXT %4 418 %14:_(s32) = G_ANYEXT %5 419 %15:_(s32) = G_ANYEXT %6 420 %16:_(s32) = G_ANYEXT %7 421 %17:_(s32) = G_ANYEXT %8 422 $vgpr0 = COPY %10 423 $vgpr1 = COPY %11 424 $vgpr2 = COPY %12 425 $vgpr3 = COPY %13 426 $vgpr4 = COPY %14 427 $vgpr5 = COPY %15 428 $vgpr6 = COPY %16 429 $vgpr7 = COPY %17 430... 431 432--- 433name: test_unmerge_s4_p1 434body: | 435 bb.0: 436 liveins: $vgpr0_vgpr1 437 ; CHECK-LABEL: name: test_unmerge_s4_p1 438 ; CHECK: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 439 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](p1) 440 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 441 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32) 442 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C]](s32) 443 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 444 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C1]](s32) 445 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 446 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV]](s32) 447 ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C2]] 448 ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[COPY1]](s32) 449 ; CHECK: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 450 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[C3]](s32) 451 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV]](s32) 452 ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C2]] 453 ; CHECK: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[AND1]], [[COPY3]](s32) 454 ; CHECK: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 455 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY [[C4]](s32) 456 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV]](s32) 457 ; CHECK: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C2]] 458 ; CHECK: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[AND2]], [[COPY5]](s32) 459 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY [[C1]](s32) 460 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 461 ; CHECK: [[AND3:%[0-9]+]]:_(s32) = G_AND [[COPY8]], [[C2]] 462 ; CHECK: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[AND3]], [[COPY7]](s32) 463 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY [[C3]](s32) 464 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 465 ; CHECK: [[AND4:%[0-9]+]]:_(s32) = G_AND [[COPY10]], [[C2]] 466 ; CHECK: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[AND4]], [[COPY9]](s32) 467 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY [[C4]](s32) 468 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 469 ; CHECK: [[AND5:%[0-9]+]]:_(s32) = G_AND [[COPY12]], [[C2]] 470 ; CHECK: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[AND5]], [[COPY11]](s32) 471 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY [[C1]](s32) 472 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) 473 ; CHECK: [[AND6:%[0-9]+]]:_(s32) = G_AND [[COPY14]], [[C2]] 474 ; CHECK: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[AND6]], [[COPY13]](s32) 475 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY [[C3]](s32) 476 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) 477 ; CHECK: [[AND7:%[0-9]+]]:_(s32) = G_AND [[COPY16]], [[C2]] 478 ; CHECK: [[LSHR9:%[0-9]+]]:_(s32) = G_LSHR [[AND7]], [[COPY15]](s32) 479 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY [[C4]](s32) 480 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) 481 ; CHECK: [[AND8:%[0-9]+]]:_(s32) = G_AND [[COPY18]], [[C2]] 482 ; CHECK: [[LSHR10:%[0-9]+]]:_(s32) = G_LSHR [[AND8]], [[COPY17]](s32) 483 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 484 ; CHECK: [[AND9:%[0-9]+]]:_(s32) = G_AND [[COPY19]], [[C2]] 485 ; CHECK: [[LSHR11:%[0-9]+]]:_(s32) = G_LSHR [[AND9]], [[C1]](s32) 486 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 487 ; CHECK: [[AND10:%[0-9]+]]:_(s32) = G_AND [[COPY20]], [[C2]] 488 ; CHECK: [[LSHR12:%[0-9]+]]:_(s32) = G_LSHR [[AND10]], [[C3]](s32) 489 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 490 ; CHECK: [[AND11:%[0-9]+]]:_(s32) = G_AND [[COPY21]], [[C2]] 491 ; CHECK: [[LSHR13:%[0-9]+]]:_(s32) = G_LSHR [[AND11]], [[C4]](s32) 492 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY [[UV]](s32) 493 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) 494 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY [[LSHR3]](s32) 495 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32) 496 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 497 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY [[LSHR5]](s32) 498 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY [[LSHR6]](s32) 499 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY [[LSHR7]](s32) 500 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) 501 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY [[LSHR8]](s32) 502 ; CHECK: [[COPY32:%[0-9]+]]:_(s32) = COPY [[LSHR9]](s32) 503 ; CHECK: [[COPY33:%[0-9]+]]:_(s32) = COPY [[LSHR10]](s32) 504 ; CHECK: [[COPY34:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 505 ; CHECK: [[COPY35:%[0-9]+]]:_(s32) = COPY [[LSHR11]](s32) 506 ; CHECK: [[COPY36:%[0-9]+]]:_(s32) = COPY [[LSHR12]](s32) 507 ; CHECK: [[COPY37:%[0-9]+]]:_(s32) = COPY [[LSHR13]](s32) 508 ; CHECK: $vgpr0 = COPY [[COPY22]](s32) 509 ; CHECK: $vgpr1 = COPY [[COPY23]](s32) 510 ; CHECK: $vgpr2 = COPY [[COPY24]](s32) 511 ; CHECK: $vgpr3 = COPY [[COPY25]](s32) 512 ; CHECK: $vgpr4 = COPY [[COPY26]](s32) 513 ; CHECK: $vgpr5 = COPY [[COPY27]](s32) 514 ; CHECK: $vgpr6 = COPY [[COPY28]](s32) 515 ; CHECK: $vgpr7 = COPY [[COPY29]](s32) 516 ; CHECK: $vgpr8 = COPY [[COPY30]](s32) 517 ; CHECK: $vgpr9 = COPY [[COPY31]](s32) 518 ; CHECK: $vgpr10 = COPY [[COPY32]](s32) 519 ; CHECK: $vgpr11 = COPY [[COPY33]](s32) 520 ; CHECK: $vgpr12 = COPY [[COPY34]](s32) 521 ; CHECK: $vgpr13 = COPY [[COPY35]](s32) 522 ; CHECK: $vgpr14 = COPY [[COPY36]](s32) 523 ; CHECK: $vgpr15 = COPY [[COPY37]](s32) 524 %0:_(p1) = COPY $vgpr0_vgpr1 525 %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 %0 526 %17:_(s32) = G_ANYEXT %1 527 %18:_(s32) = G_ANYEXT %2 528 %19:_(s32) = G_ANYEXT %3 529 %20:_(s32) = G_ANYEXT %4 530 %21:_(s32) = G_ANYEXT %5 531 %22:_(s32) = G_ANYEXT %6 532 %23:_(s32) = G_ANYEXT %7 533 %24:_(s32) = G_ANYEXT %8 534 %25:_(s32) = G_ANYEXT %9 535 %26:_(s32) = G_ANYEXT %10 536 %27:_(s32) = G_ANYEXT %11 537 %28:_(s32) = G_ANYEXT %12 538 %29:_(s32) = G_ANYEXT %13 539 %30:_(s32) = G_ANYEXT %14 540 %31:_(s32) = G_ANYEXT %15 541 %32:_(s32) = G_ANYEXT %16 542 $vgpr0 = COPY %17 543 $vgpr1 = COPY %18 544 $vgpr2 = COPY %19 545 $vgpr3 = COPY %20 546 $vgpr4 = COPY %21 547 $vgpr5 = COPY %22 548 $vgpr6 = COPY %23 549 $vgpr7 = COPY %24 550 $vgpr8 = COPY %25 551 $vgpr9 = COPY %26 552 $vgpr10 = COPY %27 553 $vgpr11 = COPY %28 554 $vgpr12 = COPY %29 555 $vgpr13 = COPY %30 556 $vgpr14 = COPY %31 557 $vgpr15 = COPY %32 558... 559 560--- 561name: test_unmerge_s16_p1 562body: | 563 bb.0: 564 liveins: $vgpr0_vgpr1 565 ; CHECK-LABEL: name: test_unmerge_s16_p1 566 ; CHECK: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 567 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](p1) 568 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 569 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32) 570 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C]](s32) 571 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV]](s32) 572 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 573 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) 574 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 575 ; CHECK: $vgpr0 = COPY [[COPY1]](s32) 576 ; CHECK: $vgpr1 = COPY [[COPY2]](s32) 577 ; CHECK: $vgpr2 = COPY [[COPY3]](s32) 578 ; CHECK: $vgpr3 = COPY [[COPY4]](s32) 579 %0:_(p1) = COPY $vgpr0_vgpr1 580 %1:_(s16), %2:_(s16), %3:_(s16), %4:_(s16) = G_UNMERGE_VALUES %0 581 %5:_(s32) = G_ANYEXT %1 582 %6:_(s32) = G_ANYEXT %2 583 %7:_(s32) = G_ANYEXT %3 584 %8:_(s32) = G_ANYEXT %4 585 $vgpr0 = COPY %5 586 $vgpr1 = COPY %6 587 $vgpr2 = COPY %7 588 $vgpr3 = COPY %8 589... 590 591--- 592name: test_unmerge_s32_p1 593body: | 594 bb.0: 595 liveins: $vgpr0_vgpr1 596 ; CHECK-LABEL: name: test_unmerge_s32_p1 597 ; CHECK: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 598 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](p1) 599 ; CHECK: $vgpr0 = COPY [[UV]](s32) 600 ; CHECK: $vgpr1 = COPY [[UV1]](s32) 601 %0:_(p1) = COPY $vgpr0_vgpr1 602 %1:_(s32), %2:_(s32) = G_UNMERGE_VALUES %0 603 $vgpr0 = COPY %1 604 $vgpr1 = COPY %2 605... 606 607--- 608name: test_unmerge_s16_s32 609body: | 610 bb.0: 611 liveins: $vgpr0 612 ; CHECK-LABEL: name: test_unmerge_s16_s32 613 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 614 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 615 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32) 616 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 617 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 618 ; CHECK: $vgpr0 = COPY [[COPY1]](s32) 619 ; CHECK: $vgpr1 = COPY [[COPY2]](s32) 620 %0:_(s32) = COPY $vgpr0 621 %1:_(s16), %2:_(s16) = G_UNMERGE_VALUES %0 622 %3:_(s32) = G_ANYEXT %1 623 %4:_(s32) = G_ANYEXT %2 624 $vgpr0 = COPY %3 625 $vgpr1 = COPY %4 626... 627 628--- 629name: test_unmerge_s16_p3 630body: | 631 bb.0: 632 liveins: $vgpr0 633 ; CHECK-LABEL: name: test_unmerge_s16_p3 634 ; CHECK: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0 635 ; CHECK: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p3) 636 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 637 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[PTRTOINT]], [[C]](s32) 638 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[PTRTOINT]](s32) 639 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 640 ; CHECK: $vgpr0 = COPY [[COPY1]](s32) 641 ; CHECK: $vgpr1 = COPY [[COPY2]](s32) 642 %0:_(p3) = COPY $vgpr0 643 %1:_(s16), %2:_(s16) = G_UNMERGE_VALUES %0 644 %3:_(s32) = G_ANYEXT %1 645 %4:_(s32) = G_ANYEXT %2 646 $vgpr0 = COPY %3 647 $vgpr1 = COPY %4 648... 649 650--- 651name: test_unmerge_s8_p3 652body: | 653 bb.0: 654 liveins: $vgpr0 655 ; CHECK-LABEL: name: test_unmerge_s8_p3 656 ; CHECK: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0 657 ; CHECK: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p3) 658 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 659 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[PTRTOINT]], [[C]](s32) 660 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 661 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[PTRTOINT]], [[C1]](s32) 662 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 24 663 ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[PTRTOINT]], [[C2]](s32) 664 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[PTRTOINT]](s32) 665 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 666 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 667 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) 668 ; CHECK: $vgpr0 = COPY [[COPY1]](s32) 669 ; CHECK: $vgpr1 = COPY [[COPY2]](s32) 670 ; CHECK: $vgpr2 = COPY [[COPY3]](s32) 671 ; CHECK: $vgpr3 = COPY [[COPY4]](s32) 672 %0:_(p3) = COPY $vgpr0 673 %1:_(s8), %2:_(s8), %3:_(s8), %4:_(s8) = G_UNMERGE_VALUES %0 674 %5:_(s32) = G_ANYEXT %1 675 %6:_(s32) = G_ANYEXT %2 676 %7:_(s32) = G_ANYEXT %3 677 %8:_(s32) = G_ANYEXT %4 678 $vgpr0 = COPY %5 679 $vgpr1 = COPY %6 680 $vgpr2 = COPY %7 681 $vgpr3 = COPY %8 682 683... 684 685--- 686name: test_unmerge_s16_s64 687body: | 688 bb.0: 689 liveins: $vgpr0_vgpr1 690 ; CHECK-LABEL: name: test_unmerge_s16_s64 691 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 692 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64) 693 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 694 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32) 695 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C]](s32) 696 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV]](s32) 697 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 698 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) 699 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 700 ; CHECK: $vgpr0 = COPY [[COPY1]](s32) 701 ; CHECK: $vgpr1 = COPY [[COPY2]](s32) 702 ; CHECK: $vgpr2 = COPY [[COPY3]](s32) 703 ; CHECK: $vgpr3 = COPY [[COPY4]](s32) 704 %0:_(s64) = COPY $vgpr0_vgpr1 705 %1:_(s16), %2:_(s16), %3:_(s16), %4:_(s16) = G_UNMERGE_VALUES %0 706 %5:_(s32) = G_ANYEXT %1 707 %6:_(s32) = G_ANYEXT %2 708 %7:_(s32) = G_ANYEXT %3 709 %8:_(s32) = G_ANYEXT %4 710 $vgpr0 = COPY %5 711 $vgpr1 = COPY %6 712 $vgpr2 = COPY %7 713 $vgpr3 = COPY %8 714... 715 716--- 717name: test_unmerge_s1_s3 718body: | 719 bb.0: 720 liveins: $vgpr0 721 ; CHECK-LABEL: name: test_unmerge_s1_s3 722 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 723 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 724 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32) 725 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2 726 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C1]](s32) 727 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 3 728 ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C2]](s32) 729 ; CHECK: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 730 ; CHECK: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C3]](s32) 731 ; CHECK: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 5 732 ; CHECK: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C4]](s32) 733 ; CHECK: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 6 734 ; CHECK: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C5]](s32) 735 ; CHECK: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 7 736 ; CHECK: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C6]](s32) 737 ; CHECK: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 738 ; CHECK: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C7]](s32) 739 ; CHECK: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 9 740 ; CHECK: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C8]](s32) 741 ; CHECK: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 10 742 ; CHECK: [[LSHR9:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C9]](s32) 743 ; CHECK: [[C10:%[0-9]+]]:_(s32) = G_CONSTANT i32 11 744 ; CHECK: [[LSHR10:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C10]](s32) 745 ; CHECK: [[C11:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 746 ; CHECK: [[LSHR11:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C11]](s32) 747 ; CHECK: [[C12:%[0-9]+]]:_(s32) = G_CONSTANT i32 13 748 ; CHECK: [[LSHR12:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C12]](s32) 749 ; CHECK: [[C13:%[0-9]+]]:_(s32) = G_CONSTANT i32 14 750 ; CHECK: [[LSHR13:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C13]](s32) 751 ; CHECK: [[C14:%[0-9]+]]:_(s32) = G_CONSTANT i32 15 752 ; CHECK: [[LSHR14:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C14]](s32) 753 ; CHECK: [[C15:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 754 ; CHECK: [[LSHR15:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C15]](s32) 755 ; CHECK: [[C16:%[0-9]+]]:_(s32) = G_CONSTANT i32 17 756 ; CHECK: [[LSHR16:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C16]](s32) 757 ; CHECK: [[C17:%[0-9]+]]:_(s32) = G_CONSTANT i32 18 758 ; CHECK: [[LSHR17:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C17]](s32) 759 ; CHECK: [[C18:%[0-9]+]]:_(s32) = G_CONSTANT i32 19 760 ; CHECK: [[LSHR18:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C18]](s32) 761 ; CHECK: [[C19:%[0-9]+]]:_(s32) = G_CONSTANT i32 20 762 ; CHECK: [[LSHR19:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C19]](s32) 763 ; CHECK: [[C20:%[0-9]+]]:_(s32) = G_CONSTANT i32 21 764 ; CHECK: [[LSHR20:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C20]](s32) 765 ; CHECK: [[C21:%[0-9]+]]:_(s32) = G_CONSTANT i32 22 766 ; CHECK: [[LSHR21:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C21]](s32) 767 ; CHECK: [[C22:%[0-9]+]]:_(s32) = G_CONSTANT i32 23 768 ; CHECK: [[LSHR22:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C22]](s32) 769 ; CHECK: [[C23:%[0-9]+]]:_(s32) = G_CONSTANT i32 24 770 ; CHECK: [[LSHR23:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C23]](s32) 771 ; CHECK: [[C24:%[0-9]+]]:_(s32) = G_CONSTANT i32 25 772 ; CHECK: [[LSHR24:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C24]](s32) 773 ; CHECK: [[C25:%[0-9]+]]:_(s32) = G_CONSTANT i32 26 774 ; CHECK: [[LSHR25:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C25]](s32) 775 ; CHECK: [[C26:%[0-9]+]]:_(s32) = G_CONSTANT i32 27 776 ; CHECK: [[LSHR26:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C26]](s32) 777 ; CHECK: [[C27:%[0-9]+]]:_(s32) = G_CONSTANT i32 28 778 ; CHECK: [[LSHR27:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C27]](s32) 779 ; CHECK: [[C28:%[0-9]+]]:_(s32) = G_CONSTANT i32 29 780 ; CHECK: [[LSHR28:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C28]](s32) 781 ; CHECK: [[C29:%[0-9]+]]:_(s32) = G_CONSTANT i32 30 782 ; CHECK: [[LSHR29:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C29]](s32) 783 ; CHECK: [[C30:%[0-9]+]]:_(s32) = G_CONSTANT i32 31 784 ; CHECK: [[LSHR30:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C30]](s32) 785 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 786 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 787 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 788 ; CHECK: $vgpr0 = COPY [[COPY1]](s32) 789 ; CHECK: $vgpr1 = COPY [[COPY2]](s32) 790 ; CHECK: $vgpr2 = COPY [[COPY3]](s32) 791 %0:_(s32) = COPY $vgpr0 792 %1:_(s3) = G_TRUNC %0 793 %2:_(s1), %3:_(s1), %4:_(s1) = G_UNMERGE_VALUES %1 794 %5:_(s32) = G_ANYEXT %2 795 %6:_(s32) = G_ANYEXT %3 796 %7:_(s32) = G_ANYEXT %4 797 $vgpr0 = COPY %5 798 $vgpr1 = COPY %6 799 $vgpr2 = COPY %7 800... 801 802--- 803name: test_unmerge_s1_s8 804body: | 805 bb.0: 806 liveins: $vgpr0 807 ; CHECK-LABEL: name: test_unmerge_s1_s8 808 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 809 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 810 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32) 811 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2 812 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C1]](s32) 813 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 3 814 ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C2]](s32) 815 ; CHECK: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 816 ; CHECK: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C3]](s32) 817 ; CHECK: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 5 818 ; CHECK: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C4]](s32) 819 ; CHECK: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 6 820 ; CHECK: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C5]](s32) 821 ; CHECK: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 7 822 ; CHECK: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C6]](s32) 823 ; CHECK: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 824 ; CHECK: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C7]](s32) 825 ; CHECK: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 9 826 ; CHECK: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C8]](s32) 827 ; CHECK: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 10 828 ; CHECK: [[LSHR9:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C9]](s32) 829 ; CHECK: [[C10:%[0-9]+]]:_(s32) = G_CONSTANT i32 11 830 ; CHECK: [[LSHR10:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C10]](s32) 831 ; CHECK: [[C11:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 832 ; CHECK: [[LSHR11:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C11]](s32) 833 ; CHECK: [[C12:%[0-9]+]]:_(s32) = G_CONSTANT i32 13 834 ; CHECK: [[LSHR12:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C12]](s32) 835 ; CHECK: [[C13:%[0-9]+]]:_(s32) = G_CONSTANT i32 14 836 ; CHECK: [[LSHR13:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C13]](s32) 837 ; CHECK: [[C14:%[0-9]+]]:_(s32) = G_CONSTANT i32 15 838 ; CHECK: [[LSHR14:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C14]](s32) 839 ; CHECK: [[C15:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 840 ; CHECK: [[LSHR15:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C15]](s32) 841 ; CHECK: [[C16:%[0-9]+]]:_(s32) = G_CONSTANT i32 17 842 ; CHECK: [[LSHR16:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C16]](s32) 843 ; CHECK: [[C17:%[0-9]+]]:_(s32) = G_CONSTANT i32 18 844 ; CHECK: [[LSHR17:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C17]](s32) 845 ; CHECK: [[C18:%[0-9]+]]:_(s32) = G_CONSTANT i32 19 846 ; CHECK: [[LSHR18:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C18]](s32) 847 ; CHECK: [[C19:%[0-9]+]]:_(s32) = G_CONSTANT i32 20 848 ; CHECK: [[LSHR19:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C19]](s32) 849 ; CHECK: [[C20:%[0-9]+]]:_(s32) = G_CONSTANT i32 21 850 ; CHECK: [[LSHR20:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C20]](s32) 851 ; CHECK: [[C21:%[0-9]+]]:_(s32) = G_CONSTANT i32 22 852 ; CHECK: [[LSHR21:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C21]](s32) 853 ; CHECK: [[C22:%[0-9]+]]:_(s32) = G_CONSTANT i32 23 854 ; CHECK: [[LSHR22:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C22]](s32) 855 ; CHECK: [[C23:%[0-9]+]]:_(s32) = G_CONSTANT i32 24 856 ; CHECK: [[LSHR23:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C23]](s32) 857 ; CHECK: [[C24:%[0-9]+]]:_(s32) = G_CONSTANT i32 25 858 ; CHECK: [[LSHR24:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C24]](s32) 859 ; CHECK: [[C25:%[0-9]+]]:_(s32) = G_CONSTANT i32 26 860 ; CHECK: [[LSHR25:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C25]](s32) 861 ; CHECK: [[C26:%[0-9]+]]:_(s32) = G_CONSTANT i32 27 862 ; CHECK: [[LSHR26:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C26]](s32) 863 ; CHECK: [[C27:%[0-9]+]]:_(s32) = G_CONSTANT i32 28 864 ; CHECK: [[LSHR27:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C27]](s32) 865 ; CHECK: [[C28:%[0-9]+]]:_(s32) = G_CONSTANT i32 29 866 ; CHECK: [[LSHR28:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C28]](s32) 867 ; CHECK: [[C29:%[0-9]+]]:_(s32) = G_CONSTANT i32 30 868 ; CHECK: [[LSHR29:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C29]](s32) 869 ; CHECK: [[C30:%[0-9]+]]:_(s32) = G_CONSTANT i32 31 870 ; CHECK: [[LSHR30:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C30]](s32) 871 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 872 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 873 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 874 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) 875 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY [[LSHR3]](s32) 876 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32) 877 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY [[LSHR5]](s32) 878 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY [[LSHR6]](s32) 879 ; CHECK: $vgpr0 = COPY [[COPY1]](s32) 880 ; CHECK: $vgpr1 = COPY [[COPY2]](s32) 881 ; CHECK: $vgpr2 = COPY [[COPY3]](s32) 882 ; CHECK: $vgpr3 = COPY [[COPY4]](s32) 883 ; CHECK: $vgpr4 = COPY [[COPY5]](s32) 884 ; CHECK: $vgpr5 = COPY [[COPY6]](s32) 885 ; CHECK: $vgpr6 = COPY [[COPY7]](s32) 886 ; CHECK: $vgpr7 = COPY [[COPY8]](s32) 887 %0:_(s32) = COPY $vgpr0 888 %1:_(s8) = G_TRUNC %0 889 %2:_(s1), %3:_(s1), %4:_(s1), %5:_(s1), %6:_(s1), %7:_(s1), %8:_(s1), %9:_(s1) = G_UNMERGE_VALUES %1 890 %10:_(s32) = G_ANYEXT %2 891 %11:_(s32) = G_ANYEXT %3 892 %12:_(s32) = G_ANYEXT %4 893 %13:_(s32) = G_ANYEXT %5 894 %14:_(s32) = G_ANYEXT %6 895 %15:_(s32) = G_ANYEXT %7 896 %16:_(s32) = G_ANYEXT %8 897 %17:_(s32) = G_ANYEXT %9 898 $vgpr0 = COPY %10 899 $vgpr1 = COPY %11 900 $vgpr2 = COPY %12 901 $vgpr3 = COPY %13 902 $vgpr4 = COPY %14 903 $vgpr5 = COPY %15 904 $vgpr6 = COPY %16 905 $vgpr7 = COPY %17 906... 907 908--- 909 910name: test_unmerge_s128_v2s128 911body: | 912 bb.0: 913 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 914 ; CHECK-LABEL: name: test_unmerge_s128_v2s128 915 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s128>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 916 ; CHECK: [[UV:%[0-9]+]]:_(s128), [[UV1:%[0-9]+]]:_(s128) = G_UNMERGE_VALUES [[COPY]](<2 x s128>) 917 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[UV]](s128) 918 ; CHECK: $vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[UV1]](s128) 919 %0:_(<2 x s128>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 920 %1:_(s128), %2:_(s128) = G_UNMERGE_VALUES %0 921 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1 922 $vgpr4_vgpr5_vgpr6_vgpr7 = COPY %2 923... 924 925--- 926 927name: test_unmerge_s128_s256 928body: | 929 bb.0: 930 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 931 ; CHECK-LABEL: name: test_unmerge_s128_s256 932 ; CHECK: [[COPY:%[0-9]+]]:_(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 933 ; CHECK: [[UV:%[0-9]+]]:_(s128), [[UV1:%[0-9]+]]:_(s128) = G_UNMERGE_VALUES [[COPY]](s256) 934 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[UV]](s128) 935 ; CHECK: $vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[UV1]](s128) 936 %0:_(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 937 %1:_(s128), %2:_(s128) = G_UNMERGE_VALUES %0 938 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1 939 $vgpr4_vgpr5_vgpr6_vgpr7 = COPY %2 940... 941 942--- 943 944name: test_unmerge_s256_s512 945body: | 946 bb.0: 947 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 948 949 ; CHECK-LABEL: name: test_unmerge_s256_s512 950 ; CHECK: [[COPY:%[0-9]+]]:_(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 951 ; CHECK: [[UV:%[0-9]+]]:_(s256), [[UV1:%[0-9]+]]:_(s256) = G_UNMERGE_VALUES [[COPY]](s512) 952 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[UV]](s256) 953 ; CHECK: $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[UV1]](s256) 954 %0:_(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 955 %1:_(s256), %2:_(s256) = G_UNMERGE_VALUES %0 956 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1 957 $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %2 958... 959 960--- 961 962name: test_unmerge_s256_v2s256 963body: | 964 bb.0: 965 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 966 967 ; CHECK-LABEL: name: test_unmerge_s256_v2s256 968 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s256>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 969 ; CHECK: [[UV:%[0-9]+]]:_(s256), [[UV1:%[0-9]+]]:_(s256) = G_UNMERGE_VALUES [[COPY]](<2 x s256>) 970 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[UV]](s256) 971 ; CHECK: $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[UV1]](s256) 972 %0:_(<2 x s256>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 973 %1:_(s256), %2:_(s256) = G_UNMERGE_VALUES %0 974 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1 975 $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %2 976... 977 978--- 979 980name: test_unmerge_s512_s1024 981body: | 982 bb.0: 983 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_vgpr31 984 985 ; CHECK-LABEL: name: test_unmerge_s512_s1024 986 ; CHECK: [[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_vgpr31 987 ; CHECK: [[UV:%[0-9]+]]:_(s512), [[UV1:%[0-9]+]]:_(s512) = G_UNMERGE_VALUES [[COPY]](s1024) 988 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[UV]](s512) 989 ; CHECK: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31 = COPY [[UV1]](s512) 990 %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_vgpr31 991 %1:_(s512), %2:_(s512) = G_UNMERGE_VALUES %0 992 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %1 993 $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31 = COPY %2 994... 995 996--- 997 998name: test_unmerge_s512_v2s512 999body: | 1000 bb.0: 1001 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_vgpr31 1002 1003 ; CHECK-LABEL: name: test_unmerge_s512_v2s512 1004 ; CHECK: [[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_vgpr31 1005 ; CHECK: [[UV:%[0-9]+]]:_(s512), [[UV1:%[0-9]+]]:_(s512) = G_UNMERGE_VALUES [[COPY]](<2 x s512>) 1006 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[UV]](s512) 1007 ; CHECK: $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31 = COPY [[UV1]](s512) 1008 %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_vgpr31 1009 %1:_(s512), %2:_(s512) = G_UNMERGE_VALUES %0 1010 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %1 1011 $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31 = COPY %2 1012... 1013 1014--- 1015name: test_unmerge_v2s1 1016body: | 1017 bb.0: 1018 ; CHECK-LABEL: name: test_unmerge_v2s1 1019 ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s32>) = G_IMPLICIT_DEF 1020 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<2 x s32>) 1021 ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[UV]](s32) 1022 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s1) = G_TRUNC [[UV1]](s32) 1023 ; CHECK: S_NOP 0, implicit [[TRUNC]](s1) 1024 ; CHECK: S_NOP 0, implicit [[TRUNC1]](s1) 1025 %0:_(<2 x s1>) = G_IMPLICIT_DEF 1026 %1:_(s1), %2:_(s1) = G_UNMERGE_VALUES %0 1027 S_NOP 0, implicit %1 1028 S_NOP 0, implicit %2 1029... 1030 1031name: test_unmerge_s8_v4s8 1032body: | 1033 bb.0: 1034 liveins: $vgpr0 1035 1036 ; CHECK-LABEL: name: test_unmerge_s8_v4s8 1037 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1038 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 1039 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32) 1040 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 1041 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C1]](s32) 1042 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 24 1043 ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C2]](s32) 1044 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 1045 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 1046 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 1047 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) 1048 ; CHECK: $vgpr0 = COPY [[COPY1]](s32) 1049 ; CHECK: $vgpr1 = COPY [[COPY2]](s32) 1050 ; CHECK: $vgpr2 = COPY [[COPY3]](s32) 1051 ; CHECK: $vgpr3 = COPY [[COPY4]](s32) 1052 %0:_(s32) = COPY $vgpr0 1053 %1:_(<4 x s8>) = G_BITCAST %0 1054 %2:_(s8), %3:_(s8), %4:_(s8), %5:_(s8) = G_UNMERGE_VALUES %1 1055 %6:_(s32) = G_ANYEXT %2 1056 %7:_(s32) = G_ANYEXT %3 1057 %8:_(s32) = G_ANYEXT %4 1058 %9:_(s32) = G_ANYEXT %5 1059 $vgpr0 = COPY %6 1060 $vgpr1 = COPY %7 1061 $vgpr2 = COPY %8 1062 $vgpr3 = COPY %9 1063... 1064 1065--- 1066name: test_unmerge_s8_v3s8 1067body: | 1068 bb.0: 1069 liveins: $vgpr0 1070 1071 ; CHECK-LABEL: name: test_unmerge_s8_v3s8 1072 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1073 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 1074 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32) 1075 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 1076 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C1]](s32) 1077 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 24 1078 ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C2]](s32) 1079 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 1080 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 1081 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 1082 ; CHECK: $vgpr0 = COPY [[COPY1]](s32) 1083 ; CHECK: $vgpr1 = COPY [[COPY2]](s32) 1084 ; CHECK: $vgpr2 = COPY [[COPY3]](s32) 1085 %0:_(s32) = COPY $vgpr0 1086 %1:_(s24) = G_TRUNC %0 1087 %2:_(<3 x s8>) = G_BITCAST %1 1088 %3:_(s8), %4:_(s8), %5:_(s8) = G_UNMERGE_VALUES %2 1089 %6:_(s32) = G_ANYEXT %3 1090 %7:_(s32) = G_ANYEXT %4 1091 %8:_(s32) = G_ANYEXT %5 1092 $vgpr0 = COPY %6 1093 $vgpr1 = COPY %7 1094 $vgpr2 = COPY %8 1095... 1096 1097--- 1098name: test_unmerge_s8_v2s8 1099body: | 1100 bb.0: 1101 liveins: $vgpr0 1102 1103 ; CHECK-LABEL: name: test_unmerge_s8_v2s8 1104 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1105 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 1106 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32) 1107 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 1108 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C1]](s32) 1109 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 24 1110 ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C2]](s32) 1111 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 1112 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 1113 ; CHECK: $vgpr0 = COPY [[COPY1]](s32) 1114 ; CHECK: $vgpr1 = COPY [[COPY2]](s32) 1115 %0:_(s32) = COPY $vgpr0 1116 %1:_(s16) = G_TRUNC %0 1117 %2:_(<2 x s8>) = G_BITCAST %1 1118 %3:_(s8), %4:_(s8) = G_UNMERGE_VALUES %2 1119 %5:_(s32) = G_ANYEXT %3 1120 %6:_(s32) = G_ANYEXT %4 1121 $vgpr0 = COPY %5 1122 $vgpr1 = COPY %6 1123 1124... 1125 1126--- 1127name: test_unmerge_v3s32_v12s32 1128body: | 1129 bb.0: 1130 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5, $vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11 1131 1132 ; CHECK-LABEL: name: test_unmerge_v3s32_v12s32 1133 ; CHECK: [[COPY:%[0-9]+]]:_(<6 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5 1134 ; CHECK: [[COPY1:%[0-9]+]]:_(<6 x s32>) = COPY $vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11 1135 ; CHECK: [[UV:%[0-9]+]]:_(<3 x s32>), [[UV1:%[0-9]+]]:_(<3 x s32>) = G_UNMERGE_VALUES [[COPY]](<6 x s32>) 1136 ; CHECK: [[UV2:%[0-9]+]]:_(<3 x s32>), [[UV3:%[0-9]+]]:_(<3 x s32>) = G_UNMERGE_VALUES [[COPY1]](<6 x s32>) 1137 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[UV]](<3 x s32>) 1138 ; CHECK: $vgpr3_vgpr4_vgpr5 = COPY [[UV1]](<3 x s32>) 1139 ; CHECK: $vgpr6_vgpr7_vgpr8 = COPY [[UV2]](<3 x s32>) 1140 ; CHECK: $vgpr9_vgpr10_vgpr11 = COPY [[UV3]](<3 x s32>) 1141 %0:_(<6 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5 1142 %1:_(<6 x s32>) = COPY $vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11 1143 %2:_(<12 x s32>) = G_CONCAT_VECTORS %0, %1 1144 %3:_(<3 x s32>), %4:_(<3 x s32>), %5:_(<3 x s32>), %6:_(<3 x s32>) = G_UNMERGE_VALUES %2 1145 $vgpr0_vgpr1_vgpr2 = COPY %3 1146 $vgpr3_vgpr4_vgpr5 = COPY %4 1147 $vgpr6_vgpr7_vgpr8 = COPY %5 1148 $vgpr9_vgpr10_vgpr11 = COPY %6 1149 1150... 1151 1152--- 1153name: test_unmerge_v3s8_v12s8 1154body: | 1155 bb.0: 1156 liveins: $vgpr0_vgpr1_vgpr2 1157 1158 ; CHECK-LABEL: name: test_unmerge_v3s8_v12s8 1159 ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 1160 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>) 1161 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 1162 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32) 1163 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 1164 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C1]](s32) 1165 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 24 1166 ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C2]](s32) 1167 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV]](s32) 1168 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 1169 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32) 1170 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) 1171 ; CHECK: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C]](s32) 1172 ; CHECK: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C1]](s32) 1173 ; CHECK: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[UV1]], [[C2]](s32) 1174 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) 1175 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY [[LSHR3]](s32) 1176 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32) 1177 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY [[LSHR5]](s32) 1178 ; CHECK: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[UV2]], [[C]](s32) 1179 ; CHECK: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[UV2]], [[C1]](s32) 1180 ; CHECK: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[UV2]], [[C2]](s32) 1181 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) 1182 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY [[LSHR6]](s32) 1183 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY [[LSHR7]](s32) 1184 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY [[LSHR8]](s32) 1185 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32) 1186 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY2]](s32) 1187 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY3]](s32) 1188 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32) 1189 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY4]](s32) 1190 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY5]](s32) 1191 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY [[COPY6]](s32) 1192 ; CHECK: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32) 1193 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY [[COPY7]](s32) 1194 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY [[COPY8]](s32) 1195 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY [[COPY9]](s32) 1196 ; CHECK: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32) 1197 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY [[COPY10]](s32) 1198 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY [[COPY11]](s32) 1199 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY [[COPY12]](s32) 1200 ; CHECK: [[BUILD_VECTOR3:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32) 1201 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>) 1202 ; CHECK: $vgpr3_vgpr4_vgpr5 = COPY [[BUILD_VECTOR1]](<3 x s32>) 1203 ; CHECK: $vgpr6_vgpr7_vgpr8 = COPY [[BUILD_VECTOR2]](<3 x s32>) 1204 ; CHECK: $vgpr9_vgpr10_vgpr11 = COPY [[BUILD_VECTOR3]](<3 x s32>) 1205 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 1206 %1:_(<12 x s8>) = G_BITCAST %0 1207 %2:_(<3 x s8>), %3:_(<3 x s8>), %4:_(<3 x s8>), %5:_(<3 x s8>) = G_UNMERGE_VALUES %1 1208 %6:_(<3 x s32>) = G_ANYEXT %2 1209 %7:_(<3 x s32>) = G_ANYEXT %3 1210 %8:_(<3 x s32>) = G_ANYEXT %4 1211 %9:_(<3 x s32>) = G_ANYEXT %5 1212 $vgpr0_vgpr1_vgpr2 = COPY %6 1213 $vgpr3_vgpr4_vgpr5 = COPY %7 1214 $vgpr6_vgpr7_vgpr8 = COPY %8 1215 $vgpr9_vgpr10_vgpr11 = COPY %9 1216 1217... 1218 1219--- 1220name: test_unmerge_v3s16_v12s16 1221body: | 1222 bb.0: 1223 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5 1224 1225 ; CHECK-LABEL: name: test_unmerge_v3s16_v12s16 1226 ; CHECK: [[COPY:%[0-9]+]]:_(<12 x s16>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5 1227 ; CHECK: [[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>) 1228 ; CHECK: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>) 1229 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 1230 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32) 1231 ; CHECK: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>) 1232 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32) 1233 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) 1234 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 1235 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[BITCAST1]](s32) 1236 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32) 1237 ; CHECK: [[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>) 1238 ; CHECK: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV7]](<2 x s16>) 1239 ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C]](s32) 1240 ; CHECK: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[UV8]](<2 x s16>) 1241 ; CHECK: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST3]], [[C]](s32) 1242 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) 1243 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY [[BITCAST3]](s32) 1244 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY [[LSHR3]](s32) 1245 ; CHECK: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32) 1246 ; CHECK: [[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>) 1247 ; CHECK: [[BITCAST4:%[0-9]+]]:_(s32) = G_BITCAST [[UV15]](<2 x s16>) 1248 ; CHECK: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST4]], [[C]](s32) 1249 ; CHECK: [[BITCAST5:%[0-9]+]]:_(s32) = G_BITCAST [[UV16]](<2 x s16>) 1250 ; CHECK: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST5]], [[C]](s32) 1251 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY [[BITCAST4]](s32) 1252 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32) 1253 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY [[BITCAST5]](s32) 1254 ; CHECK: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32) 1255 ; CHECK: [[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>) 1256 ; CHECK: [[BITCAST6:%[0-9]+]]:_(s32) = G_BITCAST [[UV22]](<2 x s16>) 1257 ; CHECK: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST6]], [[C]](s32) 1258 ; CHECK: [[BITCAST7:%[0-9]+]]:_(s32) = G_BITCAST [[UV23]](<2 x s16>) 1259 ; CHECK: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST7]], [[C]](s32) 1260 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY [[LSHR6]](s32) 1261 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY [[BITCAST7]](s32) 1262 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY [[LSHR7]](s32) 1263 ; CHECK: [[BUILD_VECTOR3:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32) 1264 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>) 1265 ; CHECK: $vgpr3_vgpr4_vgpr5 = COPY [[BUILD_VECTOR1]](<3 x s32>) 1266 ; CHECK: $vgpr6_vgpr7_vgpr8 = COPY [[BUILD_VECTOR2]](<3 x s32>) 1267 ; CHECK: $vgpr9_vgpr10_vgpr11 = COPY [[BUILD_VECTOR3]](<3 x s32>) 1268 %0:_(<12 x s16>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5 1269 %1:_(<3 x s16>), %2:_(<3 x s16>), %3:_(<3 x s16>), %4:_(<3 x s16>) = G_UNMERGE_VALUES %0 1270 %5:_(<3 x s32>) = G_ANYEXT %1 1271 %6:_(<3 x s32>) = G_ANYEXT %2 1272 %7:_(<3 x s32>) = G_ANYEXT %3 1273 %8:_(<3 x s32>) = G_ANYEXT %4 1274 $vgpr0_vgpr1_vgpr2 = COPY %5 1275 $vgpr3_vgpr4_vgpr5 = COPY %6 1276 $vgpr6_vgpr7_vgpr8 = COPY %7 1277 $vgpr9_vgpr10_vgpr11 = COPY %8 1278 1279... 1280