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