brintos

brintos / llvm-project-archived public Read only

0
0
Text · 23.9 KiB · fce3805 Raw
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