750 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx908 -run-pass=regbankselect -regbankselect-fast -verify-machineinstrs %s -o - | FileCheck %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx908 -run-pass=regbankselect -regbankselect-greedy -verify-machineinstrs %s -o - | FileCheck %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=regbankselect -regbankselect-fast -verify-machineinstrs %s -o - | FileCheck --check-prefix=WAVE32 %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=regbankselect -regbankselect-greedy -verify-machineinstrs %s -o - | FileCheck --check-prefix=WAVE32 %s6 7---8name: copy_s32_vgpr_to_vgpr9legalized: true10 11body: |12 bb.0:13 liveins: $vgpr014 ; CHECK-LABEL: name: copy_s32_vgpr_to_vgpr15 ; CHECK: liveins: $vgpr016 ; CHECK-NEXT: {{ $}}17 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr018 ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)19 ;20 ; WAVE32-LABEL: name: copy_s32_vgpr_to_vgpr21 ; WAVE32: liveins: $vgpr022 ; WAVE32-NEXT: {{ $}}23 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr024 ; WAVE32-NEXT: $vgpr0 = COPY [[COPY]](s32)25 %0:_(s32) = COPY $vgpr026 $vgpr0 = COPY %027 28...29 30---31name: copy_s32_sgpr_to_sgpr32legalized: true33 34body: |35 bb.0:36 liveins: $sgpr037 ; CHECK-LABEL: name: copy_s32_sgpr_to_sgpr38 ; CHECK: liveins: $sgpr039 ; CHECK-NEXT: {{ $}}40 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr041 ; CHECK-NEXT: $sgpr0 = COPY [[COPY]](s32)42 ;43 ; WAVE32-LABEL: name: copy_s32_sgpr_to_sgpr44 ; WAVE32: liveins: $sgpr045 ; WAVE32-NEXT: {{ $}}46 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr047 ; WAVE32-NEXT: $sgpr0 = COPY [[COPY]](s32)48 %0:_(s32) = COPY $sgpr049 $sgpr0 = COPY %050 51...52 53---54name: copy_s32_sgpr_to_vgpr55legalized: true56 57body: |58 bb.0:59 liveins: $sgpr060 ; CHECK-LABEL: name: copy_s32_sgpr_to_vgpr61 ; CHECK: liveins: $sgpr062 ; CHECK-NEXT: {{ $}}63 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr064 ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)65 ;66 ; WAVE32-LABEL: name: copy_s32_sgpr_to_vgpr67 ; WAVE32: liveins: $sgpr068 ; WAVE32-NEXT: {{ $}}69 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr070 ; WAVE32-NEXT: $vgpr0 = COPY [[COPY]](s32)71 %0:_(s32) = COPY $sgpr072 $vgpr0 = COPY %073 74...75 76---77name: copy_s32_vgpr_to_agpr78legalized: true79 80body: |81 bb.0:82 liveins: $vgpr083 ; CHECK-LABEL: name: copy_s32_vgpr_to_agpr84 ; CHECK: liveins: $vgpr085 ; CHECK-NEXT: {{ $}}86 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr087 ; CHECK-NEXT: $agpr0 = COPY [[COPY]](s32)88 ;89 ; WAVE32-LABEL: name: copy_s32_vgpr_to_agpr90 ; WAVE32: liveins: $vgpr091 ; WAVE32-NEXT: {{ $}}92 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr093 ; WAVE32-NEXT: $agpr0 = COPY [[COPY]](s32)94 %0:_(s32) = COPY $vgpr095 $agpr0 = COPY %096 97...98 99---100name: copy_s32_sgpr_to_agpr101legalized: true102 103body: |104 bb.0:105 liveins: $sgpr0106 ; CHECK-LABEL: name: copy_s32_sgpr_to_agpr107 ; CHECK: liveins: $sgpr0108 ; CHECK-NEXT: {{ $}}109 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0110 ; CHECK-NEXT: $agpr0 = COPY [[COPY]](s32)111 ;112 ; WAVE32-LABEL: name: copy_s32_sgpr_to_agpr113 ; WAVE32: liveins: $sgpr0114 ; WAVE32-NEXT: {{ $}}115 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0116 ; WAVE32-NEXT: $agpr0 = COPY [[COPY]](s32)117 %0:_(s32) = COPY $sgpr0118 $agpr0 = COPY %0119 120...121 122---123name: copy_s32_agpr_to_vgpr124legalized: true125 126body: |127 bb.0:128 liveins: $agpr0129 ; CHECK-LABEL: name: copy_s32_agpr_to_vgpr130 ; CHECK: liveins: $agpr0131 ; CHECK-NEXT: {{ $}}132 ; CHECK-NEXT: [[COPY:%[0-9]+]]:agpr(s32) = COPY $agpr0133 ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)134 ;135 ; WAVE32-LABEL: name: copy_s32_agpr_to_vgpr136 ; WAVE32: liveins: $agpr0137 ; WAVE32-NEXT: {{ $}}138 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:agpr(s32) = COPY $agpr0139 ; WAVE32-NEXT: $vgpr0 = COPY [[COPY]](s32)140 %0:_(s32) = COPY $agpr0141 $vgpr0 = COPY %0142 143...144 145---146name: copy_s32_agpr_to_agpr147legalized: true148 149body: |150 bb.0:151 liveins: $agpr0152 ; CHECK-LABEL: name: copy_s32_agpr_to_agpr153 ; CHECK: liveins: $agpr0154 ; CHECK-NEXT: {{ $}}155 ; CHECK-NEXT: [[COPY:%[0-9]+]]:agpr(s32) = COPY $agpr0156 ; CHECK-NEXT: $agpr0 = COPY [[COPY]](s32)157 ;158 ; WAVE32-LABEL: name: copy_s32_agpr_to_agpr159 ; WAVE32: liveins: $agpr0160 ; WAVE32-NEXT: {{ $}}161 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:agpr(s32) = COPY $agpr0162 ; WAVE32-NEXT: $agpr0 = COPY [[COPY]](s32)163 %0:_(s32) = COPY $agpr0164 $agpr0 = COPY %0165 166...167 168---169name: copy_s1_sgpr_to_vcc_preassigned170legalized: true171 172body: |173 bb.0:174 liveins: $sgpr0175 ; CHECK-LABEL: name: copy_s1_sgpr_to_vcc_preassigned176 ; CHECK: liveins: $sgpr0177 ; CHECK-NEXT: {{ $}}178 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0179 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)180 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)181 ; CHECK-NEXT: S_ENDPGM 0, implicit [[COPY1]](s1)182 ;183 ; WAVE32-LABEL: name: copy_s1_sgpr_to_vcc_preassigned184 ; WAVE32: liveins: $sgpr0185 ; WAVE32-NEXT: {{ $}}186 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0187 ; WAVE32-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)188 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)189 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY1]](s1)190 %0:sgpr(s32) = COPY $sgpr0191 %1:sgpr(s1) = G_TRUNC %0192 %2:vcc(s1) = COPY %1193 S_ENDPGM 0, implicit %2194...195 196---197name: copy_s1_vgpr_to_vcc_preassigned198legalized: true199 200body: |201 bb.0:202 liveins: $vgpr0203 ; CHECK-LABEL: name: copy_s1_vgpr_to_vcc_preassigned204 ; CHECK: liveins: $vgpr0205 ; CHECK-NEXT: {{ $}}206 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0207 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)208 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)209 ; CHECK-NEXT: S_ENDPGM 0, implicit [[COPY1]](s1)210 ;211 ; WAVE32-LABEL: name: copy_s1_vgpr_to_vcc_preassigned212 ; WAVE32: liveins: $vgpr0213 ; WAVE32-NEXT: {{ $}}214 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0215 ; WAVE32-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)216 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)217 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY1]](s1)218 %0:vgpr(s32) = COPY $vgpr0219 %1:vgpr(s1) = G_TRUNC %0220 %2:vcc(s1) = COPY %1221 S_ENDPGM 0, implicit %2222...223 224---225name: copy_s1_sgpr_to_vcc226legalized: true227 228body: |229 bb.0:230 liveins: $sgpr0231 ; CHECK-LABEL: name: copy_s1_sgpr_to_vcc232 ; CHECK: liveins: $sgpr0233 ; CHECK-NEXT: {{ $}}234 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0235 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)236 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)237 ; CHECK-NEXT: S_ENDPGM 0, implicit [[COPY1]](s1)238 ;239 ; WAVE32-LABEL: name: copy_s1_sgpr_to_vcc240 ; WAVE32: liveins: $sgpr0241 ; WAVE32-NEXT: {{ $}}242 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0243 ; WAVE32-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)244 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)245 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY1]](s1)246 %0:_(s32) = COPY $sgpr0247 %1:_(s1) = G_TRUNC %0248 %2:vcc(s1) = COPY %1249 S_ENDPGM 0, implicit %2250...251 252 253---254name: copy_s1_vgpr_to_vcc255legalized: true256 257body: |258 bb.0:259 liveins: $vgpr0260 ; CHECK-LABEL: name: copy_s1_vgpr_to_vcc261 ; CHECK: liveins: $vgpr0262 ; CHECK-NEXT: {{ $}}263 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0264 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)265 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)266 ; CHECK-NEXT: S_ENDPGM 0, implicit [[COPY1]](s1)267 ;268 ; WAVE32-LABEL: name: copy_s1_vgpr_to_vcc269 ; WAVE32: liveins: $vgpr0270 ; WAVE32-NEXT: {{ $}}271 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0272 ; WAVE32-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)273 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)274 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY1]](s1)275 %0:_(s32) = COPY $vgpr0276 %1:_(s1) = G_TRUNC %0277 %2:vcc(s1) = COPY %1278 S_ENDPGM 0, implicit %2279...280 281---282name: wave64_copy_sgpr_64_to_s1283legalized: true284 285body: |286 bb.0:287 liveins: $sgpr4_sgpr5288 ; CHECK-LABEL: name: wave64_copy_sgpr_64_to_s1289 ; CHECK: liveins: $sgpr4_sgpr5290 ; CHECK-NEXT: {{ $}}291 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr4_sgpr5292 ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1293 ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0294 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY]](s1), [[C]], [[C1]]295 ;296 ; WAVE32-LABEL: name: wave64_copy_sgpr_64_to_s1297 ; WAVE32: liveins: $sgpr4_sgpr5298 ; WAVE32-NEXT: {{ $}}299 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr4_sgpr5300 ; WAVE32-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1301 ; WAVE32-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0302 ; WAVE32-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY]](s1), [[C]], [[C1]]303 %0:_(s1) = COPY $sgpr4_sgpr5304 %1:_(s32) = G_ZEXT %0:_(s1)305...306 307---308name: wave32_copy_sgpr_32_to_s1309legalized: true310 311body: |312 bb.0:313 liveins: $sgpr0314 ; CHECK-LABEL: name: wave32_copy_sgpr_32_to_s1315 ; CHECK: liveins: $sgpr0316 ; CHECK-NEXT: {{ $}}317 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr0318 ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1319 ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0320 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY]](s1), [[C]], [[C1]]321 ;322 ; WAVE32-LABEL: name: wave32_copy_sgpr_32_to_s1323 ; WAVE32: liveins: $sgpr0324 ; WAVE32-NEXT: {{ $}}325 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr0326 ; WAVE32-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1327 ; WAVE32-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0328 ; WAVE32-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY]](s1), [[C]], [[C1]]329 %0:_(s1) = COPY $sgpr0330 %1:_(s32) = G_ZEXT %0:_(s1)331...332 333---334name: wave64_copy2_sgpr_64_to_s1335legalized: true336 337body: |338 bb.0:339 liveins: $sgpr4_sgpr5, $sgpr6_sgpr7340 ; CHECK-LABEL: name: wave64_copy2_sgpr_64_to_s1341 ; CHECK: liveins: $sgpr4_sgpr5, $sgpr6_sgpr7342 ; CHECK-NEXT: {{ $}}343 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr4_sgpr5344 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vcc(s1) = COPY $sgpr6_sgpr7345 ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1346 ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0347 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY]](s1), [[C]], [[C1]]348 ; CHECK-NEXT: [[C2:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1349 ; CHECK-NEXT: [[C3:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0350 ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY1]](s1), [[C2]], [[C3]]351 ;352 ; WAVE32-LABEL: name: wave64_copy2_sgpr_64_to_s1353 ; WAVE32: liveins: $sgpr4_sgpr5, $sgpr6_sgpr7354 ; WAVE32-NEXT: {{ $}}355 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr4_sgpr5356 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vcc(s1) = COPY $sgpr6_sgpr7357 ; WAVE32-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1358 ; WAVE32-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0359 ; WAVE32-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY]](s1), [[C]], [[C1]]360 ; WAVE32-NEXT: [[C2:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1361 ; WAVE32-NEXT: [[C3:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0362 ; WAVE32-NEXT: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY1]](s1), [[C2]], [[C3]]363 %0:_(s1) = COPY $sgpr4_sgpr5364 %1:_(s1) = COPY $sgpr6_sgpr7365 %2:_(s32) = G_ZEXT %0:_(s1)366 %3:_(s32) = G_ZEXT %1:_(s1)367...368 369---370name: wave32_copy2_sgpr_32_to_s1371legalized: true372 373body: |374 bb.0:375 liveins: $sgpr0, $sgpr1376 ; CHECK-LABEL: name: wave32_copy2_sgpr_32_to_s1377 ; CHECK: liveins: $sgpr0, $sgpr1378 ; CHECK-NEXT: {{ $}}379 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr0380 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vcc(s1) = COPY $sgpr1381 ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1382 ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0383 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY]](s1), [[C]], [[C1]]384 ; CHECK-NEXT: [[C2:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1385 ; CHECK-NEXT: [[C3:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0386 ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY1]](s1), [[C2]], [[C3]]387 ;388 ; WAVE32-LABEL: name: wave32_copy2_sgpr_32_to_s1389 ; WAVE32: liveins: $sgpr0, $sgpr1390 ; WAVE32-NEXT: {{ $}}391 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr0392 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vcc(s1) = COPY $sgpr1393 ; WAVE32-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1394 ; WAVE32-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0395 ; WAVE32-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY]](s1), [[C]], [[C1]]396 ; WAVE32-NEXT: [[C2:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1397 ; WAVE32-NEXT: [[C3:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0398 ; WAVE32-NEXT: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY1]](s1), [[C2]], [[C3]]399 %0:_(s1) = COPY $sgpr0400 %1:_(s1) = COPY $sgpr1401 %2:_(s32) = G_ZEXT %0:_(s1)402 %3:_(s32) = G_ZEXT %1:_(s1)403...404 405---406name: copy_sgpr_64_to_s1_vgpr407legalized: true408 409body: |410 bb.0:411 liveins: $sgpr4_sgpr5412 ; CHECK-LABEL: name: copy_sgpr_64_to_s1_vgpr413 ; CHECK: liveins: $sgpr4_sgpr5414 ; CHECK-NEXT: {{ $}}415 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s1) = COPY $sgpr4_sgpr5416 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:vgpr(s32) = G_ZEXT [[COPY]](s1)417 ;418 ; WAVE32-LABEL: name: copy_sgpr_64_to_s1_vgpr419 ; WAVE32: liveins: $sgpr4_sgpr5420 ; WAVE32-NEXT: {{ $}}421 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s1) = COPY $sgpr4_sgpr5422 ; WAVE32-NEXT: [[ZEXT:%[0-9]+]]:vgpr(s32) = G_ZEXT [[COPY]](s1)423 %0:vgpr(s1) = COPY $sgpr4_sgpr5424 %1:_(s32) = G_ZEXT %0:vgpr(s1)425...426 427---428name: copy_sgpr_32_to_s1_vgpr429legalized: true430 431body: |432 bb.0:433 liveins: $sgpr0434 ; CHECK-LABEL: name: copy_sgpr_32_to_s1_vgpr435 ; CHECK: liveins: $sgpr0436 ; CHECK-NEXT: {{ $}}437 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s1) = COPY $sgpr0438 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:vgpr(s32) = G_ZEXT [[COPY]](s1)439 ;440 ; WAVE32-LABEL: name: copy_sgpr_32_to_s1_vgpr441 ; WAVE32: liveins: $sgpr0442 ; WAVE32-NEXT: {{ $}}443 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s1) = COPY $sgpr0444 ; WAVE32-NEXT: [[ZEXT:%[0-9]+]]:vgpr(s32) = G_ZEXT [[COPY]](s1)445 %0:vgpr(s1) = COPY $sgpr0446 %1:_(s32) = G_ZEXT %0:vgpr(s1)447...448 449---450name: wave64_copy_sgpr_64_to_s1_vcc451legalized: true452 453body: |454 bb.0:455 liveins: $sgpr4_sgpr5456 ; CHECK-LABEL: name: wave64_copy_sgpr_64_to_s1_vcc457 ; CHECK: liveins: $sgpr4_sgpr5458 ; CHECK-NEXT: {{ $}}459 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr4_sgpr5460 ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1461 ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0462 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY]](s1), [[C]], [[C1]]463 ;464 ; WAVE32-LABEL: name: wave64_copy_sgpr_64_to_s1_vcc465 ; WAVE32: liveins: $sgpr4_sgpr5466 ; WAVE32-NEXT: {{ $}}467 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr4_sgpr5468 ; WAVE32-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1469 ; WAVE32-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0470 ; WAVE32-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY]](s1), [[C]], [[C1]]471 %0:vcc(s1) = COPY $sgpr4_sgpr5472 %1:_(s32) = G_ZEXT %0:vcc(s1)473...474 475---476name: wave32_copy_sgpr_32_to_s1_vcc477legalized: true478 479body: |480 bb.0:481 liveins: $sgpr0482 ; CHECK-LABEL: name: wave32_copy_sgpr_32_to_s1_vcc483 ; CHECK: liveins: $sgpr0484 ; CHECK-NEXT: {{ $}}485 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr0486 ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1487 ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0488 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY]](s1), [[C]], [[C1]]489 ;490 ; WAVE32-LABEL: name: wave32_copy_sgpr_32_to_s1_vcc491 ; WAVE32: liveins: $sgpr0492 ; WAVE32-NEXT: {{ $}}493 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr0494 ; WAVE32-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1495 ; WAVE32-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0496 ; WAVE32-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY]](s1), [[C]], [[C1]]497 %0:vcc(s1) = COPY $sgpr0498 %1:_(s32) = G_ZEXT %0:vcc(s1)499...500 501---502name: copy_virt_reg_to_s1503legalized: true504 505body: |506 bb.0:507 liveins: $vgpr0508 ; CHECK-LABEL: name: copy_virt_reg_to_s1509 ; CHECK: liveins: $vgpr0510 ; CHECK-NEXT: {{ $}}511 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0512 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)513 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s1) = COPY [[TRUNC]](s1)514 ;515 ; WAVE32-LABEL: name: copy_virt_reg_to_s1516 ; WAVE32: liveins: $vgpr0517 ; WAVE32-NEXT: {{ $}}518 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0519 ; WAVE32-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)520 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr(s1) = COPY [[TRUNC]](s1)521 %0:_(s32) = COPY $vgpr0522 %1:_(s1) = G_TRUNC %0523 %2:_(s1) = COPY %1524...525 526---527name: copy_virt_reg_to_s1_vgpr528legalized: true529 530body: |531 bb.0:532 liveins: $vgpr0533 ; CHECK-LABEL: name: copy_virt_reg_to_s1_vgpr534 ; CHECK: liveins: $vgpr0535 ; CHECK-NEXT: {{ $}}536 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0537 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)538 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s1) = COPY [[TRUNC]](s1)539 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s1) = COPY [[COPY1]](s1)540 ;541 ; WAVE32-LABEL: name: copy_virt_reg_to_s1_vgpr542 ; WAVE32: liveins: $vgpr0543 ; WAVE32-NEXT: {{ $}}544 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0545 ; WAVE32-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)546 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr(s1) = COPY [[TRUNC]](s1)547 ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:vgpr(s1) = COPY [[COPY1]](s1)548 %0:_(s32) = COPY $vgpr0549 %1:_(s1) = G_TRUNC %0550 %2:vgpr(s1) = COPY %1551 %3:_(s1) = COPY %2552...553 554 555---556name: copy_virt_reg_to_s1_vcc557legalized: true558 559body: |560 bb.0:561 liveins: $vgpr0562 ; CHECK-LABEL: name: copy_virt_reg_to_s1_vcc563 ; CHECK: liveins: $vgpr0564 ; CHECK-NEXT: {{ $}}565 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0566 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)567 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)568 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vcc(s1) = COPY [[COPY1]](s1)569 ;570 ; WAVE32-LABEL: name: copy_virt_reg_to_s1_vcc571 ; WAVE32: liveins: $vgpr0572 ; WAVE32-NEXT: {{ $}}573 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0574 ; WAVE32-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)575 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)576 ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:vcc(s1) = COPY [[COPY1]](s1)577 %0:_(s32) = COPY $vgpr0578 %1:_(s1) = G_TRUNC %0579 %2:vcc(s1) = COPY %1580 %3:_(s1) = COPY %2581...582 583---584name: copy_s1_to_sgpr_64585legalized: true586 587body: |588 bb.0:589 liveins: $vgpr0590 ; CHECK-LABEL: name: copy_s1_to_sgpr_64591 ; CHECK: liveins: $vgpr0592 ; CHECK-NEXT: {{ $}}593 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0594 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)595 ; CHECK-NEXT: $sgpr4_sgpr5 = COPY [[TRUNC]](s1)596 ;597 ; WAVE32-LABEL: name: copy_s1_to_sgpr_64598 ; WAVE32: liveins: $vgpr0599 ; WAVE32-NEXT: {{ $}}600 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0601 ; WAVE32-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)602 ; WAVE32-NEXT: $sgpr4_sgpr5 = COPY [[TRUNC]](s1)603 %0:_(s32) = COPY $vgpr0604 %1:_(s1) = G_TRUNC %0605 $sgpr4_sgpr5 = COPY %1606...607 608---609name: copy_s1_to_sgpr_32610legalized: true611 612body: |613 bb.0:614 liveins: $vgpr0615 ; CHECK-LABEL: name: copy_s1_to_sgpr_32616 ; CHECK: liveins: $vgpr0617 ; CHECK-NEXT: {{ $}}618 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0619 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)620 ; CHECK-NEXT: $sgpr0 = COPY [[TRUNC]](s1)621 ;622 ; WAVE32-LABEL: name: copy_s1_to_sgpr_32623 ; WAVE32: liveins: $vgpr0624 ; WAVE32-NEXT: {{ $}}625 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0626 ; WAVE32-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)627 ; WAVE32-NEXT: $sgpr0 = COPY [[TRUNC]](s1)628 %0:_(s32) = COPY $vgpr0629 %1:_(s1) = G_TRUNC %0630 $sgpr0 = COPY %1631...632 633---634name: copy_sgpr_physreg_to_vcc_s1_wave64635legalized: true636tracksRegLiveness: true637body: |638 bb.0:639 liveins: $sgpr4_sgpr5640 641 ; CHECK-LABEL: name: copy_sgpr_physreg_to_vcc_s1_wave64642 ; CHECK: liveins: $sgpr4_sgpr5643 ; CHECK-NEXT: {{ $}}644 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr4_sgpr5645 ; CHECK-NEXT: S_ENDPGM 0, implicit [[COPY]](s1)646 ;647 ; WAVE32-LABEL: name: copy_sgpr_physreg_to_vcc_s1_wave64648 ; WAVE32: liveins: $sgpr4_sgpr5649 ; WAVE32-NEXT: {{ $}}650 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr4_sgpr5651 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY]](s1)652 %0:_(s1) = COPY $sgpr4_sgpr5653 S_ENDPGM 0, implicit %0654 655...656 657---658name: copy_vcc_s1_to_sgpr_physreg_wave64659legalized: true660tracksRegLiveness: true661body: |662 bb.0:663 liveins: $vgpr0664 665 ; CHECK-LABEL: name: copy_vcc_s1_to_sgpr_physreg_wave64666 ; CHECK: liveins: $vgpr0667 ; CHECK-NEXT: {{ $}}668 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0669 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0670 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32)671 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]672 ; CHECK-NEXT: $sgpr4_sgpr5 = COPY [[ICMP]](s1)673 ; CHECK-NEXT: S_ENDPGM 0, implicit $sgpr4_sgpr5674 ;675 ; WAVE32-LABEL: name: copy_vcc_s1_to_sgpr_physreg_wave64676 ; WAVE32: liveins: $vgpr0677 ; WAVE32-NEXT: {{ $}}678 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0679 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0680 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32)681 ; WAVE32-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]682 ; WAVE32-NEXT: $sgpr4_sgpr5 = COPY [[ICMP]](s1)683 ; WAVE32-NEXT: S_ENDPGM 0, implicit $sgpr4_sgpr5684 %0:_(s32) = COPY $vgpr0685 %1:_(s32) = G_CONSTANT i32 0686 %2:_(s1) = G_ICMP intpred(eq), %0, %1687 $sgpr4_sgpr5 = COPY %2688 S_ENDPGM 0, implicit $sgpr4_sgpr5689 690...691 692---693name: copy_sgpr_physreg_to_vcc_s1_wave32694legalized: true695tracksRegLiveness: true696body: |697 bb.0:698 liveins: $sgpr4699 700 ; CHECK-LABEL: name: copy_sgpr_physreg_to_vcc_s1_wave32701 ; CHECK: liveins: $sgpr4702 ; CHECK-NEXT: {{ $}}703 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr4704 ; CHECK-NEXT: S_ENDPGM 0, implicit [[COPY]](s1)705 ;706 ; WAVE32-LABEL: name: copy_sgpr_physreg_to_vcc_s1_wave32707 ; WAVE32: liveins: $sgpr4708 ; WAVE32-NEXT: {{ $}}709 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr4710 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY]](s1)711 %0:_(s1) = COPY $sgpr4712 S_ENDPGM 0, implicit %0713 714...715 716---717name: copy_vcc_s1_to_sgpr_physreg_wave32718legalized: true719tracksRegLiveness: true720body: |721 bb.0:722 liveins: $vgpr0723 724 ; CHECK-LABEL: name: copy_vcc_s1_to_sgpr_physreg_wave32725 ; CHECK: liveins: $vgpr0726 ; CHECK-NEXT: {{ $}}727 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0728 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0729 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32)730 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]731 ; CHECK-NEXT: $sgpr4 = COPY [[ICMP]](s1)732 ; CHECK-NEXT: S_ENDPGM 0, implicit $sgpr4733 ;734 ; WAVE32-LABEL: name: copy_vcc_s1_to_sgpr_physreg_wave32735 ; WAVE32: liveins: $vgpr0736 ; WAVE32-NEXT: {{ $}}737 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0738 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0739 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32)740 ; WAVE32-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]741 ; WAVE32-NEXT: $sgpr4 = COPY [[ICMP]](s1)742 ; WAVE32-NEXT: S_ENDPGM 0, implicit $sgpr4743 %0:_(s32) = COPY $vgpr0744 %1:_(s32) = G_CONSTANT i32 0745 %2:_(s1) = G_ICMP intpred(eq), %0, %1746 $sgpr4 = COPY %2747 S_ENDPGM 0, implicit $sgpr4748 749...750