brintos

brintos / llvm-project-archived public Read only

0
0
Text · 31.1 KiB · ae03b78 Raw
838 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: or_s32_ss6legalized: true7 8body: |9  bb.0:10    liveins: $sgpr0, $sgpr111    ; CHECK-LABEL: name: or_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: [[OR:%[0-9]+]]:sgpr(s32) = G_OR [[COPY]], [[COPY1]]17    %0:_(s32) = COPY $sgpr018    %1:_(s32) = COPY $sgpr119    %2:_(s32) = G_OR %0, %120...21 22---23name: or_s32_sv24legalized: true25 26body: |27  bb.0:28    liveins: $sgpr0, $vgpr029    ; CHECK-LABEL: name: or_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: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[COPY2]], [[COPY1]]36    %0:_(s32) = COPY $sgpr037    %1:_(s32) = COPY $vgpr038    %2:_(s32) = G_OR %0, %139...40 41---42name: or_s32_vs43legalized: true44 45body: |46  bb.0:47    liveins: $sgpr0, $vgpr048    ; CHECK-LABEL: name: or_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: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[COPY]], [[COPY2]]55    %0:_(s32) = COPY $vgpr056    %1:_(s32) = COPY $sgpr057    %2:_(s32) = G_OR %0, %158...59 60---61name: or_s32_vv62legalized: true63 64body: |65  bb.0:66    liveins: $vgpr0, $vgpr167    ; CHECK-LABEL: name: or_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: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[COPY]], [[COPY1]]73    %0:_(s32) = COPY $vgpr074    %1:_(s32) = COPY $vgpr175    %2:_(s32) = G_OR %0, %176...77 78---79name: or_i1_scc_scc80legalized: true81 82body: |83  bb.0:84    liveins: $sgpr0, $sgpr185    ; CHECK-LABEL: name: or_i1_scc_scc86    ; CHECK: liveins: $sgpr0, $sgpr187    ; CHECK-NEXT: {{  $}}88    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr089    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr190    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 091    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[C]]92    ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY1]](s32), [[C]]93    ; CHECK-NEXT: [[OR:%[0-9]+]]:sgpr(s32) = G_OR [[ICMP]], [[ICMP1]]94    ; CHECK-NEXT: S_NOP 0, implicit [[OR]](s32)95      %0:_(s32) = COPY $sgpr096      %1:_(s32) = COPY $sgpr197      %2:_(s32) = G_CONSTANT i32 098      %4:_(s1) = G_ICMP intpred(ne), %0, %299      %5:_(s1) = G_ICMP intpred(ne), %1, %2100      %6:_(s1) = G_OR %4, %5101      %7:_(s32) = G_ANYEXT %6102      S_NOP 0, implicit %7103...104 105---106name: or_i1_vcc_vcc107legalized: true108 109body: |110  bb.0:111    liveins: $vgpr0, $vgpr1112    ; CHECK-LABEL: name: or_i1_vcc_vcc113    ; CHECK: liveins: $vgpr0, $vgpr1114    ; CHECK-NEXT: {{  $}}115    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0116    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1117    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0118    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32)119    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY2]]120    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32)121    ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY3]]122    ; CHECK-NEXT: [[OR:%[0-9]+]]:vcc(s1) = G_OR [[ICMP]], [[ICMP1]]123    ; CHECK-NEXT: S_NOP 0, implicit [[OR]](s1)124      %0:_(s32) = COPY $vgpr0125      %1:_(s32) = COPY $vgpr1126      %2:_(s32) = G_CONSTANT i32 0127      %4:_(s1) = G_ICMP intpred(ne), %0, %2128      %5:_(s1) = G_ICMP intpred(ne), %1, %2129      %6:_(s1) = G_OR %4, %5130      S_NOP 0, implicit %6131...132 133---134name: or_i1_scc_vcc135legalized: true136 137body: |138  bb.0:139    liveins: $sgpr0, $vgpr0140    ; CHECK-LABEL: name: or_i1_scc_vcc141    ; CHECK: liveins: $sgpr0, $vgpr0142    ; CHECK-NEXT: {{  $}}143    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0144    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0145    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0146    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[C]]147    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32)148    ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]149    ; CHECK-NEXT: [[AMDGPU_COPY_VCC_SCC:%[0-9]+]]:vcc(s1) = G_AMDGPU_COPY_VCC_SCC [[ICMP]](s32)150    ; CHECK-NEXT: [[OR:%[0-9]+]]:vcc(s1) = G_OR [[AMDGPU_COPY_VCC_SCC]], [[ICMP1]]151    ; CHECK-NEXT: S_NOP 0, implicit [[OR]](s1)152      %0:_(s32) = COPY $sgpr0153      %1:_(s32) = COPY $vgpr0154      %2:_(s32) = G_CONSTANT i32 0155      %4:_(s1) = G_ICMP intpred(ne), %0, %2156      %5:_(s1) = G_ICMP intpred(ne), %1, %2157      %6:_(s1) = G_OR %4, %5158      S_NOP 0, implicit %6159...160 161---162name: or_i1_sgpr_trunc_sgpr_trunc163legalized: true164body:             |165  bb.0.entry:166    liveins: $sgpr0, $sgpr1167    ; CHECK-LABEL: name: or_i1_sgpr_trunc_sgpr_trunc168    ; CHECK: liveins: $sgpr0, $sgpr1169    ; CHECK-NEXT: {{  $}}170    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0171    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1172    ; CHECK-NEXT: [[OR:%[0-9]+]]:sgpr(s32) = G_OR [[COPY]], [[COPY1]]173    ; CHECK-NEXT: S_NOP 0, implicit [[OR]](s32)174    %0:_(s32) = COPY $sgpr0175    %1:_(s32) = COPY $sgpr1176    %2:_(s1) = G_TRUNC %0177    %3:_(s1) = G_TRUNC %1178    %4:_(s1) = G_OR %2, %3179    %5:_(s32) = G_ANYEXT %4180    S_NOP 0, implicit %5181 182...183 184---185name: or_i1_trunc_scc186legalized: true187body:             |188  bb.0.entry:189    liveins: $sgpr0, $sgpr1190    ; CHECK-LABEL: name: or_i1_trunc_scc191    ; CHECK: liveins: $sgpr0, $sgpr1192    ; CHECK-NEXT: {{  $}}193    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0194    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1195    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]196    ; CHECK-NEXT: [[OR:%[0-9]+]]:sgpr(s32) = G_OR [[COPY]], [[ICMP]]197    ; CHECK-NEXT: S_NOP 0, implicit [[OR]](s32)198    %0:_(s32) = COPY $sgpr0199    %1:_(s32) = COPY $sgpr1200    %2:_(s1) = G_TRUNC %0201    %3:_(s1) = G_ICMP intpred(ne), %0, %1202    %4:_(s1) = G_OR %2, %3203    %5:_(s32) = G_ANYEXT %4204    S_NOP 0, implicit %5205...206 207---208name: or_i1_s_trunc_vcc209legalized: true210body:             |211  bb.0.entry:212    liveins: $sgpr0, $vgpr0213    ; CHECK-LABEL: name: or_i1_s_trunc_vcc214    ; CHECK: liveins: $sgpr0, $vgpr0215    ; CHECK-NEXT: {{  $}}216    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0217    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0218    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)219    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY1]]220    ; CHECK-NEXT: [[AMDGPU_COPY_VCC_SCC:%[0-9]+]]:vcc(s1) = G_AMDGPU_COPY_VCC_SCC [[COPY]](s32)221    ; CHECK-NEXT: [[OR:%[0-9]+]]:vcc(s1) = G_OR [[AMDGPU_COPY_VCC_SCC]], [[ICMP]]222    ; CHECK-NEXT: S_NOP 0, implicit [[OR]](s1)223    %0:_(s32) = COPY $sgpr0224    %1:_(s32) = COPY $vgpr0225    %2:_(s1) = G_TRUNC %0226    %3:_(s1) = G_ICMP intpred(ne), %0, %1227    %4:_(s1) = G_OR %2, %3228    S_NOP 0, implicit %4229...230 231---232name: or_s64_ss233legalized: true234 235body: |236  bb.0:237    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3238    ; CHECK-LABEL: name: or_s64_ss239    ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3240    ; CHECK-NEXT: {{  $}}241    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1242    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3243    ; CHECK-NEXT: [[OR:%[0-9]+]]:sgpr(s64) = G_OR [[COPY]], [[COPY1]]244    %0:_(s64) = COPY $sgpr0_sgpr1245    %1:_(s64) = COPY $sgpr2_sgpr3246    %2:_(s64) = G_OR %0, %1247...248 249---250name: or_s64_sv251legalized: true252 253body: |254  bb.0:255    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1256    ; CHECK-LABEL: name: or_s64_sv257    ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1258    ; CHECK-NEXT: {{  $}}259    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1260    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1261    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)262    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)263    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](s64)264    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]265    ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]266    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)267    %0:_(s64) = COPY $sgpr0_sgpr1268    %1:_(s64) = COPY $vgpr0_vgpr1269    %2:_(s64) = G_OR %0, %1270...271 272---273name: or_s64_vs274legalized: true275 276body: |277  bb.0:278    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1279    ; CHECK-LABEL: name: or_s64_vs280    ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1281    ; CHECK-NEXT: {{  $}}282    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1283    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1284    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)285    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)286    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)287    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]288    ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]289    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)290    %0:_(s64) = COPY $vgpr0_vgpr1291    %1:_(s64) = COPY $sgpr0_sgpr1292    %2:_(s64) = G_OR %0, %1293...294 295---296name: or_s64_vv297legalized: true298 299body: |300  bb.0:301    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3302    ; CHECK-LABEL: name: or_s64_vv303    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3304    ; CHECK-NEXT: {{  $}}305    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1306    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3307    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)308    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](s64)309    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]310    ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]311    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)312    %0:_(s64) = COPY $vgpr0_vgpr1313    %1:_(s64) = COPY $vgpr2_vgpr3314    %2:_(s64) = G_OR %0, %1315...316 317---318name: or_s64_vv_flags319legalized: true320 321body: |322  bb.0:323    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3324    ; CHECK-LABEL: name: or_s64_vv_flags325    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3326    ; CHECK-NEXT: {{  $}}327    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1328    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3329    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)330    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](s64)331    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = disjoint G_OR [[UV]], [[UV2]]332    ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = disjoint G_OR [[UV1]], [[UV3]]333    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)334    %0:_(s64) = COPY $vgpr0_vgpr1335    %1:_(s64) = COPY $vgpr2_vgpr3336    %2:_(s64) = disjoint G_OR %0, %1337...338 339---340name: or_s64_vv_user341legalized: true342 343body: |344  bb.0:345    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3346    ; CHECK-LABEL: name: or_s64_vv_user347    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3348    ; CHECK-NEXT: {{  $}}349    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1350    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3351    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)352    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](s64)353    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]354    ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]355    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)356    ; CHECK-NEXT: S_NOP 0, implicit [[MV]](s64)357    %0:_(s64) = COPY $vgpr0_vgpr1358    %1:_(s64) = COPY $vgpr2_vgpr3359    %2:_(s64) = G_OR %0, %1360    S_NOP 0, implicit %2361...362---363name: or_s64_ss_ss_merge364legalized: true365 366body: |367  bb.0:368    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3369    ; CHECK-LABEL: name: or_s64_ss_ss_merge370    ; CHECK: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3371    ; CHECK-NEXT: {{  $}}372    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0373    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1374    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2375    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY $sgpr3376    ; CHECK-NEXT: [[MV:%[0-9]+]]:sgpr(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)377    ; CHECK-NEXT: [[MV1:%[0-9]+]]:sgpr(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)378    ; CHECK-NEXT: [[OR:%[0-9]+]]:sgpr(s64) = G_OR [[MV]], [[MV1]]379    ; CHECK-NEXT: S_NOP 0, implicit [[OR]](s64)380    %0:_(s32) = COPY $sgpr0381    %1:_(s32) = COPY $sgpr1382    %2:_(s32) = COPY $sgpr2383    %3:_(s32) = COPY $sgpr3384    %4:_(s64) = G_MERGE_VALUES %0, %1385    %5:_(s64) = G_MERGE_VALUES %2, %3386    %6:_(s64) = G_OR %4, %5387    S_NOP 0, implicit %6388...389 390---391name: or_s64_vv_vv_merge392legalized: true393 394body: |395  bb.0:396    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3397    ; CHECK-LABEL: name: or_s64_vv_vv_merge398    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3399    ; CHECK-NEXT: {{  $}}400    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0401    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1402    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2403    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr3404    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)405    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)406    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)407    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV1]](s64)408    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]409    ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]410    ; CHECK-NEXT: [[MV2:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)411    ; CHECK-NEXT: S_NOP 0, implicit [[MV2]](s64)412    %0:_(s32) = COPY $vgpr0413    %1:_(s32) = COPY $vgpr1414    %2:_(s32) = COPY $vgpr2415    %3:_(s32) = COPY $vgpr3416    %4:_(s64) = G_MERGE_VALUES %0, %1417    %5:_(s64) = G_MERGE_VALUES %2, %3418    %6:_(s64) = G_OR %4, %5419    S_NOP 0, implicit %6420...421 422---423name: or_s64_s_sv_merge424legalized: true425 426body: |427  bb.0:428    liveins: $sgpr0_sgpr1, $sgpr2, $vgpr0429    ; CHECK-LABEL: name: or_s64_s_sv_merge430    ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2, $vgpr0431    ; CHECK-NEXT: {{  $}}432    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1433    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr2434    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0435    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)436    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY3]](s32), [[COPY2]](s32)437    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)438    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY4]](s64)439    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)440    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]441    ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]442    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)443    ; CHECK-NEXT: S_NOP 0, implicit [[MV1]](s64)444    %0:_(s64) = COPY $sgpr0_sgpr1445    %1:_(s32) = COPY $sgpr2446    %2:_(s32) = COPY $vgpr0447    %3:_(s64) = G_MERGE_VALUES %1, %2448    %4:_(s64) = G_OR %0, %3449    S_NOP 0, implicit %4450...451 452---453name: or_s64_s_vs_merge454legalized: true455 456body: |457  bb.0:458    liveins: $sgpr0_sgpr1, $sgpr2, $vgpr0459    ; CHECK-LABEL: name: or_s64_s_vs_merge460    ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2, $vgpr0461    ; CHECK-NEXT: {{  $}}462    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1463    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr2464    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0465    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)466    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)467    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)468    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY4]](s64)469    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)470    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]471    ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]472    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)473    ; CHECK-NEXT: S_NOP 0, implicit [[MV1]](s64)474    %0:_(s64) = COPY $sgpr0_sgpr1475    %1:_(s32) = COPY $sgpr2476    %2:_(s32) = COPY $vgpr0477    %3:_(s64) = G_MERGE_VALUES %2, %1478    %4:_(s64) = G_OR %0, %3479    S_NOP 0, implicit %4480...481 482---483name: or_s64_sv_sv_merge484legalized: true485 486body: |487  bb.0:488    liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1489    ; CHECK-LABEL: name: or_s64_sv_sv_merge490    ; CHECK: liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1491    ; CHECK-NEXT: {{  $}}492    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0493    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1494    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0495    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1496    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)497    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY2]](s32)498    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)499    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY5]](s32), [[COPY3]](s32)500    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)501    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV1]](s64)502    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]503    ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]504    ; CHECK-NEXT: [[MV2:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)505    ; CHECK-NEXT: S_NOP 0, implicit [[MV2]](s64)506    %0:_(s32) = COPY $sgpr0507    %1:_(s32) = COPY $sgpr1508    %2:_(s32) = COPY $vgpr0509    %3:_(s32) = COPY $vgpr1510    %4:_(s64) = G_MERGE_VALUES %0, %2511    %5:_(s64) = G_MERGE_VALUES %1, %3512    %6:_(s64) = G_OR %4, %5513    S_NOP 0, implicit %6514...515 516---517name: or_s64_sv_vs_merge518legalized: true519 520body: |521  bb.0:522    liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1523    ; CHECK-LABEL: name: or_s64_sv_vs_merge524    ; CHECK: liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1525    ; CHECK-NEXT: {{  $}}526    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0527    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1528    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0529    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1530    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)531    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY2]](s32)532    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)533    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY3]](s32), [[COPY5]](s32)534    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)535    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV1]](s64)536    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]537    ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]538    ; CHECK-NEXT: [[MV2:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)539    ; CHECK-NEXT: S_NOP 0, implicit [[MV2]](s64)540    %0:_(s32) = COPY $sgpr0541    %1:_(s32) = COPY $sgpr1542    %2:_(s32) = COPY $vgpr0543    %3:_(s32) = COPY $vgpr1544    %4:_(s64) = G_MERGE_VALUES %0, %2545    %5:_(s64) = G_MERGE_VALUES %3, %1546    %6:_(s64) = G_OR %4, %5547    S_NOP 0, implicit %6548...549 550---551name: or_chain_s64_sv552legalized: true553 554body: |555  bb.0:556    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1557    ; CHECK-LABEL: name: or_chain_s64_sv558    ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1559    ; CHECK-NEXT: {{  $}}560    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1561    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3562    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1563    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)564    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64)565    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)566    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]567    ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]568    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)569    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)570    ; CHECK-NEXT: [[UV4:%[0-9]+]]:vgpr(s32), [[UV5:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY4]](s64)571    ; CHECK-NEXT: [[UV6:%[0-9]+]]:vgpr(s32), [[UV7:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)572    ; CHECK-NEXT: [[OR2:%[0-9]+]]:vgpr(s32) = G_OR [[UV4]], [[UV6]]573    ; CHECK-NEXT: [[OR3:%[0-9]+]]:vgpr(s32) = G_OR [[UV5]], [[UV7]]574    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR2]](s32), [[OR3]](s32)575    ; CHECK-NEXT: S_NOP 0, implicit [[MV1]](s64)576    %0:_(s64) = COPY $sgpr0_sgpr1577    %1:_(s64) = COPY $sgpr2_sgpr3578    %2:_(s64) = COPY $vgpr0_vgpr1579    %3:_(s64) = G_OR %0, %2580    %4:_(s64) = G_OR %1, %3581    S_NOP 0, implicit %4582...583 584---585name: or_v2i32_ss586legalized: true587 588body: |589  bb.0:590    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3591    ; CHECK-LABEL: name: or_v2i32_ss592    ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3593    ; CHECK-NEXT: {{  $}}594    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1595    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3596    ; CHECK-NEXT: [[OR:%[0-9]+]]:sgpr(<2 x s32>) = G_OR [[COPY]], [[COPY1]]597    ; CHECK-NEXT: S_NOP 0, implicit [[OR]](<2 x s32>)598    %0:_(<2 x s32>) = COPY $sgpr0_sgpr1599    %1:_(<2 x s32>) = COPY $sgpr2_sgpr3600    %2:_(<2 x s32>) = G_OR %0, %1601    S_NOP 0, implicit %2602...603 604---605name: or_v2i32_sv606legalized: true607 608body: |609  bb.0:610    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1611    ; CHECK-LABEL: name: or_v2i32_sv612    ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1613    ; CHECK-NEXT: {{  $}}614    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1615    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1616    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s32>) = COPY [[COPY]](<2 x s32>)617    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)618    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)619    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]620    ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]621    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[OR]](s32), [[OR1]](s32)622    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>)623    %0:_(<2 x s32>) = COPY $sgpr0_sgpr1624    %1:_(<2 x s32>) = COPY $vgpr0_vgpr1625    %2:_(<2 x s32>) = G_OR %0, %1626    S_NOP 0, implicit %2627...628 629---630name: or_v2i32_vs631legalized: true632 633body: |634  bb.0:635    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1636 637    ; CHECK-LABEL: name: or_v2i32_vs638    ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1639    ; CHECK-NEXT: {{  $}}640    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1641    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1642    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s32>) = COPY [[COPY1]](<2 x s32>)643    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)644    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)645    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]646    ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]647    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[OR]](s32), [[OR1]](s32)648    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>)649    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1650    %1:_(<2 x s32>) = COPY $sgpr0_sgpr1651    %2:_(<2 x s32>) = G_OR %0, %1652    S_NOP 0, implicit %2653...654 655---656name: or_v2i32_vv657legalized: true658 659body: |660  bb.0:661    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3662    ; CHECK-LABEL: name: or_v2i32_vv663    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3664    ; CHECK-NEXT: {{  $}}665    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1666    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3667    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)668    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)669    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]670    ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]671    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[OR]](s32), [[OR1]](s32)672    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>)673    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1674    %1:_(<2 x s32>) = COPY $vgpr2_vgpr3675    %2:_(<2 x s32>) = G_OR %0, %1676    S_NOP 0, implicit %2677...678 679---680name: or_v4s16_ss681legalized: true682 683body: |684  bb.0:685    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3686    ; CHECK-LABEL: name: or_v4s16_ss687    ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3688    ; CHECK-NEXT: {{  $}}689    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1690    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3691    ; CHECK-NEXT: [[OR:%[0-9]+]]:sgpr(<4 x s16>) = G_OR [[COPY]], [[COPY1]]692    %0:_(<4 x s16>) = COPY $sgpr0_sgpr1693    %1:_(<4 x s16>) = COPY $sgpr2_sgpr3694    %2:_(<4 x s16>) = G_OR %0, %1695...696 697---698name: or_v4s16_sv699legalized: true700 701body: |702  bb.0:703    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1704    ; CHECK-LABEL: name: or_v4s16_sv705    ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1706    ; CHECK-NEXT: {{  $}}707    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1708    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1709    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<4 x s16>) = COPY [[COPY]](<4 x s16>)710    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>)711    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY1]](<4 x s16>)712    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[UV]], [[UV2]]713    ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[UV1]], [[UV3]]714    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[OR]](<2 x s16>), [[OR1]](<2 x s16>)715    %0:_(<4 x s16>) = COPY $sgpr0_sgpr1716    %1:_(<4 x s16>) = COPY $vgpr0_vgpr1717    %2:_(<4 x s16>) = G_OR %0, %1718...719 720---721name: or_v4s16_vs722legalized: true723 724body: |725  bb.0:726    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1727    ; CHECK-LABEL: name: or_v4s16_vs728    ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1729    ; CHECK-NEXT: {{  $}}730    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1731    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1732    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<4 x s16>) = COPY [[COPY1]](<4 x s16>)733    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)734    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>)735    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[UV]], [[UV2]]736    ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[UV1]], [[UV3]]737    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[OR]](<2 x s16>), [[OR1]](<2 x s16>)738    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1739    %1:_(<4 x s16>) = COPY $sgpr0_sgpr1740    %2:_(<4 x s16>) = G_OR %0, %1741...742 743---744name: or_v4s16_vv745legalized: true746 747body: |748  bb.0:749    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3750    ; CHECK-LABEL: name: or_v4s16_vv751    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3752    ; CHECK-NEXT: {{  $}}753    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1754    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3755    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)756    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY1]](<4 x s16>)757    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[UV]], [[UV2]]758    ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[UV1]], [[UV3]]759    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[OR]](<2 x s16>), [[OR1]](<2 x s16>)760    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1761    %1:_(<4 x s16>) = COPY $vgpr2_vgpr3762    %2:_(<4 x s16>) = G_OR %0, %1763...764 765---766name: or_v2s16_ss767legalized: true768 769body: |770  bb.0:771    liveins: $sgpr0, $sgpr1772    ; CHECK-LABEL: name: or_v2s16_ss773    ; CHECK: liveins: $sgpr0, $sgpr1774    ; CHECK-NEXT: {{  $}}775    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0776    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr1777    ; CHECK-NEXT: [[OR:%[0-9]+]]:sgpr(<2 x s16>) = G_OR [[COPY]], [[COPY1]]778    %0:_(<2 x s16>) = COPY $sgpr0779    %1:_(<2 x s16>) = COPY $sgpr1780    %2:_(<2 x s16>) = G_OR %0, %1781...782 783---784name: or_v2s16_sv785legalized: true786 787body: |788  bb.0:789    liveins: $sgpr0, $vgpr0790    ; CHECK-LABEL: name: or_v2s16_sv791    ; CHECK: liveins: $sgpr0, $vgpr0792    ; CHECK-NEXT: {{  $}}793    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0794    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0795    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY]](<2 x s16>)796    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[COPY2]], [[COPY1]]797    %0:_(<2 x s16>) = COPY $sgpr0798    %1:_(<2 x s16>) = COPY $vgpr0799    %2:_(<2 x s16>) = G_OR %0, %1800...801 802---803name: or_v2s16_vs804legalized: true805 806body: |807  bb.0:808    liveins: $sgpr0, $vgpr0809    ; CHECK-LABEL: name: or_v2s16_vs810    ; CHECK: liveins: $sgpr0, $vgpr0811    ; CHECK-NEXT: {{  $}}812    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0813    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0814    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY1]](<2 x s16>)815    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[COPY]], [[COPY2]]816    %0:_(<2 x s16>) = COPY $vgpr0817    %1:_(<2 x s16>) = COPY $sgpr0818    %2:_(<2 x s16>) = G_OR %0, %1819...820 821---822name: or_v2s16_vv823legalized: true824 825body: |826  bb.0:827    liveins: $vgpr0, $vgpr1828    ; CHECK-LABEL: name: or_v2s16_vv829    ; CHECK: liveins: $vgpr0, $vgpr1830    ; CHECK-NEXT: {{  $}}831    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0832    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr1833    ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[COPY]], [[COPY1]]834    %0:_(<2 x s16>) = COPY $vgpr0835    %1:_(<2 x s16>) = COPY $vgpr1836    %2:_(<2 x s16>) = G_OR %0, %1837...838