brintos

brintos / llvm-project-archived public Read only

0
0
Text · 31.4 KiB · 0ebb134 Raw
842 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: xor_s32_ss6legalized: true7 8body: |9  bb.0:10    liveins: $sgpr0, $sgpr111    ; CHECK-LABEL: name: xor_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: [[XOR:%[0-9]+]]:sgpr(s32) = G_XOR [[COPY]], [[COPY1]]17    %0:_(s32) = COPY $sgpr018    %1:_(s32) = COPY $sgpr119    %2:_(s32) = G_XOR %0, %120...21 22---23name: xor_s32_sv24legalized: true25 26body: |27  bb.0:28    liveins: $sgpr0, $vgpr029    ; CHECK-LABEL: name: xor_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: [[XOR:%[0-9]+]]:vgpr(s32) = G_XOR [[COPY2]], [[COPY1]]36    %0:_(s32) = COPY $sgpr037    %1:_(s32) = COPY $vgpr038    %2:_(s32) = G_XOR %0, %139...40 41---42name: xor_s32_vs43legalized: true44 45body: |46  bb.0:47    liveins: $sgpr0, $vgpr048    ; CHECK-LABEL: name: xor_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: [[XOR:%[0-9]+]]:vgpr(s32) = G_XOR [[COPY]], [[COPY2]]55    %0:_(s32) = COPY $vgpr056    %1:_(s32) = COPY $sgpr057    %2:_(s32) = G_XOR %0, %158...59 60---61name: xor_s32_vv62legalized: true63 64body: |65  bb.0:66    liveins: $vgpr0, $vgpr167    ; CHECK-LABEL: name: xor_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: [[XOR:%[0-9]+]]:vgpr(s32) = G_XOR [[COPY]], [[COPY1]]73    %0:_(s32) = COPY $vgpr074    %1:_(s32) = COPY $vgpr175    %2:_(s32) = G_XOR %0, %176...77 78---79name: xor_i1_scc_scc80legalized: true81 82body: |83  bb.0:84    liveins: $sgpr0, $sgpr185    ; CHECK-LABEL: name: xor_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: [[XOR:%[0-9]+]]:sgpr(s32) = G_XOR [[ICMP]], [[ICMP1]]94    ; CHECK-NEXT: S_NOP 0, implicit [[XOR]](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_XOR %4, %5101      %7:_(s32) = G_ANYEXT %6102      S_NOP 0, implicit %7103...104 105---106name: xor_i1_vcc_vcc107legalized: true108 109body: |110  bb.0:111    liveins: $vgpr0, $vgpr1112    ; CHECK-LABEL: name: xor_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: [[XOR:%[0-9]+]]:vcc(s1) = G_XOR [[ICMP]], [[ICMP1]]123    ; CHECK-NEXT: S_NOP 0, implicit [[XOR]](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_XOR %4, %5130      S_NOP 0, implicit %6131...132 133---134name: xor_i1_scc_vcc135legalized: true136 137body: |138  bb.0:139    liveins: $sgpr0, $vgpr0140    ; CHECK-LABEL: name: xor_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: [[XOR:%[0-9]+]]:vcc(s1) = G_XOR [[AMDGPU_COPY_VCC_SCC]], [[ICMP1]]151    ; CHECK-NEXT: S_NOP 0, implicit [[XOR]](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_XOR %4, %5158      S_NOP 0, implicit %6159...160 161---162name: xor_i1_sgpr_trunc_sgpr_trunc163legalized: true164body:             |165  bb.0.entry:166    liveins: $sgpr0, $sgpr1167    ; CHECK-LABEL: name: xor_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: [[XOR:%[0-9]+]]:sgpr(s32) = G_XOR [[COPY]], [[COPY1]]173    ; CHECK-NEXT: S_NOP 0, implicit [[XOR]](s32)174    %0:_(s32) = COPY $sgpr0175    %1:_(s32) = COPY $sgpr1176    %2:_(s1) = G_TRUNC %0177    %3:_(s1) = G_TRUNC %1178    %4:_(s1) = G_XOR %2, %3179    %5:_(s32) = G_ANYEXT %4180    S_NOP 0, implicit %5181 182...183 184---185name: xor_i1_trunc_scc186legalized: true187body:             |188  bb.0.entry:189    liveins: $sgpr0, $sgpr1190    ; CHECK-LABEL: name: xor_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: [[XOR:%[0-9]+]]:sgpr(s32) = G_XOR [[COPY]], [[ICMP]]197    ; CHECK-NEXT: S_NOP 0, implicit [[XOR]](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_XOR %2, %3203    %5:_(s32) = G_ANYEXT %4204    S_NOP 0, implicit %5205...206 207---208name: xor_i1_s_trunc_vcc209legalized: true210body:             |211  bb.0.entry:212    liveins: $sgpr0, $vgpr0213    ; CHECK-LABEL: name: xor_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: [[XOR:%[0-9]+]]:vcc(s1) = G_XOR [[AMDGPU_COPY_VCC_SCC]], [[ICMP]]222    ; CHECK-NEXT: S_NOP 0, implicit [[XOR]](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_XOR %2, %3228    S_NOP 0, implicit %4229...230 231---232name: xor_s64_ss233legalized: true234 235body: |236  bb.0:237    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3238    ; CHECK-LABEL: name: xor_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: [[XOR:%[0-9]+]]:sgpr(s64) = G_XOR [[COPY]], [[COPY1]]244    %0:_(s64) = COPY $sgpr0_sgpr1245    %1:_(s64) = COPY $sgpr2_sgpr3246    %2:_(s64) = G_XOR %0, %1247...248 249---250name: xor_s64_sv251legalized: true252 253body: |254  bb.0:255    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1256    ; CHECK-LABEL: name: xor_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: [[XOR:%[0-9]+]]:vgpr(s32) = G_XOR [[UV]], [[UV2]]265    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:vgpr(s32) = G_XOR [[UV1]], [[UV3]]266    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[XOR]](s32), [[XOR1]](s32)267    %0:_(s64) = COPY $sgpr0_sgpr1268    %1:_(s64) = COPY $vgpr0_vgpr1269    %2:_(s64) = G_XOR %0, %1270...271 272---273name: xor_s64_vs274legalized: true275 276body: |277  bb.0:278    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1279    ; CHECK-LABEL: name: xor_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: [[XOR:%[0-9]+]]:vgpr(s32) = G_XOR [[UV]], [[UV2]]288    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:vgpr(s32) = G_XOR [[UV1]], [[UV3]]289    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[XOR]](s32), [[XOR1]](s32)290    %0:_(s64) = COPY $vgpr0_vgpr1291    %1:_(s64) = COPY $sgpr0_sgpr1292    %2:_(s64) = G_XOR %0, %1293...294 295---296name: xor_s64_vv297legalized: true298 299body: |300  bb.0:301    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3302    ; CHECK-LABEL: name: xor_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: [[XOR:%[0-9]+]]:vgpr(s32) = G_XOR [[UV]], [[UV2]]310    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:vgpr(s32) = G_XOR [[UV1]], [[UV3]]311    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[XOR]](s32), [[XOR1]](s32)312    %0:_(s64) = COPY $vgpr0_vgpr1313    %1:_(s64) = COPY $vgpr2_vgpr3314    %2:_(s64) = G_XOR %0, %1315...316 317---318name: xor_s64_vv_user319legalized: true320 321body: |322  bb.0:323    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3324    ; CHECK-LABEL: name: xor_s64_vv_user325    ; 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: [[XOR:%[0-9]+]]:vgpr(s32) = G_XOR [[UV]], [[UV2]]332    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:vgpr(s32) = G_XOR [[UV1]], [[UV3]]333    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[XOR]](s32), [[XOR1]](s32)334    ; CHECK-NEXT: S_NOP 0, implicit [[MV]](s64)335    %0:_(s64) = COPY $vgpr0_vgpr1336    %1:_(s64) = COPY $vgpr2_vgpr3337    %2:_(s64) = G_XOR %0, %1338    S_NOP 0, implicit %2339...340---341name: xor_s64_ss_ss_merge342legalized: true343 344body: |345  bb.0:346    liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3347    ; CHECK-LABEL: name: xor_s64_ss_ss_merge348    ; CHECK: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3349    ; CHECK-NEXT: {{  $}}350    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0351    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1352    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2353    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY $sgpr3354    ; CHECK-NEXT: [[MV:%[0-9]+]]:sgpr(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)355    ; CHECK-NEXT: [[MV1:%[0-9]+]]:sgpr(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)356    ; CHECK-NEXT: [[XOR:%[0-9]+]]:sgpr(s64) = G_XOR [[MV]], [[MV1]]357    ; CHECK-NEXT: S_NOP 0, implicit [[XOR]](s64)358    %0:_(s32) = COPY $sgpr0359    %1:_(s32) = COPY $sgpr1360    %2:_(s32) = COPY $sgpr2361    %3:_(s32) = COPY $sgpr3362    %4:_(s64) = G_MERGE_VALUES %0, %1363    %5:_(s64) = G_MERGE_VALUES %2, %3364    %6:_(s64) = G_XOR %4, %5365    S_NOP 0, implicit %6366...367 368---369name: xor_s64_vv_vv_merge370legalized: true371 372body: |373  bb.0:374    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3375    ; CHECK-LABEL: name: xor_s64_vv_vv_merge376    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3377    ; CHECK-NEXT: {{  $}}378    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0379    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1380    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2381    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr3382    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)383    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)384    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)385    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV1]](s64)386    ; CHECK-NEXT: [[XOR:%[0-9]+]]:vgpr(s32) = G_XOR [[UV]], [[UV2]]387    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:vgpr(s32) = G_XOR [[UV1]], [[UV3]]388    ; CHECK-NEXT: [[MV2:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[XOR]](s32), [[XOR1]](s32)389    ; CHECK-NEXT: S_NOP 0, implicit [[MV2]](s64)390    %0:_(s32) = COPY $vgpr0391    %1:_(s32) = COPY $vgpr1392    %2:_(s32) = COPY $vgpr2393    %3:_(s32) = COPY $vgpr3394    %4:_(s64) = G_MERGE_VALUES %0, %1395    %5:_(s64) = G_MERGE_VALUES %2, %3396    %6:_(s64) = G_XOR %4, %5397    S_NOP 0, implicit %6398...399 400---401name: xor_s64_s_sv_merge402legalized: true403 404body: |405  bb.0:406    liveins: $sgpr0_sgpr1, $sgpr2, $vgpr0407    ; CHECK-LABEL: name: xor_s64_s_sv_merge408    ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2, $vgpr0409    ; CHECK-NEXT: {{  $}}410    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1411    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr2412    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0413    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)414    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY3]](s32), [[COPY2]](s32)415    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)416    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY4]](s64)417    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)418    ; CHECK-NEXT: [[XOR:%[0-9]+]]:vgpr(s32) = G_XOR [[UV]], [[UV2]]419    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:vgpr(s32) = G_XOR [[UV1]], [[UV3]]420    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[XOR]](s32), [[XOR1]](s32)421    ; CHECK-NEXT: S_NOP 0, implicit [[MV1]](s64)422    %0:_(s64) = COPY $sgpr0_sgpr1423    %1:_(s32) = COPY $sgpr2424    %2:_(s32) = COPY $vgpr0425    %3:_(s64) = G_MERGE_VALUES %1, %2426    %4:_(s64) = G_XOR %0, %3427    S_NOP 0, implicit %4428...429 430---431name: xor_s64_s_vs_merge432legalized: true433 434body: |435  bb.0:436    liveins: $sgpr0_sgpr1, $sgpr2, $vgpr0437    ; CHECK-LABEL: name: xor_s64_s_vs_merge438    ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2, $vgpr0439    ; CHECK-NEXT: {{  $}}440    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1441    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr2442    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0443    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)444    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)445    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)446    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY4]](s64)447    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)448    ; CHECK-NEXT: [[XOR:%[0-9]+]]:vgpr(s32) = G_XOR [[UV]], [[UV2]]449    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:vgpr(s32) = G_XOR [[UV1]], [[UV3]]450    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[XOR]](s32), [[XOR1]](s32)451    ; CHECK-NEXT: S_NOP 0, implicit [[MV1]](s64)452    %0:_(s64) = COPY $sgpr0_sgpr1453    %1:_(s32) = COPY $sgpr2454    %2:_(s32) = COPY $vgpr0455    %3:_(s64) = G_MERGE_VALUES %2, %1456    %4:_(s64) = G_XOR %0, %3457    S_NOP 0, implicit %4458...459 460---461name: xor_s64_sv_sv_merge462legalized: true463 464body: |465  bb.0:466    liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1467    ; CHECK-LABEL: name: xor_s64_sv_sv_merge468    ; CHECK: liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1469    ; CHECK-NEXT: {{  $}}470    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0471    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1472    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0473    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1474    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)475    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY2]](s32)476    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)477    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY5]](s32), [[COPY3]](s32)478    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)479    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV1]](s64)480    ; CHECK-NEXT: [[XOR:%[0-9]+]]:vgpr(s32) = G_XOR [[UV]], [[UV2]]481    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:vgpr(s32) = G_XOR [[UV1]], [[UV3]]482    ; CHECK-NEXT: [[MV2:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[XOR]](s32), [[XOR1]](s32)483    ; CHECK-NEXT: S_NOP 0, implicit [[MV2]](s64)484    %0:_(s32) = COPY $sgpr0485    %1:_(s32) = COPY $sgpr1486    %2:_(s32) = COPY $vgpr0487    %3:_(s32) = COPY $vgpr1488    %4:_(s64) = G_MERGE_VALUES %0, %2489    %5:_(s64) = G_MERGE_VALUES %1, %3490    %6:_(s64) = G_XOR %4, %5491    S_NOP 0, implicit %6492...493 494---495name: xor_s64_sv_vs_merge496legalized: true497 498body: |499  bb.0:500    liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1501    ; CHECK-LABEL: name: xor_s64_sv_vs_merge502    ; CHECK: liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1503    ; CHECK-NEXT: {{  $}}504    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0505    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1506    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0507    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1508    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)509    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY2]](s32)510    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)511    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY3]](s32), [[COPY5]](s32)512    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)513    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV1]](s64)514    ; CHECK-NEXT: [[XOR:%[0-9]+]]:vgpr(s32) = G_XOR [[UV]], [[UV2]]515    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:vgpr(s32) = G_XOR [[UV1]], [[UV3]]516    ; CHECK-NEXT: [[MV2:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[XOR]](s32), [[XOR1]](s32)517    ; CHECK-NEXT: S_NOP 0, implicit [[MV2]](s64)518    %0:_(s32) = COPY $sgpr0519    %1:_(s32) = COPY $sgpr1520    %2:_(s32) = COPY $vgpr0521    %3:_(s32) = COPY $vgpr1522    %4:_(s64) = G_MERGE_VALUES %0, %2523    %5:_(s64) = G_MERGE_VALUES %3, %1524    %6:_(s64) = G_XOR %4, %5525    S_NOP 0, implicit %6526...527 528---529name: xor_chain_s64_sv530legalized: true531 532body: |533  bb.0:534    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1535    ; CHECK-LABEL: name: xor_chain_s64_sv536    ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1537    ; CHECK-NEXT: {{  $}}538    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1539    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3540    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1541    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)542    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64)543    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)544    ; CHECK-NEXT: [[XOR:%[0-9]+]]:vgpr(s32) = G_XOR [[UV]], [[UV2]]545    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:vgpr(s32) = G_XOR [[UV1]], [[UV3]]546    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[XOR]](s32), [[XOR1]](s32)547    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)548    ; CHECK-NEXT: [[UV4:%[0-9]+]]:vgpr(s32), [[UV5:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY4]](s64)549    ; CHECK-NEXT: [[UV6:%[0-9]+]]:vgpr(s32), [[UV7:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)550    ; CHECK-NEXT: [[XOR2:%[0-9]+]]:vgpr(s32) = G_XOR [[UV4]], [[UV6]]551    ; CHECK-NEXT: [[XOR3:%[0-9]+]]:vgpr(s32) = G_XOR [[UV5]], [[UV7]]552    ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[XOR2]](s32), [[XOR3]](s32)553    ; CHECK-NEXT: S_NOP 0, implicit [[MV1]](s64)554    %0:_(s64) = COPY $sgpr0_sgpr1555    %1:_(s64) = COPY $sgpr2_sgpr3556    %2:_(s64) = COPY $vgpr0_vgpr1557    %3:_(s64) = G_XOR %0, %2558    %4:_(s64) = G_XOR %1, %3559    S_NOP 0, implicit %4560...561 562---563name: xor_v2i32_ss564legalized: true565 566body: |567  bb.0:568    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3569    ; CHECK-LABEL: name: xor_v2i32_ss570    ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3571    ; CHECK-NEXT: {{  $}}572    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1573    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3574    ; CHECK-NEXT: [[XOR:%[0-9]+]]:sgpr(<2 x s32>) = G_XOR [[COPY]], [[COPY1]]575    ; CHECK-NEXT: S_NOP 0, implicit [[XOR]](<2 x s32>)576    %0:_(<2 x s32>) = COPY $sgpr0_sgpr1577    %1:_(<2 x s32>) = COPY $sgpr2_sgpr3578    %2:_(<2 x s32>) = G_XOR %0, %1579    S_NOP 0, implicit %2580...581 582---583name: xor_v2i32_sv584legalized: true585 586body: |587  bb.0:588    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1589    ; CHECK-LABEL: name: xor_v2i32_sv590    ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1591    ; CHECK-NEXT: {{  $}}592    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1593    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1594    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s32>) = COPY [[COPY]](<2 x s32>)595    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)596    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)597    ; CHECK-NEXT: [[XOR:%[0-9]+]]:vgpr(s32) = G_XOR [[UV]], [[UV2]]598    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:vgpr(s32) = G_XOR [[UV1]], [[UV3]]599    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[XOR]](s32), [[XOR1]](s32)600    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>)601    %0:_(<2 x s32>) = COPY $sgpr0_sgpr1602    %1:_(<2 x s32>) = COPY $vgpr0_vgpr1603    %2:_(<2 x s32>) = G_XOR %0, %1604    S_NOP 0, implicit %2605...606 607---608name: xor_v2i32_vs609legalized: true610 611body: |612  bb.0:613    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1614 615    ; CHECK-LABEL: name: xor_v2i32_vs616    ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1617    ; CHECK-NEXT: {{  $}}618    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1619    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1620    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s32>) = COPY [[COPY1]](<2 x s32>)621    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)622    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)623    ; CHECK-NEXT: [[XOR:%[0-9]+]]:vgpr(s32) = G_XOR [[UV]], [[UV2]]624    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:vgpr(s32) = G_XOR [[UV1]], [[UV3]]625    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[XOR]](s32), [[XOR1]](s32)626    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>)627    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1628    %1:_(<2 x s32>) = COPY $sgpr0_sgpr1629    %2:_(<2 x s32>) = G_XOR %0, %1630    S_NOP 0, implicit %2631...632 633---634name: xor_v2i32_vv635legalized: true636 637body: |638  bb.0:639    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3640    ; CHECK-LABEL: name: xor_v2i32_vv641    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3642    ; CHECK-NEXT: {{  $}}643    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1644    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3645    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)646    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)647    ; CHECK-NEXT: [[XOR:%[0-9]+]]:vgpr(s32) = G_XOR [[UV]], [[UV2]]648    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:vgpr(s32) = G_XOR [[UV1]], [[UV3]]649    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[XOR]](s32), [[XOR1]](s32)650    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>)651    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1652    %1:_(<2 x s32>) = COPY $vgpr2_vgpr3653    %2:_(<2 x s32>) = G_XOR %0, %1654    S_NOP 0, implicit %2655...656 657---658name: xor_v4s16_ss659legalized: true660 661body: |662  bb.0:663    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3664    ; CHECK-LABEL: name: xor_v4s16_ss665    ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3666    ; CHECK-NEXT: {{  $}}667    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1668    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3669    ; CHECK-NEXT: [[XOR:%[0-9]+]]:sgpr(<4 x s16>) = G_XOR [[COPY]], [[COPY1]]670    %0:_(<4 x s16>) = COPY $sgpr0_sgpr1671    %1:_(<4 x s16>) = COPY $sgpr2_sgpr3672    %2:_(<4 x s16>) = G_XOR %0, %1673...674 675---676name: xor_v4s16_sv677legalized: true678 679body: |680  bb.0:681    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1682    ; CHECK-LABEL: name: xor_v4s16_sv683    ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1684    ; CHECK-NEXT: {{  $}}685    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1686    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1687    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<4 x s16>) = COPY [[COPY]](<4 x s16>)688    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>)689    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY1]](<4 x s16>)690    ; CHECK-NEXT: [[XOR:%[0-9]+]]:vgpr(<2 x s16>) = G_XOR [[UV]], [[UV2]]691    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:vgpr(<2 x s16>) = G_XOR [[UV1]], [[UV3]]692    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[XOR]](<2 x s16>), [[XOR1]](<2 x s16>)693    %0:_(<4 x s16>) = COPY $sgpr0_sgpr1694    %1:_(<4 x s16>) = COPY $vgpr0_vgpr1695    %2:_(<4 x s16>) = G_XOR %0, %1696...697 698---699name: xor_v4s16_vs700legalized: true701 702body: |703  bb.0:704    liveins: $sgpr0_sgpr1, $vgpr0_vgpr1705    ; CHECK-LABEL: name: xor_v4s16_vs706    ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1707    ; CHECK-NEXT: {{  $}}708    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1709    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1710    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<4 x s16>) = COPY [[COPY1]](<4 x s16>)711    ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)712    ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>)713    ; CHECK-NEXT: [[XOR:%[0-9]+]]:vgpr(<2 x s16>) = G_XOR [[UV]], [[UV2]]714    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:vgpr(<2 x s16>) = G_XOR [[UV1]], [[UV3]]715    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[XOR]](<2 x s16>), [[XOR1]](<2 x s16>)716    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1717    %1:_(<4 x s16>) = COPY $sgpr0_sgpr1718    %2:_(<4 x s16>) = G_XOR %0, %1719...720 721---722name: xor_v4s16_vv723legalized: true724 725body: |726  bb.0:727    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3728    ; CHECK-LABEL: name: xor_v4s16_vv729    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3730    ; CHECK-NEXT: {{  $}}731    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1732    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3733    ; 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 [[COPY1]](<4 x s16>)735    ; CHECK-NEXT: [[XOR:%[0-9]+]]:vgpr(<2 x s16>) = G_XOR [[UV]], [[UV2]]736    ; CHECK-NEXT: [[XOR1:%[0-9]+]]:vgpr(<2 x s16>) = G_XOR [[UV1]], [[UV3]]737    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[XOR]](<2 x s16>), [[XOR1]](<2 x s16>)738    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1739    %1:_(<4 x s16>) = COPY $vgpr2_vgpr3740    %2:_(<4 x s16>) = G_XOR %0, %1741...742 743---744name: xor_v2s16_ss745legalized: true746 747body: |748  bb.0:749    liveins: $sgpr0, $sgpr1750    ; CHECK-LABEL: name: xor_v2s16_ss751    ; CHECK: liveins: $sgpr0, $sgpr1752    ; CHECK-NEXT: {{  $}}753    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0754    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr1755    ; CHECK-NEXT: [[XOR:%[0-9]+]]:sgpr(<2 x s16>) = G_XOR [[COPY]], [[COPY1]]756    %0:_(<2 x s16>) = COPY $sgpr0757    %1:_(<2 x s16>) = COPY $sgpr1758    %2:_(<2 x s16>) = G_XOR %0, %1759...760 761---762name: xor_v2s16_sv763legalized: true764 765body: |766  bb.0:767    liveins: $sgpr0, $vgpr0768    ; CHECK-LABEL: name: xor_v2s16_sv769    ; CHECK: liveins: $sgpr0, $vgpr0770    ; CHECK-NEXT: {{  $}}771    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0772    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0773    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY]](<2 x s16>)774    ; CHECK-NEXT: [[XOR:%[0-9]+]]:vgpr(<2 x s16>) = G_XOR [[COPY2]], [[COPY1]]775    %0:_(<2 x s16>) = COPY $sgpr0776    %1:_(<2 x s16>) = COPY $vgpr0777    %2:_(<2 x s16>) = G_XOR %0, %1778...779 780---781name: xor_v2s16_vs782legalized: true783 784body: |785  bb.0:786    liveins: $sgpr0, $vgpr0787    ; CHECK-LABEL: name: xor_v2s16_vs788    ; CHECK: liveins: $sgpr0, $vgpr0789    ; CHECK-NEXT: {{  $}}790    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0791    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0792    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY1]](<2 x s16>)793    ; CHECK-NEXT: [[XOR:%[0-9]+]]:vgpr(<2 x s16>) = G_XOR [[COPY]], [[COPY2]]794    %0:_(<2 x s16>) = COPY $vgpr0795    %1:_(<2 x s16>) = COPY $sgpr0796    %2:_(<2 x s16>) = G_XOR %0, %1797...798 799---800name: xor_v2s16_vv801legalized: true802 803body: |804  bb.0:805    liveins: $vgpr0, $vgpr1806    ; CHECK-LABEL: name: xor_v2s16_vv807    ; CHECK: liveins: $vgpr0, $vgpr1808    ; CHECK-NEXT: {{  $}}809    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0810    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr1811    ; CHECK-NEXT: [[XOR:%[0-9]+]]:vgpr(<2 x s16>) = G_XOR [[COPY]], [[COPY1]]812    %0:_(<2 x s16>) = COPY $vgpr0813    %1:_(<2 x s16>) = COPY $vgpr1814    %2:_(<2 x s16>) = G_XOR %0, %1815...816 817---818name: xor_i1_vcc_constant819legalized: true820 821body: |822  bb.0:823    liveins: $vgpr0, $vgpr1824    ; CHECK-LABEL: name: xor_i1_vcc_constant825    ; CHECK: liveins: $vgpr0, $vgpr1826    ; CHECK-NEXT: {{  $}}827    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0828    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0829    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32)830    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]831    ; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1832    ; CHECK-NEXT: [[AMDGPU_COPY_VCC_SCC:%[0-9]+]]:vcc(s1) = G_AMDGPU_COPY_VCC_SCC [[C1]](s32)833    ; CHECK-NEXT: [[XOR:%[0-9]+]]:vcc(s1) = G_XOR [[ICMP]], [[AMDGPU_COPY_VCC_SCC]]834    ; CHECK-NEXT: S_NOP 0, implicit [[XOR]](s1)835      %0:_(s32) = COPY $vgpr0836      %1:_(s32) = G_CONSTANT i32 0837      %2:_(s1) = G_ICMP intpred(ne), %0, %1838      %3:_(s1) = G_CONSTANT i1 true839      %4:_(s1) = G_XOR %2, %3840      S_NOP 0, implicit %4841...842