1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=instruction-select %s -o - | FileCheck -check-prefix=GFX6 %s 3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=instruction-select %s -o - | FileCheck -check-prefix=GFX6 %s 4# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select %s -o - | FileCheck -check-prefix=GFX10 %s 5# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select %s -o - | FileCheck -check-prefix=GFX10 %s 6 7--- 8name: test_freeze_s1_vgpr_to_vgpr 9alignment: 1 10legalized: true 11regBankSelected: true 12 13body: | 14 bb.0: 15 liveins: $vgpr0 16 ; GFX6-LABEL: name: test_freeze_s1_vgpr_to_vgpr 17 ; GFX6: liveins: $vgpr0 18 ; GFX6-NEXT: {{ $}} 19 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 20 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]] 21 ; GFX10-LABEL: name: test_freeze_s1_vgpr_to_vgpr 22 ; GFX10: liveins: $vgpr0 23 ; GFX10-NEXT: {{ $}} 24 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 25 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]] 26 %0:vgpr(s32) = COPY $vgpr0 27 %1:vgpr(s1) = G_TRUNC %0(s32) 28 %2:vgpr(s1) = G_FREEZE %1 29 %3:vgpr(s32) = G_ANYEXT %2(s1) 30 $vgpr0 = COPY %3(s32) 31 32... 33 34--- 35name: test_freeze_s1_vgpr_to_agpr 36alignment: 1 37legalized: true 38regBankSelected: true 39 40body: | 41 bb.0: 42 liveins: $vgpr0 43 ; GFX6-LABEL: name: test_freeze_s1_vgpr_to_agpr 44 ; GFX6: liveins: $vgpr0 45 ; GFX6-NEXT: {{ $}} 46 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 47 ; GFX6-NEXT: $agpr0 = COPY [[COPY]] 48 ; GFX10-LABEL: name: test_freeze_s1_vgpr_to_agpr 49 ; GFX10: liveins: $vgpr0 50 ; GFX10-NEXT: {{ $}} 51 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 52 ; GFX10-NEXT: $agpr0 = COPY [[COPY]] 53 %0:vgpr(s32) = COPY $vgpr0 54 %1:vgpr(s1) = G_TRUNC %0(s32) 55 %2:vgpr(s1) = G_FREEZE %1 56 %3:vgpr(s32) = G_ANYEXT %2(s1) 57 $agpr0 = COPY %3(s32) 58 59... 60 61--- 62name: test_freeze_s1_vcc 63alignment: 1 64legalized: true 65regBankSelected: true 66 67body: | 68 bb.0: 69 liveins: $vgpr0, $vgpr1 70 ; GFX6-LABEL: name: test_freeze_s1_vcc 71 ; GFX6: liveins: $vgpr0, $vgpr1 72 ; GFX6-NEXT: {{ $}} 73 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 74 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 75 ; GFX6-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64 = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec 76 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:sreg_64_xexec = COPY [[V_CMP_EQ_U32_e64_]] 77 ; GFX6-NEXT: S_ENDPGM 0, implicit [[COPY2]] 78 ; GFX10-LABEL: name: test_freeze_s1_vcc 79 ; GFX10: liveins: $vgpr0, $vgpr1 80 ; GFX10-NEXT: {{ $}} 81 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 82 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 83 ; GFX10-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_32 = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec 84 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:sreg_32_xm0_xexec = COPY [[V_CMP_EQ_U32_e64_]] 85 ; GFX10-NEXT: S_ENDPGM 0, implicit [[COPY2]] 86 %0:vgpr(s32) = COPY $vgpr0 87 %1:vgpr(s32) = COPY $vgpr1 88 %2:vcc(s1) = G_ICMP intpred(eq), %0(s32), %1 89 %3:vcc(s1) = G_FREEZE %2 90 S_ENDPGM 0, implicit %3(s1) 91 92... 93 94--- 95name: test_freeze_s16_vgpr_to_vgpr 96alignment: 1 97legalized: true 98regBankSelected: true 99 100body: | 101 bb.0: 102 liveins: $vgpr0 103 ; GFX6-LABEL: name: test_freeze_s16_vgpr_to_vgpr 104 ; GFX6: liveins: $vgpr0 105 ; GFX6-NEXT: {{ $}} 106 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 107 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]] 108 ; GFX10-LABEL: name: test_freeze_s16_vgpr_to_vgpr 109 ; GFX10: liveins: $vgpr0 110 ; GFX10-NEXT: {{ $}} 111 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 112 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]] 113 %0:vgpr(s32) = COPY $vgpr0 114 %1:vgpr(s16) = G_TRUNC %0(s32) 115 %2:vgpr(s16) = G_FREEZE %1 116 %3:vgpr(s32) = G_ANYEXT %2(s16) 117 $vgpr0 = COPY %3(s32) 118 119... 120 121--- 122name: test_freeze_s32_vgpr_to_vgpr 123alignment: 1 124legalized: true 125regBankSelected: true 126 127body: | 128 bb.0: 129 liveins: $vgpr0 130 ; GFX6-LABEL: name: test_freeze_s32_vgpr_to_vgpr 131 ; GFX6: liveins: $vgpr0 132 ; GFX6-NEXT: {{ $}} 133 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 134 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]] 135 ; GFX10-LABEL: name: test_freeze_s32_vgpr_to_vgpr 136 ; GFX10: liveins: $vgpr0 137 ; GFX10-NEXT: {{ $}} 138 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 139 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]] 140 %0:vgpr(s32) = COPY $vgpr0 141 %1:vgpr(s32) = G_FREEZE %0 142 $vgpr0 = COPY %1(s32) 143 144... 145 146--- 147name: test_freeze_s32_sgpr_to_sgpr 148alignment: 1 149legalized: true 150regBankSelected: true 151 152body: | 153 bb.0: 154 liveins: $sgpr0 155 ; GFX6-LABEL: name: test_freeze_s32_sgpr_to_sgpr 156 ; GFX6: liveins: $sgpr0 157 ; GFX6-NEXT: {{ $}} 158 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 159 ; GFX6-NEXT: $sgpr0 = COPY [[COPY]] 160 ; GFX10-LABEL: name: test_freeze_s32_sgpr_to_sgpr 161 ; GFX10: liveins: $sgpr0 162 ; GFX10-NEXT: {{ $}} 163 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 164 ; GFX10-NEXT: $sgpr0 = COPY [[COPY]] 165 %0:sgpr(s32) = COPY $sgpr0 166 %1:sgpr(s32) = G_FREEZE %0 167 $sgpr0 = COPY %1(s32) 168 169... 170 171--- 172name: test_freeze_s32_sgpr_to_vgpr 173alignment: 1 174legalized: true 175regBankSelected: true 176 177body: | 178 bb.0: 179 liveins: $sgpr0 180 ; GFX6-LABEL: name: test_freeze_s32_sgpr_to_vgpr 181 ; GFX6: liveins: $sgpr0 182 ; GFX6-NEXT: {{ $}} 183 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 184 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]] 185 ; GFX10-LABEL: name: test_freeze_s32_sgpr_to_vgpr 186 ; GFX10: liveins: $sgpr0 187 ; GFX10-NEXT: {{ $}} 188 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 189 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]] 190 %0:sgpr(s32) = COPY $sgpr0 191 %1:sgpr(s32) = G_FREEZE %0 192 $vgpr0 = COPY %1(s32) 193 194... 195 196--- 197name: test_freeze_s32_vgpr_to_agpr 198alignment: 1 199legalized: true 200regBankSelected: true 201 202body: | 203 bb.0: 204 liveins: $vgpr0 205 ; GFX6-LABEL: name: test_freeze_s32_vgpr_to_agpr 206 ; GFX6: liveins: $vgpr0 207 ; GFX6-NEXT: {{ $}} 208 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 209 ; GFX6-NEXT: $agpr0 = COPY [[COPY]] 210 ; GFX10-LABEL: name: test_freeze_s32_vgpr_to_agpr 211 ; GFX10: liveins: $vgpr0 212 ; GFX10-NEXT: {{ $}} 213 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 214 ; GFX10-NEXT: $agpr0 = COPY [[COPY]] 215 %0:vgpr(s32) = COPY $vgpr0 216 %1:vgpr(s32) = G_FREEZE %0 217 $agpr0 = COPY %1(s32) 218 219... 220 221--- 222name: test_freeze_s32_sgpr_to_agpr 223alignment: 1 224legalized: true 225regBankSelected: true 226 227body: | 228 bb.0: 229 liveins: $sgpr0 230 ; GFX6-LABEL: name: test_freeze_s32_sgpr_to_agpr 231 ; GFX6: liveins: $sgpr0 232 ; GFX6-NEXT: {{ $}} 233 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 234 ; GFX6-NEXT: $agpr0 = COPY [[COPY]] 235 ; GFX10-LABEL: name: test_freeze_s32_sgpr_to_agpr 236 ; GFX10: liveins: $sgpr0 237 ; GFX10-NEXT: {{ $}} 238 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 239 ; GFX10-NEXT: $agpr0 = COPY [[COPY]] 240 %0:sgpr(s32) = COPY $sgpr0 241 %1:sgpr(s32) = G_FREEZE %0 242 $agpr0 = COPY %1(s32) 243 244... 245 246--- 247name: test_freeze_s32_agpr_to_vgpr 248alignment: 1 249legalized: true 250regBankSelected: true 251 252body: | 253 bb.0: 254 liveins: $agpr0 255 ; GFX6-LABEL: name: test_freeze_s32_agpr_to_vgpr 256 ; GFX6: liveins: $agpr0 257 ; GFX6-NEXT: {{ $}} 258 ; GFX6-NEXT: [[COPY:%[0-9]+]]:agpr_32 = COPY $agpr0 259 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]] 260 ; GFX10-LABEL: name: test_freeze_s32_agpr_to_vgpr 261 ; GFX10: liveins: $agpr0 262 ; GFX10-NEXT: {{ $}} 263 ; GFX10-NEXT: [[COPY:%[0-9]+]]:agpr_32 = COPY $agpr0 264 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]] 265 %0:agpr(s32) = COPY $agpr0 266 %1:agpr(s32) = G_FREEZE %0 267 $vgpr0 = COPY %1(s32) 268 269... 270 271--- 272name: test_freeze_s32_agpr_to_agpr 273alignment: 1 274legalized: true 275regBankSelected: true 276 277body: | 278 bb.0: 279 liveins: $agpr0 280 ; GFX6-LABEL: name: test_freeze_s32_agpr_to_agpr 281 ; GFX6: liveins: $agpr0 282 ; GFX6-NEXT: {{ $}} 283 ; GFX6-NEXT: [[COPY:%[0-9]+]]:agpr_32 = COPY $agpr0 284 ; GFX6-NEXT: $agpr0 = COPY [[COPY]] 285 ; GFX10-LABEL: name: test_freeze_s32_agpr_to_agpr 286 ; GFX10: liveins: $agpr0 287 ; GFX10-NEXT: {{ $}} 288 ; GFX10-NEXT: [[COPY:%[0-9]+]]:agpr_32 = COPY $agpr0 289 ; GFX10-NEXT: $agpr0 = COPY [[COPY]] 290 %0:agpr(s32) = COPY $agpr0 291 %1:agpr(s32) = G_FREEZE %0 292 $agpr0 = COPY %1(s32) 293 294... 295 296--- 297name: test_freeze_s64 298alignment: 1 299legalized: true 300regBankSelected: true 301 302body: | 303 bb.0: 304 liveins: $vgpr0_vgpr1 305 ; GFX6-LABEL: name: test_freeze_s64 306 ; GFX6: liveins: $vgpr0_vgpr1 307 ; GFX6-NEXT: {{ $}} 308 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 309 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[COPY]] 310 ; GFX10-LABEL: name: test_freeze_s64 311 ; GFX10: liveins: $vgpr0_vgpr1 312 ; GFX10-NEXT: {{ $}} 313 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 314 ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[COPY]] 315 %0:vgpr(s64) = COPY $vgpr0_vgpr1 316 %1:vgpr(s64) = G_FREEZE %0 317 $vgpr0_vgpr1 = COPY %1(s64) 318 319... 320 321--- 322name: test_freeze_s128 323alignment: 1 324legalized: true 325regBankSelected: true 326 327body: | 328 bb.0: 329 liveins: $vgpr0_vgpr1_vgpr2_vgpr3 330 ; GFX6-LABEL: name: test_freeze_s128 331 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 332 ; GFX6-NEXT: {{ $}} 333 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3 334 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[COPY]] 335 ; GFX10-LABEL: name: test_freeze_s128 336 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 337 ; GFX10-NEXT: {{ $}} 338 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3 339 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[COPY]] 340 %0:vgpr(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 341 %1:vgpr(s128) = G_FREEZE %0 342 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(s128) 343 344... 345 346--- 347name: test_freeze_256 348alignment: 1 349legalized: true 350regBankSelected: true 351 352body: | 353 bb.0: 354 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 355 ; GFX6-LABEL: name: test_freeze_256 356 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 357 ; GFX6-NEXT: {{ $}} 358 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 359 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[COPY]] 360 ; GFX10-LABEL: name: test_freeze_256 361 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 362 ; GFX10-NEXT: {{ $}} 363 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 364 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[COPY]] 365 %0:vgpr(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 366 %1:vgpr(s256) = G_FREEZE %0 367 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1(s256) 368 369... 370 371--- 372name: test_freeze_s512 373alignment: 1 374legalized: true 375regBankSelected: true 376 377body: | 378 bb.0: 379 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 380 ; GFX6-LABEL: name: test_freeze_s512 381 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 382 ; GFX6-NEXT: {{ $}} 383 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_512 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 384 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[COPY]] 385 ; GFX10-LABEL: name: test_freeze_s512 386 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 387 ; GFX10-NEXT: {{ $}} 388 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_512 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 389 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[COPY]] 390 %0:vgpr(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 391 %1:vgpr(s512) = G_FREEZE %0 392 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %1(s512) 393 394... 395 396--- 397name: test_freeze_v2s32 398alignment: 1 399legalized: true 400regBankSelected: true 401 402body: | 403 bb.0: 404 liveins: $vgpr0_vgpr1 405 ; GFX6-LABEL: name: test_freeze_v2s32 406 ; GFX6: liveins: $vgpr0_vgpr1 407 ; GFX6-NEXT: {{ $}} 408 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 409 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[COPY]] 410 ; GFX10-LABEL: name: test_freeze_v2s32 411 ; GFX10: liveins: $vgpr0_vgpr1 412 ; GFX10-NEXT: {{ $}} 413 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 414 ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[COPY]] 415 %0:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1 416 %1:vgpr(<2 x s32>) = G_FREEZE %0 417 $vgpr0_vgpr1 = COPY %1(<2 x s32>) 418 419... 420 421--- 422name: test_freeze_v3s32 423alignment: 1 424legalized: true 425regBankSelected: true 426 427body: | 428 bb.0: 429 liveins: $vgpr0_vgpr1_vgpr2 430 ; GFX6-LABEL: name: test_freeze_v3s32 431 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2 432 ; GFX6-NEXT: {{ $}} 433 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr2 434 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[COPY]] 435 ; GFX10-LABEL: name: test_freeze_v3s32 436 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2 437 ; GFX10-NEXT: {{ $}} 438 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr2 439 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[COPY]] 440 %0:vgpr(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 441 %1:vgpr(<3 x s32>) = G_FREEZE %0 442 $vgpr0_vgpr1_vgpr2 = COPY %1(<3 x s32>) 443 444... 445 446--- 447name: test_freeze_v4s32 448alignment: 1 449legalized: true 450regBankSelected: true 451 452body: | 453 bb.0: 454 liveins: $vgpr0_vgpr1_vgpr2_vgpr3 455 ; GFX6-LABEL: name: test_freeze_v4s32 456 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 457 ; GFX6-NEXT: {{ $}} 458 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3 459 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[COPY]] 460 ; GFX10-LABEL: name: test_freeze_v4s32 461 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 462 ; GFX10-NEXT: {{ $}} 463 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3 464 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[COPY]] 465 %0:vgpr(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 466 %1:vgpr(<4 x s32>) = G_FREEZE %0 467 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(<4 x s32>) 468 469... 470 471--- 472name: test_freeze_v5s32 473alignment: 1 474legalized: true 475regBankSelected: true 476 477body: | 478 bb.0: 479 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 480 ; GFX6-LABEL: name: test_freeze_v5s32 481 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 482 ; GFX6-NEXT: {{ $}} 483 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_160 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 484 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY [[COPY]] 485 ; GFX10-LABEL: name: test_freeze_v5s32 486 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 487 ; GFX10-NEXT: {{ $}} 488 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_160 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 489 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY [[COPY]] 490 %0:vgpr(<5 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 491 %1:vgpr(<5 x s32>) = G_FREEZE %0 492 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY %1(<5 x s32>) 493 494... 495 496--- 497name: test_freeze_v8s32 498alignment: 1 499legalized: true 500regBankSelected: true 501 502body: | 503 bb.0: 504 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 505 ; GFX6-LABEL: name: test_freeze_v8s32 506 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 507 ; GFX6-NEXT: {{ $}} 508 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 509 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[COPY]] 510 ; GFX10-LABEL: name: test_freeze_v8s32 511 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 512 ; GFX10-NEXT: {{ $}} 513 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 514 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[COPY]] 515 %0:vgpr(<8 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 516 %1:vgpr(<8 x s32>) = G_FREEZE %0 517 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1(<8 x s32>) 518 519... 520 521--- 522name: test_freeze_v16s32 523alignment: 1 524legalized: true 525regBankSelected: true 526 527body: | 528 bb.0: 529 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 530 ; GFX6-LABEL: name: test_freeze_v16s32 531 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 532 ; GFX6-NEXT: {{ $}} 533 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_512 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 534 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[COPY]] 535 ; GFX10-LABEL: name: test_freeze_v16s32 536 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 537 ; GFX10-NEXT: {{ $}} 538 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_512 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 539 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[COPY]] 540 %0:vgpr(<16 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 541 %1:vgpr(<16 x s32>) = G_FREEZE %0 542 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %1(<16 x s32>) 543 544... 545 546--- 547name: test_freeze_v2s16 548alignment: 1 549legalized: true 550regBankSelected: true 551 552body: | 553 bb.0: 554 liveins: $vgpr0 555 ; GFX6-LABEL: name: test_freeze_v2s16 556 ; GFX6: liveins: $vgpr0 557 ; GFX6-NEXT: {{ $}} 558 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 559 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]] 560 ; GFX10-LABEL: name: test_freeze_v2s16 561 ; GFX10: liveins: $vgpr0 562 ; GFX10-NEXT: {{ $}} 563 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 564 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]] 565 %0:vgpr(<2 x s16>) = COPY $vgpr0 566 %1:vgpr(<2 x s16>) = G_FREEZE %0 567 $vgpr0 = COPY %1(<2 x s16>) 568 569... 570 571--- 572name: test_freeze_v4s16 573alignment: 1 574legalized: true 575regBankSelected: true 576 577body: | 578 bb.0: 579 liveins: $vgpr0_vgpr1 580 ; GFX6-LABEL: name: test_freeze_v4s16 581 ; GFX6: liveins: $vgpr0_vgpr1 582 ; GFX6-NEXT: {{ $}} 583 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 584 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[COPY]] 585 ; GFX10-LABEL: name: test_freeze_v4s16 586 ; GFX10: liveins: $vgpr0_vgpr1 587 ; GFX10-NEXT: {{ $}} 588 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 589 ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[COPY]] 590 %0:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1 591 %1:vgpr(<4 x s16>) = G_FREEZE %0 592 $vgpr0_vgpr1 = COPY %1(<4 x s16>) 593 594... 595 596--- 597name: test_freeze_v6s16 598alignment: 1 599legalized: true 600regBankSelected: true 601 602body: | 603 bb.0: 604 liveins: $vgpr0_vgpr1_vgpr2 605 ; GFX6-LABEL: name: test_freeze_v6s16 606 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2 607 ; GFX6-NEXT: {{ $}} 608 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr2 609 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[COPY]] 610 ; GFX10-LABEL: name: test_freeze_v6s16 611 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2 612 ; GFX10-NEXT: {{ $}} 613 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr2 614 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[COPY]] 615 %0:vgpr(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2 616 %1:vgpr(<6 x s16>) = G_FREEZE %0 617 $vgpr0_vgpr1_vgpr2 = COPY %1(<6 x s16>) 618 619... 620 621--- 622name: test_freeze_v8s16 623alignment: 1 624legalized: true 625regBankSelected: true 626 627body: | 628 bb.0: 629 liveins: $vgpr0_vgpr1_vgpr2_vgpr3 630 ; GFX6-LABEL: name: test_freeze_v8s16 631 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 632 ; GFX6-NEXT: {{ $}} 633 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3 634 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[COPY]] 635 ; GFX10-LABEL: name: test_freeze_v8s16 636 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 637 ; GFX10-NEXT: {{ $}} 638 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3 639 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[COPY]] 640 %0:vgpr(<8 x s16>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 641 %1:vgpr(<8 x s16>) = G_FREEZE %0 642 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(<8 x s16>) 643 644... 645 646--- 647name: test_freeze_v2s64 648alignment: 1 649legalized: true 650regBankSelected: true 651 652body: | 653 bb.0: 654 liveins: $vgpr0_vgpr1_vgpr2_vgpr3 655 ; GFX6-LABEL: name: test_freeze_v2s64 656 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 657 ; GFX6-NEXT: {{ $}} 658 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3 659 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[COPY]] 660 ; GFX10-LABEL: name: test_freeze_v2s64 661 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 662 ; GFX10-NEXT: {{ $}} 663 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3 664 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[COPY]] 665 %0:vgpr(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 666 %1:vgpr(<2 x s64>) = G_FREEZE %0 667 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(<2 x s64>) 668 669... 670 671--- 672name: test_freeze_p0 673alignment: 1 674legalized: true 675regBankSelected: true 676 677body: | 678 bb.0: 679 liveins: $vgpr0_vgpr1 680 ; GFX6-LABEL: name: test_freeze_p0 681 ; GFX6: liveins: $vgpr0_vgpr1 682 ; GFX6-NEXT: {{ $}} 683 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 684 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[COPY]] 685 ; GFX10-LABEL: name: test_freeze_p0 686 ; GFX10: liveins: $vgpr0_vgpr1 687 ; GFX10-NEXT: {{ $}} 688 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 689 ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[COPY]] 690 %0:vgpr(p0) = COPY $vgpr0_vgpr1 691 %1:vgpr(p0) = G_FREEZE %0 692 $vgpr0_vgpr1 = COPY %1(p0) 693 694... 695 696--- 697name: test_freeze_p1 698alignment: 1 699legalized: true 700regBankSelected: true 701 702body: | 703 bb.0: 704 liveins: $vgpr0_vgpr1 705 ; GFX6-LABEL: name: test_freeze_p1 706 ; GFX6: liveins: $vgpr0_vgpr1 707 ; GFX6-NEXT: {{ $}} 708 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 709 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[COPY]] 710 ; GFX10-LABEL: name: test_freeze_p1 711 ; GFX10: liveins: $vgpr0_vgpr1 712 ; GFX10-NEXT: {{ $}} 713 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 714 ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[COPY]] 715 %0:vgpr(p1) = COPY $vgpr0_vgpr1 716 %1:vgpr(p1) = G_FREEZE %0 717 $vgpr0_vgpr1 = COPY %1(p1) 718 719... 720 721--- 722name: test_freeze_p2 723alignment: 1 724legalized: true 725regBankSelected: true 726 727body: | 728 bb.0: 729 liveins: $vgpr0 730 ; GFX6-LABEL: name: test_freeze_p2 731 ; GFX6: liveins: $vgpr0 732 ; GFX6-NEXT: {{ $}} 733 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 734 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]] 735 ; GFX10-LABEL: name: test_freeze_p2 736 ; GFX10: liveins: $vgpr0 737 ; GFX10-NEXT: {{ $}} 738 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 739 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]] 740 %0:vgpr(p2) = COPY $vgpr0 741 %1:vgpr(p2) = G_FREEZE %0 742 $vgpr0 = COPY %1(p2) 743 744... 745 746--- 747name: test_freeze_p3 748alignment: 1 749legalized: true 750regBankSelected: true 751 752body: | 753 bb.0: 754 liveins: $vgpr0 755 ; GFX6-LABEL: name: test_freeze_p3 756 ; GFX6: liveins: $vgpr0 757 ; GFX6-NEXT: {{ $}} 758 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 759 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]] 760 ; GFX10-LABEL: name: test_freeze_p3 761 ; GFX10: liveins: $vgpr0 762 ; GFX10-NEXT: {{ $}} 763 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 764 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]] 765 %0:vgpr(p3) = COPY $vgpr0 766 %1:vgpr(p3) = G_FREEZE %0 767 $vgpr0 = COPY %1(p3) 768 769... 770 771--- 772name: test_freeze_p4 773alignment: 1 774legalized: true 775regBankSelected: true 776 777body: | 778 bb.0: 779 liveins: $vgpr0_vgpr1 780 ; GFX6-LABEL: name: test_freeze_p4 781 ; GFX6: liveins: $vgpr0_vgpr1 782 ; GFX6-NEXT: {{ $}} 783 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 784 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[COPY]] 785 ; GFX10-LABEL: name: test_freeze_p4 786 ; GFX10: liveins: $vgpr0_vgpr1 787 ; GFX10-NEXT: {{ $}} 788 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 789 ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[COPY]] 790 %0:vgpr(p4) = COPY $vgpr0_vgpr1 791 %1:vgpr(p4) = G_FREEZE %0 792 $vgpr0_vgpr1 = COPY %1(p4) 793 794... 795 796--- 797name: test_freeze_p5 798alignment: 1 799legalized: true 800regBankSelected: true 801 802body: | 803 bb.0: 804 liveins: $vgpr0 805 ; GFX6-LABEL: name: test_freeze_p5 806 ; GFX6: liveins: $vgpr0 807 ; GFX6-NEXT: {{ $}} 808 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 809 ; GFX6-NEXT: $vgpr0 = COPY [[COPY]] 810 ; GFX10-LABEL: name: test_freeze_p5 811 ; GFX10: liveins: $vgpr0 812 ; GFX10-NEXT: {{ $}} 813 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 814 ; GFX10-NEXT: $vgpr0 = COPY [[COPY]] 815 %0:vgpr(p5) = COPY $vgpr0 816 %1:vgpr(p5) = G_FREEZE %0 817 $vgpr0 = COPY %1(p5) 818 819... 820 821--- 822name: test_freeze_p999 823alignment: 1 824legalized: true 825regBankSelected: true 826 827body: | 828 bb.0: 829 liveins: $vgpr0_vgpr1 830 ; GFX6-LABEL: name: test_freeze_p999 831 ; GFX6: liveins: $vgpr0_vgpr1 832 ; GFX6-NEXT: {{ $}} 833 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 834 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[COPY]] 835 ; GFX10-LABEL: name: test_freeze_p999 836 ; GFX10: liveins: $vgpr0_vgpr1 837 ; GFX10-NEXT: {{ $}} 838 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 839 ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[COPY]] 840 %0:vgpr(p999) = COPY $vgpr0_vgpr1 841 %1:vgpr(p999) = G_FREEZE %0 842 $vgpr0_vgpr1 = COPY %1(p999) 843 844... 845