1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -O0 -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=legalizer -global-isel-abort=0 %s -o - | FileCheck %s 3# RUN: llc -O0 -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer -global-isel-abort=0 %s -o - | FileCheck %s 4 5--- 6name: test_implicit_def_s1 7body: | 8 bb.0: 9 10 ; CHECK-LABEL: name: test_implicit_def_s1 11 ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF 12 ; CHECK: $vgpr0 = COPY [[DEF]](s32) 13 %0:_(s1) = G_IMPLICIT_DEF 14 %1:_(s32) = G_ANYEXT %0 15 $vgpr0 = COPY %1 16... 17 18--- 19name: test_implicit_def_s7 20body: | 21 bb.0: 22 23 ; CHECK-LABEL: name: test_implicit_def_s7 24 ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF 25 ; CHECK: $vgpr0 = COPY [[DEF]](s32) 26 %0:_(s7) = G_IMPLICIT_DEF 27 %1:_(s32) = G_ANYEXT %0 28 $vgpr0 = COPY %1 29... 30 31--- 32name: test_implicit_def_s8 33body: | 34 bb.0: 35 36 ; CHECK-LABEL: name: test_implicit_def_s8 37 ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF 38 ; CHECK: $vgpr0 = COPY [[DEF]](s32) 39 %0:_(s8) = G_IMPLICIT_DEF 40 %1:_(s32) = G_ANYEXT %0 41 $vgpr0 = COPY %1 42... 43 44--- 45name: test_implicit_def_s16 46body: | 47 bb.0: 48 49 ; CHECK-LABEL: name: test_implicit_def_s16 50 ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF 51 ; CHECK: $vgpr0 = COPY [[DEF]](s32) 52 %0:_(s16) = G_IMPLICIT_DEF 53 %1:_(s32) = G_ANYEXT %0 54 $vgpr0 = COPY %1 55... 56 57--- 58name: test_implicit_def_s32 59body: | 60 bb.0: 61 62 ; CHECK-LABEL: name: test_implicit_def_s32 63 ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF 64 ; CHECK: $vgpr0 = COPY [[DEF]](s32) 65 %0:_(s32) = G_IMPLICIT_DEF 66 $vgpr0 = COPY %0 67... 68 69--- 70name: test_implicit_def_48 71body: | 72 bb.0: 73 74 ; CHECK-LABEL: name: test_implicit_def_48 75 ; CHECK: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF 76 ; CHECK: $vgpr0_vgpr1 = COPY [[DEF]](s64) 77 %0:_(s48) = G_IMPLICIT_DEF 78 %1:_(s64) = G_ANYEXT %0 79 $vgpr0_vgpr1 = COPY %1 80... 81 82--- 83name: test_implicit_def_s64 84body: | 85 bb.0: 86 87 ; CHECK-LABEL: name: test_implicit_def_s64 88 ; CHECK: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF 89 ; CHECK: $vgpr0_vgpr1 = COPY [[DEF]](s64) 90 %0:_(s64) = G_IMPLICIT_DEF 91 $vgpr0_vgpr1 = COPY %0 92... 93 94--- 95name: test_implicit_def_s65 96body: | 97 bb.0: 98 99 ; CHECK-LABEL: name: test_implicit_def_s65 100 ; CHECK: [[DEF:%[0-9]+]]:_(s128) = G_IMPLICIT_DEF 101 ; CHECK: [[TRUNC:%[0-9]+]]:_(s96) = G_TRUNC [[DEF]](s128) 102 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[TRUNC]](s96) 103 %0:_(s65) = G_IMPLICIT_DEF 104 %1:_(s96) = G_ANYEXT %0 105 $vgpr0_vgpr1_vgpr2 = COPY %1 106... 107 108--- 109name: test_implicit_def_s128 110body: | 111 bb.0: 112 113 ; CHECK-LABEL: name: test_implicit_def_s128 114 ; CHECK: [[DEF:%[0-9]+]]:_(s128) = G_IMPLICIT_DEF 115 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DEF]](s128) 116 %0:_(s128) = G_IMPLICIT_DEF 117 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %0 118... 119 120--- 121name: test_implicit_def_256 122body: | 123 bb.0: 124 125 ; CHECK-LABEL: name: test_implicit_def_256 126 ; CHECK: [[DEF:%[0-9]+]]:_(s256) = G_IMPLICIT_DEF 127 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[DEF]](s256) 128 %0:_(s256) = G_IMPLICIT_DEF 129 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %0 130... 131 132--- 133name: test_implicit_def_s448 134body: | 135 bb.0: 136 137 ; CHECK-LABEL: name: test_implicit_def_s448 138 ; CHECK: [[DEF:%[0-9]+]]:_(s448) = G_IMPLICIT_DEF 139 ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[DEF]](s448), 0 140 ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32) 141 %0:_(s448) = G_IMPLICIT_DEF 142 %1:_(s32) = G_EXTRACT %0, 0 143 $vgpr0 = COPY %1 144... 145 146--- 147name: test_implicit_def_s512 148body: | 149 bb.0: 150 151 ; CHECK-LABEL: name: test_implicit_def_s512 152 ; CHECK: [[DEF:%[0-9]+]]:_(s512) = G_IMPLICIT_DEF 153 ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[DEF]](s512), 0 154 ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32) 155 %0:_(s512) = G_IMPLICIT_DEF 156 %1:_(s32) = G_EXTRACT %0, 0 157 $vgpr0 = COPY %1 158... 159 160--- 161name: test_implicit_def_s1024 162body: | 163 bb.0: 164 165 ; CHECK-LABEL: name: test_implicit_def_s1024 166 ; CHECK: [[DEF:%[0-9]+]]:_(s1024) = G_IMPLICIT_DEF 167 ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[DEF]](s1024), 0 168 ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32) 169 %0:_(s1024) = G_IMPLICIT_DEF 170 %1:_(s32) = G_EXTRACT %0, 0 171 $vgpr0 = COPY %1 172... 173 174--- 175name: test_implicit_def_s1056 176body: | 177 bb.0: 178 179 ; CHECK-LABEL: name: test_implicit_def_s1056 180 ; CHECK: [[DEF:%[0-9]+]]:_(s1024) = G_IMPLICIT_DEF 181 ; CHECK: [[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), [[UV14:%[0-9]+]]:_(s32), [[UV15:%[0-9]+]]:_(s32), [[UV16:%[0-9]+]]:_(s32), [[UV17:%[0-9]+]]:_(s32), [[UV18:%[0-9]+]]:_(s32), [[UV19:%[0-9]+]]:_(s32), [[UV20:%[0-9]+]]:_(s32), [[UV21:%[0-9]+]]:_(s32), [[UV22:%[0-9]+]]:_(s32), [[UV23:%[0-9]+]]:_(s32), [[UV24:%[0-9]+]]:_(s32), [[UV25:%[0-9]+]]:_(s32), [[UV26:%[0-9]+]]:_(s32), [[UV27:%[0-9]+]]:_(s32), [[UV28:%[0-9]+]]:_(s32), [[UV29:%[0-9]+]]:_(s32), [[UV30:%[0-9]+]]:_(s32), [[UV31:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](s1024) 182 ; CHECK: $vgpr0 = COPY [[UV]](s32) 183 %0:_(s1056) = G_IMPLICIT_DEF 184 %1:_(s32) = G_TRUNC %0 185 $vgpr0 = COPY %1 186... 187 188--- 189name: test_implicit_def_s2048 190body: | 191 bb.0: 192 193 ; CHECK-LABEL: name: test_implicit_def_s2048 194 ; CHECK: [[DEF:%[0-9]+]]:_(s1024) = G_IMPLICIT_DEF 195 ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[DEF]](s1024) 196 ; CHECK: $vgpr0 = COPY [[TRUNC]](s32) 197 %0:_(s2048) = G_IMPLICIT_DEF 198 %1:_(s32) = G_TRUNC %0 199 $vgpr0 = COPY %1 200... 201 202--- 203name: test_implicit_def_v2s32 204body: | 205 bb.0: 206 207 ; CHECK-LABEL: name: test_implicit_def_v2s32 208 ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s32>) = G_IMPLICIT_DEF 209 ; CHECK: $vgpr0_vgpr1 = COPY [[DEF]](<2 x s32>) 210 %0:_(<2 x s32>) = G_IMPLICIT_DEF 211 $vgpr0_vgpr1 = COPY %0 212... 213 214--- 215name: test_implicit_def_v3s32 216body: | 217 bb.0: 218 219 ; CHECK-LABEL: name: test_implicit_def_v3s32 220 ; CHECK: [[DEF:%[0-9]+]]:_(<3 x s32>) = G_IMPLICIT_DEF 221 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[DEF]](<3 x s32>) 222 %0:_(<3 x s32>) = G_IMPLICIT_DEF 223 $vgpr0_vgpr1_vgpr2 = COPY %0 224... 225 226--- 227name: test_implicit_def_v4s32 228body: | 229 bb.0: 230 231 ; CHECK-LABEL: name: test_implicit_def_v4s32 232 ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF 233 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DEF]](<4 x s32>) 234 %0:_(<4 x s32>) = G_IMPLICIT_DEF 235 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %0 236... 237 238--- 239name: test_implicit_def_v5s32 240body: | 241 bb.0: 242 243 ; CHECK-LABEL: name: test_implicit_def_v5s32 244 ; CHECK: [[DEF:%[0-9]+]]:_(<5 x s32>) = G_IMPLICIT_DEF 245 ; CHECK: S_NOP 0, implicit [[DEF]](<5 x s32>) 246 %0:_(<5 x s32>) = G_IMPLICIT_DEF 247 S_NOP 0, implicit %0 248... 249 250--- 251name: test_implicit_def_v6s32 252body: | 253 bb.0: 254 255 ; CHECK-LABEL: name: test_implicit_def_v6s32 256 ; CHECK: [[DEF:%[0-9]+]]:_(<6 x s32>) = G_IMPLICIT_DEF 257 ; CHECK: S_NOP 0, implicit [[DEF]](<6 x s32>) 258 %0:_(<6 x s32>) = G_IMPLICIT_DEF 259 S_NOP 0, implicit %0 260... 261 262--- 263name: test_implicit_def_v7s32 264body: | 265 bb.0: 266 267 ; CHECK-LABEL: name: test_implicit_def_v7s32 268 ; CHECK: [[DEF:%[0-9]+]]:_(<7 x s32>) = G_IMPLICIT_DEF 269 ; CHECK: S_NOP 0, implicit [[DEF]](<7 x s32>) 270 %0:_(<7 x s32>) = G_IMPLICIT_DEF 271 S_NOP 0, implicit %0 272... 273 274--- 275name: test_implicit_def_v8s32 276body: | 277 bb.0: 278 279 ; CHECK-LABEL: name: test_implicit_def_v8s32 280 ; CHECK: [[DEF:%[0-9]+]]:_(<8 x s32>) = G_IMPLICIT_DEF 281 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[DEF]](<8 x s32>) 282 %0:_(<8 x s32>) = G_IMPLICIT_DEF 283 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %0 284... 285 286--- 287name: test_implicit_def_v16s32 288body: | 289 bb.0: 290 291 ; CHECK-LABEL: name: test_implicit_def_v16s32 292 ; CHECK: [[DEF:%[0-9]+]]:_(<16 x s32>) = G_IMPLICIT_DEF 293 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[DEF]](<16 x s32>) 294 %0:_(<16 x s32>) = G_IMPLICIT_DEF 295 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %0 296... 297 298--- 299name: test_implicit_def_v17s32 300body: | 301 bb.0: 302 303 ; CHECK-LABEL: name: test_implicit_def_v17s32 304 ; CHECK: [[DEF:%[0-9]+]]:_(<17 x s32>) = G_IMPLICIT_DEF 305 ; CHECK: S_NOP 0, implicit [[DEF]](<17 x s32>) 306 %0:_(<17 x s32>) = G_IMPLICIT_DEF 307 S_NOP 0, implicit %0 308... 309 310--- 311name: test_implicit_def_v32s32 312body: | 313 bb.0: 314 315 ; CHECK-LABEL: name: test_implicit_def_v32s32 316 ; CHECK: [[DEF:%[0-9]+]]:_(<32 x s32>) = G_IMPLICIT_DEF 317 ; CHECK: S_NOP 0, implicit [[DEF]](<32 x s32>) 318 %0:_(<32 x s32>) = G_IMPLICIT_DEF 319 S_NOP 0, implicit %0 320... 321 322--- 323name: test_implicit_def_v33s32 324body: | 325 bb.0: 326 liveins: $vgpr0_vgpr1 327 328 ; CHECK-LABEL: name: test_implicit_def_v33s32 329 ; CHECK: [[DEF:%[0-9]+]]:_(<16 x s32>) = G_IMPLICIT_DEF 330 ; CHECK: [[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), [[UV14:%[0-9]+]]:_(s32), [[UV15:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<16 x s32>) 331 ; CHECK: [[UV16:%[0-9]+]]:_(s32), [[UV17:%[0-9]+]]:_(s32), [[UV18:%[0-9]+]]:_(s32), [[UV19:%[0-9]+]]:_(s32), [[UV20:%[0-9]+]]:_(s32), [[UV21:%[0-9]+]]:_(s32), [[UV22:%[0-9]+]]:_(s32), [[UV23:%[0-9]+]]:_(s32), [[UV24:%[0-9]+]]:_(s32), [[UV25:%[0-9]+]]:_(s32), [[UV26:%[0-9]+]]:_(s32), [[UV27:%[0-9]+]]:_(s32), [[UV28:%[0-9]+]]:_(s32), [[UV29:%[0-9]+]]:_(s32), [[UV30:%[0-9]+]]:_(s32), [[UV31:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<16 x s32>) 332 ; CHECK: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 333 ; CHECK: G_STORE [[UV]](s32), [[COPY]](p1) :: (volatile store (s32), addrspace 1) 334 ; CHECK: G_STORE [[UV16]](s32), [[COPY]](p1) :: (volatile store (s32), addrspace 1) 335 %0:_(<33 x s32>) = G_IMPLICIT_DEF 336 %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), %15:_(s32), %16:_(s32), %17:_(s32), %18:_(s32), %19:_(s32), %20:_(s32), %21:_(s32), %22:_(s32), %23:_(s32), %24:_(s32), %25:_(s32), %26:_(s32), %27:_(s32), %28:_(s32), %29:_(s32), %30:_(s32), %31:_(s32), %32:_(s32), %33:_(s32) = G_UNMERGE_VALUES %0 337 %34:_(p1) = COPY $vgpr0_vgpr1 338 G_STORE %1, %34 :: (volatile store (s32), align 4, addrspace 1) 339 G_STORE %33, %34 :: (volatile store (s32), align 4, addrspace 1) 340 341... 342 343--- 344name: test_implicit_def_v64s32 345body: | 346 bb.0: 347 348 ; CHECK-LABEL: name: test_implicit_def_v64s32 349 ; CHECK: [[DEF:%[0-9]+]]:_(<16 x s32>) = G_IMPLICIT_DEF 350 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<64 x s32>) = G_CONCAT_VECTORS [[DEF]](<16 x s32>), [[DEF]](<16 x s32>), [[DEF]](<16 x s32>), [[DEF]](<16 x s32>) 351 ; CHECK: [[CONCAT_VECTORS1:%[0-9]+]]:_(<32 x s32>) = G_CONCAT_VECTORS [[DEF]](<16 x s32>), [[DEF]](<16 x s32>) 352 ; CHECK: S_NOP 0, implicit [[CONCAT_VECTORS]](<64 x s32>), implicit [[CONCAT_VECTORS1]](<32 x s32>) 353 %0:_(<64 x s32>) = G_IMPLICIT_DEF 354 %1:_(<32 x s32>), %2:_(<32 x s32>) = G_UNMERGE_VALUES %0 355 S_NOP 0, implicit %0, implicit %1 356... 357 358--- 359name: test_implicit_def_v2s1 360body: | 361 bb.0: 362 363 ; CHECK-LABEL: name: test_implicit_def_v2s1 364 ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s32>) = G_IMPLICIT_DEF 365 ; CHECK: $vgpr0_vgpr1 = COPY [[DEF]](<2 x s32>) 366 %0:_(<2 x s1>) = G_IMPLICIT_DEF 367 %1:_(<2 x s32>) = G_ANYEXT %0 368 $vgpr0_vgpr1 = COPY %1 369... 370 371--- 372name: test_implicit_def_v3s1 373body: | 374 bb.0: 375 376 ; CHECK-LABEL: name: test_implicit_def_v3s1 377 ; CHECK: [[DEF:%[0-9]+]]:_(<3 x s32>) = G_IMPLICIT_DEF 378 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[DEF]](<3 x s32>) 379 %0:_(<3 x s1>) = G_IMPLICIT_DEF 380 %1:_(<3 x s32>) = G_ANYEXT %0 381 $vgpr0_vgpr1_vgpr2 = COPY %1 382... 383 384--- 385name: test_implicit_def_v2s8 386body: | 387 bb.0: 388 389 ; CHECK-LABEL: name: test_implicit_def_v2s8 390 ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s32>) = G_IMPLICIT_DEF 391 ; CHECK: $vgpr0_vgpr1 = COPY [[DEF]](<2 x s32>) 392 %0:_(<2 x s8>) = G_IMPLICIT_DEF 393 %1:_(<2 x s32>) = G_ANYEXT %0 394 $vgpr0_vgpr1 = COPY %1 395... 396 397--- 398name: test_implicit_def_v3s8 399body: | 400 bb.0: 401 402 ; CHECK-LABEL: name: test_implicit_def_v3s8 403 ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF 404 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<4 x s32>) 405 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[UV2]](s32) 406 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>) 407 %0:_(<3 x s8>) = G_IMPLICIT_DEF 408 %1:_(<3 x s32>) = G_ANYEXT %0 409 $vgpr0_vgpr1_vgpr2 = COPY %1 410... 411 412--- 413name: test_implicit_def_v2s16 414body: | 415 bb.0: 416 417 ; CHECK-LABEL: name: test_implicit_def_v2s16 418 ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF 419 ; CHECK: $vgpr0 = COPY [[DEF]](<2 x s16>) 420 %0:_(<2 x s16>) = G_IMPLICIT_DEF 421 $vgpr0 = COPY %0 422... 423 424--- 425name: test_implicit_def_v3s16 426body: | 427 bb.0: 428 429 ; CHECK-LABEL: name: test_implicit_def_v3s16 430 ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF 431 ; CHECK: [[DEF1:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF 432 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[DEF]](<4 x s16>), [[DEF1]](<4 x s16>), [[DEF1]](<4 x s16>) 433 ; CHECK: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>), [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<12 x s16>) 434 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF1]], [[UV]](<3 x s16>), 0 435 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>) 436 %0:_(<3 x s16>) = G_IMPLICIT_DEF 437 %1:_(<4 x s16>) = G_IMPLICIT_DEF 438 %2:_(<4 x s16>) = G_INSERT %1, %0, 0 439 $vgpr0_vgpr1 = COPY %2 440... 441 442--- 443name: test_implicit_def_v4s16 444body: | 445 bb.0: 446 447 ; CHECK-LABEL: name: test_implicit_def_v4s16 448 ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF 449 ; CHECK: $vgpr0_vgpr1 = COPY [[DEF]](<4 x s16>) 450 %0:_(<4 x s16>) = G_IMPLICIT_DEF 451 $vgpr0_vgpr1 = COPY %0 452... 453 454--- 455name: test_implicit_def_v5s16 456body: | 457 bb.0: 458 459 ; CHECK-LABEL: name: test_implicit_def_v5s16 460 ; CHECK: [[DEF:%[0-9]+]]:_(<6 x s16>) = G_IMPLICIT_DEF 461 ; CHECK: [[DEF1:%[0-9]+]]:_(<6 x s16>) = G_IMPLICIT_DEF 462 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<30 x s16>) = G_CONCAT_VECTORS [[DEF]](<6 x s16>), [[DEF1]](<6 x s16>), [[DEF1]](<6 x s16>), [[DEF1]](<6 x s16>), [[DEF1]](<6 x s16>) 463 ; CHECK: [[UV:%[0-9]+]]:_(<5 x s16>), [[UV1:%[0-9]+]]:_(<5 x s16>), [[UV2:%[0-9]+]]:_(<5 x s16>), [[UV3:%[0-9]+]]:_(<5 x s16>), [[UV4:%[0-9]+]]:_(<5 x s16>), [[UV5:%[0-9]+]]:_(<5 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<30 x s16>) 464 ; CHECK: [[DEF2:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF 465 ; CHECK: [[INSERT:%[0-9]+]]:_(<8 x s16>) = G_INSERT [[DEF2]], [[UV]](<5 x s16>), 0 466 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<8 x s16>) 467 %0:_(<5 x s16>) = G_IMPLICIT_DEF 468 %1:_(<8 x s16>) = G_IMPLICIT_DEF 469 %2:_(<8 x s16>) = G_INSERT %1, %0, 0 470 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 471... 472 473--- 474name: test_implicit_def_v6s16 475body: | 476 bb.0: 477 478 ; CHECK-LABEL: name: test_implicit_def_v6s16 479 ; CHECK: [[DEF:%[0-9]+]]:_(<6 x s16>) = G_IMPLICIT_DEF 480 ; CHECK: [[DEF1:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF 481 ; CHECK: [[INSERT:%[0-9]+]]:_(<8 x s16>) = G_INSERT [[DEF1]], [[DEF]](<6 x s16>), 0 482 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<8 x s16>) 483 %0:_(<6 x s16>) = G_IMPLICIT_DEF 484 %1:_(<8 x s16>) = G_IMPLICIT_DEF 485 %2:_(<8 x s16>) = G_INSERT %1, %0, 0 486 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 487... 488 489--- 490name: test_implicit_def_v8s16 491body: | 492 bb.0: 493 494 ; CHECK-LABEL: name: test_implicit_def_v8s16 495 ; CHECK: [[DEF:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF 496 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DEF]](<8 x s16>) 497 %0:_(<8 x s16>) = G_IMPLICIT_DEF 498 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %0 499... 500 501--- 502name: test_implicit_def_v2s64 503body: | 504 bb.0: 505 506 ; CHECK-LABEL: name: test_implicit_def_v2s64 507 ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s64>) = G_IMPLICIT_DEF 508 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DEF]](<2 x s64>) 509 %0:_(<2 x s64>) = G_IMPLICIT_DEF 510 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %0 511... 512 513--- 514name: test_implicit_def_v4s8 515body: | 516 bb.0: 517 518 ; CHECK-LABEL: name: test_implicit_def_v4s8 519 ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF 520 ; CHECK: [[TRUNC:%[0-9]+]]:_(<4 x s8>) = G_TRUNC [[DEF]](<4 x s32>) 521 ; CHECK: $vgpr0 = COPY [[TRUNC]](<4 x s8>) 522 %0:_(<4 x s8>) = G_IMPLICIT_DEF 523 $vgpr0 = COPY %0 524... 525 526--- 527name: test_implicit_def_p0 528body: | 529 bb.0: 530 531 ; CHECK-LABEL: name: test_implicit_def_p0 532 ; CHECK: [[DEF:%[0-9]+]]:_(p0) = G_IMPLICIT_DEF 533 ; CHECK: $vgpr0_vgpr1 = COPY [[DEF]](p0) 534 %0:_(p0) = G_IMPLICIT_DEF 535 $vgpr0_vgpr1 = COPY %0 536... 537 538--- 539name: test_implicit_def_p1 540body: | 541 bb.0: 542 543 ; CHECK-LABEL: name: test_implicit_def_p1 544 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 545 ; CHECK: $vgpr0_vgpr1 = COPY [[DEF]](p1) 546 %0:_(p1) = G_IMPLICIT_DEF 547 $vgpr0_vgpr1 = COPY %0 548... 549 550--- 551name: test_implicit_def_p2 552body: | 553 bb.0: 554 555 ; CHECK-LABEL: name: test_implicit_def_p2 556 ; CHECK: [[DEF:%[0-9]+]]:_(p2) = G_IMPLICIT_DEF 557 ; CHECK: $vgpr0 = COPY [[DEF]](p2) 558 %0:_(p2) = G_IMPLICIT_DEF 559 $vgpr0 = COPY %0 560... 561 562--- 563name: test_implicit_def_p3 564body: | 565 bb.0: 566 567 ; CHECK-LABEL: name: test_implicit_def_p3 568 ; CHECK: [[DEF:%[0-9]+]]:_(p3) = G_IMPLICIT_DEF 569 ; CHECK: $vgpr0 = COPY [[DEF]](p3) 570 %0:_(p3) = G_IMPLICIT_DEF 571 $vgpr0 = COPY %0 572... 573 574--- 575name: test_implicit_def_p4 576body: | 577 bb.0: 578 579 ; CHECK-LABEL: name: test_implicit_def_p4 580 ; CHECK: [[DEF:%[0-9]+]]:_(p4) = G_IMPLICIT_DEF 581 ; CHECK: $vgpr0_vgpr1 = COPY [[DEF]](p4) 582 %0:_(p4) = G_IMPLICIT_DEF 583 $vgpr0_vgpr1 = COPY %0 584... 585 586--- 587name: test_implicit_def_p5 588body: | 589 bb.0: 590 591 ; CHECK-LABEL: name: test_implicit_def_p5 592 ; CHECK: [[DEF:%[0-9]+]]:_(p5) = G_IMPLICIT_DEF 593 ; CHECK: $vgpr0 = COPY [[DEF]](p5) 594 %0:_(p5) = G_IMPLICIT_DEF 595 $vgpr0 = COPY %0 596... 597 598--- 599name: test_implicit_def_p999 600body: | 601 bb.0: 602 603 ; CHECK-LABEL: name: test_implicit_def_p999 604 ; CHECK: [[DEF:%[0-9]+]]:_(p999) = G_IMPLICIT_DEF 605 ; CHECK: $vgpr0_vgpr1 = COPY [[DEF]](p999) 606 %0:_(p999) = G_IMPLICIT_DEF 607 $vgpr0_vgpr1 = COPY %0 608 609... 610 611--- 612name: test_implicit_def_v2s1024 613body: | 614 bb.0: 615 616 ; CHECK-LABEL: name: test_implicit_def_v2s1024 617 ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s1024>) = G_IMPLICIT_DEF 618 ; CHECK: [[UV:%[0-9]+]]:_(s1024), [[UV1:%[0-9]+]]:_(s1024) = G_UNMERGE_VALUES [[DEF]](<2 x s1024>) 619 ; CHECK: S_ENDPGM 0, implicit [[UV]](s1024), implicit [[UV1]](s1024) 620 %0:_(<2 x s1024>) = G_IMPLICIT_DEF 621 %1:_(s1024), %2:_(s1024) = G_UNMERGE_VALUES %0 622 S_ENDPGM 0, implicit %1, implicit %2 623... 624 625--- 626 627name: test_implicit_def_v3s1024 628body: | 629 bb.0: 630 631 ; CHECK-LABEL: name: test_implicit_def_v3s1024 632 ; CHECK: [[DEF:%[0-9]+]]:_(<3 x s1024>) = G_IMPLICIT_DEF 633 ; CHECK: [[UV:%[0-9]+]]:_(s1024), [[UV1:%[0-9]+]]:_(s1024), [[UV2:%[0-9]+]]:_(s1024) = G_UNMERGE_VALUES [[DEF]](<3 x s1024>) 634 ; CHECK: S_ENDPGM 0, implicit [[UV]](s1024), implicit [[UV1]](s1024), implicit [[UV2]](s1024) 635 %0:_(<3 x s1024>) = G_IMPLICIT_DEF 636 %1:_(s1024), %2:_(s1024), %3:_(s1024) = G_UNMERGE_VALUES %0 637 S_ENDPGM 0, implicit %1, implicit %2, implicit %3 638... 639