brintos

brintos / llvm-project-archived public Read only

0
0
Text · 25.2 KiB · 212de32 Raw
664 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass="amdgpu-regbankselect,amdgpu-regbanklegalize" %s -verify-machineinstrs -o - | FileCheck %s3 4---5name: and_s32_ss6legalized: true7 8body: |9  bb.0:10    liveins: $sgpr0, $sgpr111    ; CHECK-LABEL: name: and_s32_ss12    ; CHECK: liveins: $sgpr0, $sgpr113    ; CHECK-NEXT: {{  $}}14    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr015    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr116    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[COPY]], [[COPY1]]17    %0:_(s32) = COPY $sgpr018    %1:_(s32) = COPY $sgpr119    %2:_(s32) = G_AND %0, %120...21 22---23name: and_s32_sv24legalized: true25 26body: |27  bb.0:28    liveins: $sgpr0, $vgpr029    ; CHECK-LABEL: name: and_s32_sv30    ; CHECK: liveins: $sgpr0, $vgpr031    ; CHECK-NEXT: {{  $}}32    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr033    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr034    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)35    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[COPY2]], [[COPY1]]36    %0:_(s32) = COPY $sgpr037    %1:_(s32) = COPY $vgpr038    %2:_(s32) = G_AND %0, %139...40 41---42name: and_s32_vs43legalized: true44 45body: |46  bb.0:47    liveins: $sgpr0, $vgpr048    ; CHECK-LABEL: name: and_s32_vs49    ; CHECK: liveins: $sgpr0, $vgpr050    ; CHECK-NEXT: {{  $}}51    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr052    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr053    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)54    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[COPY]], [[COPY2]]55    %0:_(s32) = COPY $vgpr056    %1:_(s32) = COPY $sgpr057    %2:_(s32) = G_AND %0, %158...59 60---61name: and_s32_vv62legalized: true63 64body: |65  bb.0:66    liveins: $vgpr0, $vgpr167    ; CHECK-LABEL: name: and_s32_vv68    ; CHECK: liveins: $vgpr0, $vgpr169    ; CHECK-NEXT: {{  $}}70    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr071    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr172    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[COPY]], [[COPY1]]73    %0:_(s32) = COPY $vgpr074    %1:_(s32) = COPY $vgpr175    %2:_(s32) = G_AND %0, %176...77 78---79name: and_s64_ss80legalized: true81 82body: |83  bb.0:84    liveins: $sgpr0_sgpr1, $sgpr2_sgpr385    ; CHECK-LABEL: name: and_s64_ss86    ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr387    ; CHECK-NEXT: {{  $}}88    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr189    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr390    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s64) = G_AND [[COPY]], [[COPY1]]91    %0:_(s64) = COPY $sgpr0_sgpr192    %1:_(s64) = COPY $sgpr2_sgpr393    %2:_(s64) = G_AND %0, %194...95 96---97name: and_s64_sv98legalized: true99 100body: |101  bb.0:102    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1103    ; CHECK-LABEL: name: and_s64_sv104    ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1105    ; CHECK-NEXT: {{  $}}106    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1107    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1108    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)109    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)110    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](s64)111    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[UV]], [[UV2]]112    ; CHECK-NEXT: [[AND1:%[0-9]+]]:vgpr(s32) = G_AND [[UV1]], [[UV3]]113    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[AND]](s32), [[AND1]](s32)114    %0:_(s64) = COPY $sgpr0_sgpr1115    %1:_(s64) = COPY $vgpr0_vgpr1116    %2:_(s64) = G_AND %0, %1117...118 119---120name: and_s64_vs121legalized: true122 123body: |124  bb.0:125    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1126    ; CHECK-LABEL: name: and_s64_vs127    ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1128    ; CHECK-NEXT: {{  $}}129    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1130    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1131    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)132    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)133    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)134    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[UV]], [[UV2]]135    ; CHECK-NEXT: [[AND1:%[0-9]+]]:vgpr(s32) = G_AND [[UV1]], [[UV3]]136    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[AND]](s32), [[AND1]](s32)137    %0:_(s64) = COPY $vgpr0_vgpr1138    %1:_(s64) = COPY $sgpr0_sgpr1139    %2:_(s64) = G_AND %0, %1140...141 142---143name: and_s64_vv144legalized: true145 146body: |147  bb.0:148    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3149    ; CHECK-LABEL: name: and_s64_vv150    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3151    ; CHECK-NEXT: {{  $}}152    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1153    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3154    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)155    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](s64)156    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[UV]], [[UV2]]157    ; CHECK-NEXT: [[AND1:%[0-9]+]]:vgpr(s32) = G_AND [[UV1]], [[UV3]]158    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[AND]](s32), [[AND1]](s32)159    %0:_(s64) = COPY $vgpr0_vgpr1160    %1:_(s64) = COPY $vgpr2_vgpr3161    %2:_(s64) = G_AND %0, %1162...163 164---165name: and_s64_vv_user166legalized: true167 168body: |169  bb.0:170    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3171    ; CHECK-LABEL: name: and_s64_vv_user172    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3173    ; CHECK-NEXT: {{  $}}174    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1175    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3176    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)177    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](s64)178    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[UV]], [[UV2]]179    ; CHECK-NEXT: [[AND1:%[0-9]+]]:vgpr(s32) = G_AND [[UV1]], [[UV3]]180    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[AND]](s32), [[AND1]](s32)181    ; CHECK-NEXT: S_NOP 0, implicit [[MV]](s64)182    %0:_(s64) = COPY $vgpr0_vgpr1183    %1:_(s64) = COPY $vgpr2_vgpr3184    %2:_(s64) = G_AND %0, %1185    S_NOP 0, implicit %2186...187---188name: and_s64_ss_ss_merge189legalized: true190 191body: |192  bb.0:193    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3194    ; CHECK-LABEL: name: and_s64_ss_ss_merge195    ; CHECK: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3196    ; CHECK-NEXT: {{  $}}197    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0198    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1199    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2200    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY $sgpr3201    ; CHECK-NEXT: [[MV:%[0-9]+]]:sgpr(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)202    ; CHECK-NEXT: [[MV1:%[0-9]+]]:sgpr(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)203    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s64) = G_AND [[MV]], [[MV1]]204    ; CHECK-NEXT: S_NOP 0, implicit [[AND]](s64)205    %0:_(s32) = COPY $sgpr0206    %1:_(s32) = COPY $sgpr1207    %2:_(s32) = COPY $sgpr2208    %3:_(s32) = COPY $sgpr3209    %4:_(s64) = G_MERGE_VALUES %0, %1210    %5:_(s64) = G_MERGE_VALUES %2, %3211    %6:_(s64) = G_AND %4, %5212    S_NOP 0, implicit %6213...214 215---216name: and_s64_vv_vv_merge217legalized: true218 219body: |220  bb.0:221    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3222    ; CHECK-LABEL: name: and_s64_vv_vv_merge223    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3224    ; CHECK-NEXT: {{  $}}225    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0226    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1227    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2228    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr3229    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)230    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)231    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)232    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV1]](s64)233    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[UV]], [[UV2]]234    ; CHECK-NEXT: [[AND1:%[0-9]+]]:vgpr(s32) = G_AND [[UV1]], [[UV3]]235    ; CHECK-NEXT: [[MV2:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[AND]](s32), [[AND1]](s32)236    ; CHECK-NEXT: S_NOP 0, implicit [[MV2]](s64)237    %0:_(s32) = COPY $vgpr0238    %1:_(s32) = COPY $vgpr1239    %2:_(s32) = COPY $vgpr2240    %3:_(s32) = COPY $vgpr3241    %4:_(s64) = G_MERGE_VALUES %0, %1242    %5:_(s64) = G_MERGE_VALUES %2, %3243    %6:_(s64) = G_AND %4, %5244    S_NOP 0, implicit %6245...246 247---248name: and_s64_s_sv_merge249legalized: true250 251body: |252  bb.0:253    liveins: $sgpr0_sgpr1, $sgpr2, $vgpr0254    ; CHECK-LABEL: name: and_s64_s_sv_merge255    ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2, $vgpr0256    ; CHECK-NEXT: {{  $}}257    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1258    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr2259    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0260    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)261    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY3]](s32), [[COPY2]](s32)262    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)263    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY4]](s64)264    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)265    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[UV]], [[UV2]]266    ; CHECK-NEXT: [[AND1:%[0-9]+]]:vgpr(s32) = G_AND [[UV1]], [[UV3]]267    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[AND]](s32), [[AND1]](s32)268    ; CHECK-NEXT: S_NOP 0, implicit [[MV1]](s64)269    %0:_(s64) = COPY $sgpr0_sgpr1270    %1:_(s32) = COPY $sgpr2271    %2:_(s32) = COPY $vgpr0272    %3:_(s64) = G_MERGE_VALUES %1, %2273    %4:_(s64) = G_AND %0, %3274    S_NOP 0, implicit %4275...276 277---278name: and_s64_s_vs_merge279legalized: true280 281body: |282  bb.0:283    liveins: $sgpr0_sgpr1, $sgpr2, $vgpr0284    ; CHECK-LABEL: name: and_s64_s_vs_merge285    ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2, $vgpr0286    ; CHECK-NEXT: {{  $}}287    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1288    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr2289    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0290    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)291    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)292    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)293    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY4]](s64)294    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)295    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[UV]], [[UV2]]296    ; CHECK-NEXT: [[AND1:%[0-9]+]]:vgpr(s32) = G_AND [[UV1]], [[UV3]]297    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[AND]](s32), [[AND1]](s32)298    ; CHECK-NEXT: S_NOP 0, implicit [[MV1]](s64)299    %0:_(s64) = COPY $sgpr0_sgpr1300    %1:_(s32) = COPY $sgpr2301    %2:_(s32) = COPY $vgpr0302    %3:_(s64) = G_MERGE_VALUES %2, %1303    %4:_(s64) = G_AND %0, %3304    S_NOP 0, implicit %4305...306 307---308name: and_s64_sv_sv_merge309legalized: true310 311body: |312  bb.0:313    liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1314    ; CHECK-LABEL: name: and_s64_sv_sv_merge315    ; CHECK: liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1316    ; CHECK-NEXT: {{  $}}317    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0318    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1319    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0320    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1321    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)322    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY2]](s32)323    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)324    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY5]](s32), [[COPY3]](s32)325    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)326    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV1]](s64)327    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[UV]], [[UV2]]328    ; CHECK-NEXT: [[AND1:%[0-9]+]]:vgpr(s32) = G_AND [[UV1]], [[UV3]]329    ; CHECK-NEXT: [[MV2:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[AND]](s32), [[AND1]](s32)330    ; CHECK-NEXT: S_NOP 0, implicit [[MV2]](s64)331    %0:_(s32) = COPY $sgpr0332    %1:_(s32) = COPY $sgpr1333    %2:_(s32) = COPY $vgpr0334    %3:_(s32) = COPY $vgpr1335    %4:_(s64) = G_MERGE_VALUES %0, %2336    %5:_(s64) = G_MERGE_VALUES %1, %3337    %6:_(s64) = G_AND %4, %5338    S_NOP 0, implicit %6339...340 341---342name: and_s64_sv_vs_merge343legalized: true344 345body: |346  bb.0:347    liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1348    ; CHECK-LABEL: name: and_s64_sv_vs_merge349    ; CHECK: liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1350    ; CHECK-NEXT: {{  $}}351    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0352    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1353    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0354    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1355    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)356    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY2]](s32)357    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)358    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY3]](s32), [[COPY5]](s32)359    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)360    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV1]](s64)361    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[UV]], [[UV2]]362    ; CHECK-NEXT: [[AND1:%[0-9]+]]:vgpr(s32) = G_AND [[UV1]], [[UV3]]363    ; CHECK-NEXT: [[MV2:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[AND]](s32), [[AND1]](s32)364    ; CHECK-NEXT: S_NOP 0, implicit [[MV2]](s64)365    %0:_(s32) = COPY $sgpr0366    %1:_(s32) = COPY $sgpr1367    %2:_(s32) = COPY $vgpr0368    %3:_(s32) = COPY $vgpr1369    %4:_(s64) = G_MERGE_VALUES %0, %2370    %5:_(s64) = G_MERGE_VALUES %3, %1371    %6:_(s64) = G_AND %4, %5372    S_NOP 0, implicit %6373...374 375---376name: and_chain_s64_sv377legalized: true378 379body: |380  bb.0:381    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1382    ; CHECK-LABEL: name: and_chain_s64_sv383    ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1384    ; CHECK-NEXT: {{  $}}385    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1386    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3387    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1388    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)389    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64)390    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)391    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[UV]], [[UV2]]392    ; CHECK-NEXT: [[AND1:%[0-9]+]]:vgpr(s32) = G_AND [[UV1]], [[UV3]]393    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[AND]](s32), [[AND1]](s32)394    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)395    ; CHECK-NEXT: [[UV4:%[0-9]+]]:vgpr(s32), [[UV5:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY4]](s64)396    ; CHECK-NEXT: [[UV6:%[0-9]+]]:vgpr(s32), [[UV7:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)397    ; CHECK-NEXT: [[AND2:%[0-9]+]]:vgpr(s32) = G_AND [[UV4]], [[UV6]]398    ; CHECK-NEXT: [[AND3:%[0-9]+]]:vgpr(s32) = G_AND [[UV5]], [[UV7]]399    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[AND2]](s32), [[AND3]](s32)400    ; CHECK-NEXT: S_NOP 0, implicit [[MV1]](s64)401    %0:_(s64) = COPY $sgpr0_sgpr1402    %1:_(s64) = COPY $sgpr2_sgpr3403    %2:_(s64) = COPY $vgpr0_vgpr1404    %3:_(s64) = G_AND %0, %2405    %4:_(s64) = G_AND %1, %3406    S_NOP 0, implicit %4407...408 409---410name: and_v2i32_ss411legalized: true412 413body: |414  bb.0:415    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3416    ; CHECK-LABEL: name: and_v2i32_ss417    ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3418    ; CHECK-NEXT: {{  $}}419    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1420    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3421    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(<2 x s32>) = G_AND [[COPY]], [[COPY1]]422    ; CHECK-NEXT: S_NOP 0, implicit [[AND]](<2 x s32>)423    %0:_(<2 x s32>) = COPY $sgpr0_sgpr1424    %1:_(<2 x s32>) = COPY $sgpr2_sgpr3425    %2:_(<2 x s32>) = G_AND %0, %1426    S_NOP 0, implicit %2427...428 429---430name: and_v2i32_sv431legalized: true432 433body: |434  bb.0:435    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1436    ; CHECK-LABEL: name: and_v2i32_sv437    ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1438    ; CHECK-NEXT: {{  $}}439    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1440    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1441    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s32>) = COPY [[COPY]](<2 x s32>)442    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)443    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)444    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[UV]], [[UV2]]445    ; CHECK-NEXT: [[AND1:%[0-9]+]]:vgpr(s32) = G_AND [[UV1]], [[UV3]]446    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32)447    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>)448    %0:_(<2 x s32>) = COPY $sgpr0_sgpr1449    %1:_(<2 x s32>) = COPY $vgpr0_vgpr1450    %2:_(<2 x s32>) = G_AND %0, %1451    S_NOP 0, implicit %2452...453 454---455name: and_v2i32_vs456legalized: true457 458body: |459  bb.0:460    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1461 462    ; CHECK-LABEL: name: and_v2i32_vs463    ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1464    ; CHECK-NEXT: {{  $}}465    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1466    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1467    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s32>) = COPY [[COPY1]](<2 x s32>)468    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)469    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)470    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[UV]], [[UV2]]471    ; CHECK-NEXT: [[AND1:%[0-9]+]]:vgpr(s32) = G_AND [[UV1]], [[UV3]]472    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32)473    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>)474    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1475    %1:_(<2 x s32>) = COPY $sgpr0_sgpr1476    %2:_(<2 x s32>) = G_AND %0, %1477    S_NOP 0, implicit %2478...479 480---481name: and_v2i32_vv482legalized: true483 484body: |485  bb.0:486    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3487    ; CHECK-LABEL: name: and_v2i32_vv488    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3489    ; CHECK-NEXT: {{  $}}490    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1491    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3492    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)493    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)494    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[UV]], [[UV2]]495    ; CHECK-NEXT: [[AND1:%[0-9]+]]:vgpr(s32) = G_AND [[UV1]], [[UV3]]496    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32)497    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>)498    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1499    %1:_(<2 x s32>) = COPY $vgpr2_vgpr3500    %2:_(<2 x s32>) = G_AND %0, %1501    S_NOP 0, implicit %2502...503 504---505name: and_v4s16_ss506legalized: true507 508body: |509  bb.0:510    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3511    ; CHECK-LABEL: name: and_v4s16_ss512    ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3513    ; CHECK-NEXT: {{  $}}514    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1515    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3516    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(<4 x s16>) = G_AND [[COPY]], [[COPY1]]517    %0:_(<4 x s16>) = COPY $sgpr0_sgpr1518    %1:_(<4 x s16>) = COPY $sgpr2_sgpr3519    %2:_(<4 x s16>) = G_AND %0, %1520...521 522---523name: and_v4s16_sv524legalized: true525 526body: |527  bb.0:528    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1529    ; CHECK-LABEL: name: and_v4s16_sv530    ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1531    ; CHECK-NEXT: {{  $}}532    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1533    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1534    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<4 x s16>) = COPY [[COPY]](<4 x s16>)535    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>)536    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY1]](<4 x s16>)537    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(<2 x s16>) = G_AND [[UV]], [[UV2]]538    ; CHECK-NEXT: [[AND1:%[0-9]+]]:vgpr(<2 x s16>) = G_AND [[UV1]], [[UV3]]539    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[AND]](<2 x s16>), [[AND1]](<2 x s16>)540    %0:_(<4 x s16>) = COPY $sgpr0_sgpr1541    %1:_(<4 x s16>) = COPY $vgpr0_vgpr1542    %2:_(<4 x s16>) = G_AND %0, %1543...544 545---546name: and_v4s16_vs547legalized: true548 549body: |550  bb.0:551    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1552    ; CHECK-LABEL: name: and_v4s16_vs553    ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1554    ; CHECK-NEXT: {{  $}}555    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1556    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1557    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<4 x s16>) = COPY [[COPY1]](<4 x s16>)558    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)559    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>)560    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(<2 x s16>) = G_AND [[UV]], [[UV2]]561    ; CHECK-NEXT: [[AND1:%[0-9]+]]:vgpr(<2 x s16>) = G_AND [[UV1]], [[UV3]]562    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[AND]](<2 x s16>), [[AND1]](<2 x s16>)563    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1564    %1:_(<4 x s16>) = COPY $sgpr0_sgpr1565    %2:_(<4 x s16>) = G_AND %0, %1566...567 568---569name: and_v4s16_vv570legalized: true571 572body: |573  bb.0:574    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3575    ; CHECK-LABEL: name: and_v4s16_vv576    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3577    ; CHECK-NEXT: {{  $}}578    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1579    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3580    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)581    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY1]](<4 x s16>)582    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(<2 x s16>) = G_AND [[UV]], [[UV2]]583    ; CHECK-NEXT: [[AND1:%[0-9]+]]:vgpr(<2 x s16>) = G_AND [[UV1]], [[UV3]]584    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[AND]](<2 x s16>), [[AND1]](<2 x s16>)585    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1586    %1:_(<4 x s16>) = COPY $vgpr2_vgpr3587    %2:_(<4 x s16>) = G_AND %0, %1588...589 590---591name: and_v2s16_ss592legalized: true593 594body: |595  bb.0:596    liveins: $sgpr0, $sgpr1597    ; CHECK-LABEL: name: and_v2s16_ss598    ; CHECK: liveins: $sgpr0, $sgpr1599    ; CHECK-NEXT: {{  $}}600    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0601    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr1602    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(<2 x s16>) = G_AND [[COPY]], [[COPY1]]603    %0:_(<2 x s16>) = COPY $sgpr0604    %1:_(<2 x s16>) = COPY $sgpr1605    %2:_(<2 x s16>) = G_AND %0, %1606...607 608---609name: and_v2s16_sv610legalized: true611 612body: |613  bb.0:614    liveins: $sgpr0, $vgpr0615    ; CHECK-LABEL: name: and_v2s16_sv616    ; CHECK: liveins: $sgpr0, $vgpr0617    ; CHECK-NEXT: {{  $}}618    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0619    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0620    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY]](<2 x s16>)621    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(<2 x s16>) = G_AND [[COPY2]], [[COPY1]]622    %0:_(<2 x s16>) = COPY $sgpr0623    %1:_(<2 x s16>) = COPY $vgpr0624    %2:_(<2 x s16>) = G_AND %0, %1625...626 627---628name: and_v2s16_vs629legalized: true630 631body: |632  bb.0:633    liveins: $sgpr0, $vgpr0634    ; CHECK-LABEL: name: and_v2s16_vs635    ; CHECK: liveins: $sgpr0, $vgpr0636    ; CHECK-NEXT: {{  $}}637    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0638    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0639    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY1]](<2 x s16>)640    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(<2 x s16>) = G_AND [[COPY]], [[COPY2]]641    %0:_(<2 x s16>) = COPY $vgpr0642    %1:_(<2 x s16>) = COPY $sgpr0643    %2:_(<2 x s16>) = G_AND %0, %1644...645 646---647name: and_v2s16_vv648legalized: true649 650body: |651  bb.0:652    liveins: $vgpr0, $vgpr1653    ; CHECK-LABEL: name: and_v2s16_vv654    ; CHECK: liveins: $vgpr0, $vgpr1655    ; CHECK-NEXT: {{  $}}656    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0657    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr1658    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(<2 x s16>) = G_AND [[COPY]], [[COPY1]]659    %0:_(<2 x s16>) = COPY $vgpr0660    %1:_(<2 x s16>) = COPY $vgpr1661    %2:_(<2 x s16>) = G_AND %0, %1662...663 664