1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -run-pass=instruction-select -o - %s | FileCheck -check-prefix=GFX9 %s 3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 -run-pass=instruction-select -o - %s | FileCheck -check-prefix=GFX9 %s 4 5--- 6name: v_shufflevector_v2s16_v2s16_u_u 7tracksRegLiveness: true 8legalized: true 9regBankSelected: true 10 11body: | 12 bb.0: 13 liveins: $vgpr0, $vgpr1 14 15 ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_u_u 16 ; GFX9: liveins: $vgpr0, $vgpr1 17 ; GFX9: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF 18 ; GFX9: $vgpr0 = COPY [[DEF]] 19 %0:vgpr(<2 x s16>) = COPY $vgpr0 20 %1:vgpr(<2 x s16>) = COPY $vgpr1 21 %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, undef) 22 $vgpr0 = COPY %2 23 24... 25 26--- 27name: v_shufflevector_v2s16_v2s16_0_u 28tracksRegLiveness: true 29legalized: true 30regBankSelected: true 31 32body: | 33 bb.0: 34 liveins: $vgpr0, $vgpr1 35 36 ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_0_u 37 ; GFX9: liveins: $vgpr0, $vgpr1 38 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 39 ; GFX9: $vgpr0 = COPY [[COPY]] 40 %0:vgpr(<2 x s16>) = COPY $vgpr0 41 %1:vgpr(<2 x s16>) = COPY $vgpr1 42 %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, undef) 43 $vgpr0 = COPY %2 44 45... 46 47--- 48name: v_shufflevector_v2s16_v2s16_u_0 49tracksRegLiveness: true 50legalized: true 51regBankSelected: true 52 53body: | 54 bb.0: 55 liveins: $vgpr0, $vgpr1 56 57 ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_u_0 58 ; GFX9: liveins: $vgpr0, $vgpr1 59 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 60 ; GFX9: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 16, [[COPY]], implicit $exec 61 ; GFX9: $vgpr0 = COPY [[V_LSHLREV_B32_e64_]] 62 %0:vgpr(<2 x s16>) = COPY $vgpr0 63 %1:vgpr(<2 x s16>) = COPY $vgpr1 64 %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, 0) 65 $vgpr0 = COPY %2 66 67... 68 69--- 70name: v_shufflevector_v2s16_v2s16_1_u 71tracksRegLiveness: true 72legalized: true 73regBankSelected: true 74 75body: | 76 bb.0: 77 liveins: $vgpr0, $vgpr1 78 79 ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_1_u 80 ; GFX9: liveins: $vgpr0, $vgpr1 81 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 82 ; GFX9: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 16, [[COPY]], implicit $exec 83 ; GFX9: $vgpr0 = COPY [[V_LSHRREV_B32_e64_]] 84 %0:vgpr(<2 x s16>) = COPY $vgpr0 85 %1:vgpr(<2 x s16>) = COPY $vgpr1 86 %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(1, undef) 87 $vgpr0 = COPY %2 88 89... 90 91--- 92name: v_shufflevector_v2s16_v2s16_u_1 93tracksRegLiveness: true 94legalized: true 95regBankSelected: true 96 97body: | 98 bb.0: 99 liveins: $vgpr0, $vgpr1 100 101 ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_u_1 102 ; GFX9: liveins: $vgpr0, $vgpr1 103 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 104 ; GFX9: $vgpr0 = COPY [[COPY]] 105 %0:vgpr(<2 x s16>) = COPY $vgpr0 106 %1:vgpr(<2 x s16>) = COPY $vgpr1 107 %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, 1) 108 $vgpr0 = COPY %2 109 110... 111 112 113--- 114name: v_shufflevector_v2s16_v2s16_2_u 115tracksRegLiveness: true 116legalized: true 117regBankSelected: true 118 119body: | 120 bb.0: 121 liveins: $vgpr0, $vgpr1 122 123 ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_2_u 124 ; GFX9: liveins: $vgpr0, $vgpr1 125 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1 126 ; GFX9: $vgpr0 = COPY [[COPY]] 127 %0:vgpr(<2 x s16>) = COPY $vgpr0 128 %1:vgpr(<2 x s16>) = COPY $vgpr1 129 %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(2, undef) 130 $vgpr0 = COPY %2 131 132... 133 134--- 135name: v_shufflevector_v2s16_v2s16_u_2 136tracksRegLiveness: true 137legalized: true 138regBankSelected: true 139 140body: | 141 bb.0: 142 liveins: $vgpr0, $vgpr1 143 144 ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_u_2 145 ; GFX9: liveins: $vgpr0, $vgpr1 146 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1 147 ; GFX9: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 16, [[COPY]], implicit $exec 148 ; GFX9: $vgpr0 = COPY [[V_LSHLREV_B32_e64_]] 149 %0:vgpr(<2 x s16>) = COPY $vgpr0 150 %1:vgpr(<2 x s16>) = COPY $vgpr1 151 %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, 2) 152 $vgpr0 = COPY %2 153 154... 155 156--- 157name: v_shufflevector_v2s16_v2s16_3_u 158tracksRegLiveness: true 159legalized: true 160regBankSelected: true 161 162body: | 163 bb.0: 164 liveins: $vgpr0, $vgpr1 165 166 ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_3_u 167 ; GFX9: liveins: $vgpr0, $vgpr1 168 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1 169 ; GFX9: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 16, [[COPY]], implicit $exec 170 ; GFX9: $vgpr0 = COPY [[V_LSHRREV_B32_e64_]] 171 %0:vgpr(<2 x s16>) = COPY $vgpr0 172 %1:vgpr(<2 x s16>) = COPY $vgpr1 173 %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(3, undef) 174 $vgpr0 = COPY %2 175 176... 177 178--- 179name: v_shufflevector_v2s16_v2s16_u_3 180tracksRegLiveness: true 181legalized: true 182regBankSelected: true 183 184body: | 185 bb.0: 186 liveins: $vgpr0, $vgpr1 187 188 ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_u_3 189 ; GFX9: liveins: $vgpr0, $vgpr1 190 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1 191 ; GFX9: $vgpr0 = COPY [[COPY]] 192 %0:vgpr(<2 x s16>) = COPY $vgpr0 193 %1:vgpr(<2 x s16>) = COPY $vgpr1 194 %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, 3) 195 $vgpr0 = COPY %2 196 197... 198 199--- 200name: v_shufflevector_v2s16_v2s16_0_0 201tracksRegLiveness: true 202legalized: true 203regBankSelected: true 204 205body: | 206 bb.0: 207 liveins: $vgpr0, $vgpr1 208 209 ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_0_0 210 ; GFX9: liveins: $vgpr0, $vgpr1 211 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 212 ; GFX9: [[V_MOV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_MOV_B32_sdwa 0, [[COPY]], 0, 5, 2, 4, implicit $exec, implicit [[COPY]](tied-def 0) 213 ; GFX9: $vgpr0 = COPY [[V_MOV_B32_sdwa]] 214 %0:vgpr(<2 x s16>) = COPY $vgpr0 215 %1:vgpr(<2 x s16>) = COPY $vgpr1 216 %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 0) 217 $vgpr0 = COPY %2 218 219... 220 221--- 222name: v_shufflevector_v2s16_v2s16_0_1 223tracksRegLiveness: true 224legalized: true 225regBankSelected: true 226 227body: | 228 bb.0: 229 liveins: $vgpr0, $vgpr1 230 231 ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_0_1 232 ; GFX9: liveins: $vgpr0, $vgpr1 233 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 234 ; GFX9: $vgpr0 = COPY [[COPY]] 235 %0:vgpr(<2 x s16>) = COPY $vgpr0 236 %1:vgpr(<2 x s16>) = COPY $vgpr1 237 %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 1) 238 $vgpr0 = COPY %2 239 240... 241 242--- 243name: v_shufflevector_v2s16_v2s16_1_0 244tracksRegLiveness: true 245legalized: true 246regBankSelected: true 247 248body: | 249 bb.0: 250 liveins: $vgpr0, $vgpr1 251 252 ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_1_0 253 ; GFX9: liveins: $vgpr0, $vgpr1 254 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 255 ; GFX9: [[V_ALIGNBIT_B32_e64_:%[0-9]+]]:vgpr_32 = V_ALIGNBIT_B32_e64 [[COPY]], [[COPY]], 16, implicit $exec 256 ; GFX9: $vgpr0 = COPY [[V_ALIGNBIT_B32_e64_]] 257 %0:vgpr(<2 x s16>) = COPY $vgpr0 258 %1:vgpr(<2 x s16>) = COPY $vgpr1 259 %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(1, 0) 260 $vgpr0 = COPY %2 261 262... 263 264--- 265name: v_shufflevector_v2s16_v2s16_1_1 266tracksRegLiveness: true 267legalized: true 268regBankSelected: true 269 270body: | 271 bb.0: 272 liveins: $vgpr0, $vgpr1 273 274 ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_1_1 275 ; GFX9: liveins: $vgpr0, $vgpr1 276 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 277 ; GFX9: [[V_MOV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_MOV_B32_sdwa 0, [[COPY]], 0, 4, 2, 5, implicit $exec, implicit [[COPY]](tied-def 0) 278 ; GFX9: $vgpr0 = COPY [[V_MOV_B32_sdwa]] 279 %0:vgpr(<2 x s16>) = COPY $vgpr0 280 %1:vgpr(<2 x s16>) = COPY $vgpr1 281 %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(1, 1) 282 $vgpr0 = COPY %2 283 284... 285 286--- 287name: v_shufflevector_v2s16_v2s16_2_2 288tracksRegLiveness: true 289legalized: true 290regBankSelected: true 291 292body: | 293 bb.0: 294 liveins: $vgpr0, $vgpr1 295 296 ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_2_2 297 ; GFX9: liveins: $vgpr0, $vgpr1 298 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1 299 ; GFX9: [[V_MOV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_MOV_B32_sdwa 0, [[COPY]], 0, 5, 2, 4, implicit $exec, implicit [[COPY]](tied-def 0) 300 ; GFX9: $vgpr0 = COPY [[V_MOV_B32_sdwa]] 301 %0:vgpr(<2 x s16>) = COPY $vgpr0 302 %1:vgpr(<2 x s16>) = COPY $vgpr1 303 %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(2, 2) 304 $vgpr0 = COPY %2 305 306... 307 308--- 309name: v_shufflevector_v2s16_v2s16_2_3 310tracksRegLiveness: true 311legalized: true 312regBankSelected: true 313 314body: | 315 bb.0: 316 liveins: $vgpr0, $vgpr1 317 318 ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_2_3 319 ; GFX9: liveins: $vgpr0, $vgpr1 320 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1 321 ; GFX9: $vgpr0 = COPY [[COPY]] 322 %0:vgpr(<2 x s16>) = COPY $vgpr0 323 %1:vgpr(<2 x s16>) = COPY $vgpr1 324 %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(2, 3) 325 $vgpr0 = COPY %2 326 327... 328 329--- 330name: v_shufflevector_v2s16_v2s16_3_2 331tracksRegLiveness: true 332legalized: true 333regBankSelected: true 334 335body: | 336 bb.0: 337 liveins: $vgpr0, $vgpr1 338 339 ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_3_2 340 ; GFX9: liveins: $vgpr0, $vgpr1 341 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1 342 ; GFX9: [[V_ALIGNBIT_B32_e64_:%[0-9]+]]:vgpr_32 = V_ALIGNBIT_B32_e64 [[COPY]], [[COPY]], 16, implicit $exec 343 ; GFX9: $vgpr0 = COPY [[V_ALIGNBIT_B32_e64_]] 344 %0:vgpr(<2 x s16>) = COPY $vgpr0 345 %1:vgpr(<2 x s16>) = COPY $vgpr1 346 %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(3, 2) 347 $vgpr0 = COPY %2 348 349... 350 351--- 352name: v_shufflevector_v2s16_v2s16_3_3 353tracksRegLiveness: true 354legalized: true 355regBankSelected: true 356 357body: | 358 bb.0: 359 liveins: $vgpr0, $vgpr1 360 361 ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_3_3 362 ; GFX9: liveins: $vgpr0, $vgpr1 363 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1 364 ; GFX9: [[V_MOV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_MOV_B32_sdwa 0, [[COPY]], 0, 4, 2, 5, implicit $exec, implicit [[COPY]](tied-def 0) 365 ; GFX9: $vgpr0 = COPY [[V_MOV_B32_sdwa]] 366 %0:vgpr(<2 x s16>) = COPY $vgpr0 367 %1:vgpr(<2 x s16>) = COPY $vgpr1 368 %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(3, 3) 369 $vgpr0 = COPY %2 370 371... 372 373--- 374name: s_shufflevector_v2s16_v2s16_u_u 375tracksRegLiveness: true 376legalized: true 377regBankSelected: true 378 379body: | 380 bb.0: 381 liveins: $sgpr0, $sgpr1 382 383 ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_u_u 384 ; GFX9: liveins: $sgpr0, $sgpr1 385 ; GFX9: [[DEF:%[0-9]+]]:sreg_32 = IMPLICIT_DEF 386 ; GFX9: $sgpr0 = COPY [[DEF]] 387 %0:sgpr(<2 x s16>) = COPY $sgpr0 388 %1:sgpr(<2 x s16>) = COPY $sgpr1 389 %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, undef) 390 $sgpr0 = COPY %2 391 392... 393 394--- 395name: s_shufflevector_v2s16_v2s16_0_u 396tracksRegLiveness: true 397legalized: true 398regBankSelected: true 399 400body: | 401 bb.0: 402 liveins: $sgpr0, $sgpr1 403 404 ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_0_u 405 ; GFX9: liveins: $sgpr0, $sgpr1 406 ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 407 ; GFX9: $sgpr0 = COPY [[COPY]] 408 %0:sgpr(<2 x s16>) = COPY $sgpr0 409 %1:sgpr(<2 x s16>) = COPY $sgpr1 410 %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, undef) 411 $sgpr0 = COPY %2 412 413... 414 415--- 416name: s_shufflevector_v2s16_v2s16_u_0 417tracksRegLiveness: true 418legalized: true 419regBankSelected: true 420 421body: | 422 bb.0: 423 liveins: $sgpr0, $sgpr1 424 425 ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_u_0 426 ; GFX9: liveins: $sgpr0, $sgpr1 427 ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 428 ; GFX9: [[S_LSHL_B32_:%[0-9]+]]:sreg_32 = S_LSHL_B32 [[COPY]], 16, implicit-def $scc 429 ; GFX9: $sgpr0 = COPY [[S_LSHL_B32_]] 430 %0:sgpr(<2 x s16>) = COPY $sgpr0 431 %1:sgpr(<2 x s16>) = COPY $sgpr1 432 %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, 0) 433 $sgpr0 = COPY %2 434 435... 436 437--- 438name: s_shufflevector_v2s16_v2s16_1_u 439tracksRegLiveness: true 440legalized: true 441regBankSelected: true 442 443body: | 444 bb.0: 445 liveins: $sgpr0, $sgpr1 446 447 ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_1_u 448 ; GFX9: liveins: $sgpr0, $sgpr1 449 ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 450 ; GFX9: [[S_LSHR_B32_:%[0-9]+]]:sreg_32 = S_LSHR_B32 [[COPY]], 16, implicit-def $scc 451 ; GFX9: $sgpr0 = COPY [[S_LSHR_B32_]] 452 %0:sgpr(<2 x s16>) = COPY $sgpr0 453 %1:sgpr(<2 x s16>) = COPY $sgpr1 454 %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(1, undef) 455 $sgpr0 = COPY %2 456 457... 458 459--- 460name: s_shufflevector_v2s16_v2s16_u_1 461tracksRegLiveness: true 462legalized: true 463regBankSelected: true 464 465body: | 466 bb.0: 467 liveins: $sgpr0, $sgpr1 468 469 ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_u_1 470 ; GFX9: liveins: $sgpr0, $sgpr1 471 ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 472 ; GFX9: $sgpr0 = COPY [[COPY]] 473 %0:sgpr(<2 x s16>) = COPY $sgpr0 474 %1:sgpr(<2 x s16>) = COPY $sgpr1 475 %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, 1) 476 $sgpr0 = COPY %2 477 478... 479 480 481--- 482name: s_shufflevector_v2s16_v2s16_2_u 483tracksRegLiveness: true 484legalized: true 485regBankSelected: true 486 487body: | 488 bb.0: 489 liveins: $sgpr0, $sgpr1 490 491 ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_2_u 492 ; GFX9: liveins: $sgpr0, $sgpr1 493 ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr1 494 ; GFX9: $sgpr0 = COPY [[COPY]] 495 %0:sgpr(<2 x s16>) = COPY $sgpr0 496 %1:sgpr(<2 x s16>) = COPY $sgpr1 497 %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(2, undef) 498 $sgpr0 = COPY %2 499 500... 501 502--- 503name: s_shufflevector_v2s16_v2s16_u_2 504tracksRegLiveness: true 505legalized: true 506regBankSelected: true 507 508body: | 509 bb.0: 510 liveins: $sgpr0, $sgpr1 511 512 ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_u_2 513 ; GFX9: liveins: $sgpr0, $sgpr1 514 ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr1 515 ; GFX9: [[S_LSHL_B32_:%[0-9]+]]:sreg_32 = S_LSHL_B32 [[COPY]], 16, implicit-def $scc 516 ; GFX9: $sgpr0 = COPY [[S_LSHL_B32_]] 517 %0:sgpr(<2 x s16>) = COPY $sgpr0 518 %1:sgpr(<2 x s16>) = COPY $sgpr1 519 %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, 2) 520 $sgpr0 = COPY %2 521 522... 523 524--- 525name: s_shufflevector_v2s16_v2s16_3_u 526tracksRegLiveness: true 527legalized: true 528regBankSelected: true 529 530body: | 531 bb.0: 532 liveins: $sgpr0, $sgpr1 533 534 ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_3_u 535 ; GFX9: liveins: $sgpr0, $sgpr1 536 ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr1 537 ; GFX9: [[S_LSHR_B32_:%[0-9]+]]:sreg_32 = S_LSHR_B32 [[COPY]], 16, implicit-def $scc 538 ; GFX9: $sgpr0 = COPY [[S_LSHR_B32_]] 539 %0:sgpr(<2 x s16>) = COPY $sgpr0 540 %1:sgpr(<2 x s16>) = COPY $sgpr1 541 %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(3, undef) 542 $sgpr0 = COPY %2 543 544... 545 546--- 547name: s_shufflevector_v2s16_v2s16_u_3 548tracksRegLiveness: true 549legalized: true 550regBankSelected: true 551 552body: | 553 bb.0: 554 liveins: $sgpr0, $sgpr1 555 556 ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_u_3 557 ; GFX9: liveins: $sgpr0, $sgpr1 558 ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr1 559 ; GFX9: $sgpr0 = COPY [[COPY]] 560 %0:sgpr(<2 x s16>) = COPY $sgpr0 561 %1:sgpr(<2 x s16>) = COPY $sgpr1 562 %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, 3) 563 $sgpr0 = COPY %2 564 565... 566 567--- 568name: s_shufflevector_v2s16_v2s16_0_0 569tracksRegLiveness: true 570legalized: true 571regBankSelected: true 572 573body: | 574 bb.0: 575 liveins: $sgpr0, $sgpr1 576 577 ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_0_0 578 ; GFX9: liveins: $sgpr0, $sgpr1 579 ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 580 ; GFX9: [[S_PACK_LL_B32_B16_:%[0-9]+]]:sreg_32 = S_PACK_LL_B32_B16 [[COPY]], [[COPY]] 581 ; GFX9: $sgpr0 = COPY [[S_PACK_LL_B32_B16_]] 582 %0:sgpr(<2 x s16>) = COPY $sgpr0 583 %1:sgpr(<2 x s16>) = COPY $sgpr1 584 %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 0) 585 $sgpr0 = COPY %2 586 587... 588 589--- 590name: s_shufflevector_v2s16_v2s16_0_1 591tracksRegLiveness: true 592legalized: true 593regBankSelected: true 594 595body: | 596 bb.0: 597 liveins: $sgpr0, $sgpr1 598 599 ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_0_1 600 ; GFX9: liveins: $sgpr0, $sgpr1 601 ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 602 ; GFX9: $sgpr0 = COPY [[COPY]] 603 %0:sgpr(<2 x s16>) = COPY $sgpr0 604 %1:sgpr(<2 x s16>) = COPY $sgpr1 605 %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 1) 606 $sgpr0 = COPY %2 607 608... 609 610--- 611name: s_shufflevector_v2s16_v2s16_1_0 612tracksRegLiveness: true 613legalized: true 614regBankSelected: true 615 616body: | 617 bb.0: 618 liveins: $sgpr0, $sgpr1 619 620 ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_1_0 621 ; GFX9: liveins: $sgpr0, $sgpr1 622 ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 623 ; GFX9: [[S_LSHR_B32_:%[0-9]+]]:sreg_32 = S_LSHR_B32 [[COPY]], 16, implicit-def $scc 624 ; GFX9: [[S_PACK_LL_B32_B16_:%[0-9]+]]:sreg_32 = S_PACK_LL_B32_B16 [[S_LSHR_B32_]], [[COPY]] 625 ; GFX9: $sgpr0 = COPY [[S_PACK_LL_B32_B16_]] 626 %0:sgpr(<2 x s16>) = COPY $sgpr0 627 %1:sgpr(<2 x s16>) = COPY $sgpr1 628 %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(1, 0) 629 $sgpr0 = COPY %2 630 631... 632 633--- 634name: s_shufflevector_v2s16_v2s16_1_1 635tracksRegLiveness: true 636legalized: true 637regBankSelected: true 638 639body: | 640 bb.0: 641 liveins: $sgpr0, $sgpr1 642 643 ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_1_1 644 ; GFX9: liveins: $sgpr0, $sgpr1 645 ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 646 ; GFX9: [[S_PACK_HH_B32_B16_:%[0-9]+]]:sreg_32 = S_PACK_HH_B32_B16 [[COPY]], [[COPY]] 647 ; GFX9: $sgpr0 = COPY [[S_PACK_HH_B32_B16_]] 648 %0:sgpr(<2 x s16>) = COPY $sgpr0 649 %1:sgpr(<2 x s16>) = COPY $sgpr1 650 %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(1, 1) 651 $sgpr0 = COPY %2 652 653... 654 655--- 656name: s_shufflevector_v2s16_v2s16_2_2 657tracksRegLiveness: true 658legalized: true 659regBankSelected: true 660 661body: | 662 bb.0: 663 liveins: $sgpr0, $sgpr1 664 665 ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_2_2 666 ; GFX9: liveins: $sgpr0, $sgpr1 667 ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr1 668 ; GFX9: [[S_PACK_LL_B32_B16_:%[0-9]+]]:sreg_32 = S_PACK_LL_B32_B16 [[COPY]], [[COPY]] 669 ; GFX9: $sgpr0 = COPY [[S_PACK_LL_B32_B16_]] 670 %0:sgpr(<2 x s16>) = COPY $sgpr0 671 %1:sgpr(<2 x s16>) = COPY $sgpr1 672 %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(2, 2) 673 $sgpr0 = COPY %2 674 675... 676 677--- 678name: s_shufflevector_v2s16_v2s16_2_3 679tracksRegLiveness: true 680legalized: true 681regBankSelected: true 682 683body: | 684 bb.0: 685 liveins: $sgpr0, $sgpr1 686 687 ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_2_3 688 ; GFX9: liveins: $sgpr0, $sgpr1 689 ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr1 690 ; GFX9: $sgpr0 = COPY [[COPY]] 691 %0:sgpr(<2 x s16>) = COPY $sgpr0 692 %1:sgpr(<2 x s16>) = COPY $sgpr1 693 %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(2, 3) 694 $sgpr0 = COPY %2 695 696... 697 698--- 699name: s_shufflevector_v2s16_v2s16_3_2 700tracksRegLiveness: true 701legalized: true 702regBankSelected: true 703 704body: | 705 bb.0: 706 liveins: $sgpr0, $sgpr1 707 708 ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_3_2 709 ; GFX9: liveins: $sgpr0, $sgpr1 710 ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr1 711 ; GFX9: [[S_LSHR_B32_:%[0-9]+]]:sreg_32 = S_LSHR_B32 [[COPY]], 16, implicit-def $scc 712 ; GFX9: [[S_PACK_LL_B32_B16_:%[0-9]+]]:sreg_32 = S_PACK_LL_B32_B16 [[S_LSHR_B32_]], [[COPY]] 713 ; GFX9: $sgpr0 = COPY [[S_PACK_LL_B32_B16_]] 714 %0:sgpr(<2 x s16>) = COPY $sgpr0 715 %1:sgpr(<2 x s16>) = COPY $sgpr1 716 %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(3, 2) 717 $sgpr0 = COPY %2 718 719... 720 721--- 722name: s_shufflevector_v2s16_v2s16_3_3 723tracksRegLiveness: true 724legalized: true 725regBankSelected: true 726 727body: | 728 bb.0: 729 liveins: $sgpr0, $sgpr1 730 731 ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_3_3 732 ; GFX9: liveins: $sgpr0, $sgpr1 733 ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr1 734 ; GFX9: [[S_PACK_HH_B32_B16_:%[0-9]+]]:sreg_32 = S_PACK_HH_B32_B16 [[COPY]], [[COPY]] 735 ; GFX9: $sgpr0 = COPY [[S_PACK_HH_B32_B16_]] 736 %0:sgpr(<2 x s16>) = COPY $sgpr0 737 %1:sgpr(<2 x s16>) = COPY $sgpr1 738 %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(3, 3) 739 $sgpr0 = COPY %2 740 741... 742