brintos

brintos / llvm-project-archived public Read only

0
0
Text · 46.6 KiB · 2d5bf68 Raw
954 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple=amdgcn -mcpu=hawaii  -run-pass=legalizer -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX7 %s3# RUN: llc -O0 -mtriple=amdgcn -mcpu=fiji  -run-pass=legalizer -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX8 %s4# RUN: llc -O0 -mtriple=amdgcn -mcpu=gfx900  -run-pass=legalizer -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX9 %s5# RUN: llc -O0 -mtriple=amdgcn -mcpu=gfx1010  -run-pass=legalizer -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX9 %s6# RUN: llc -O0 -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16  -run-pass=legalizer -verify-machineinstrs -o - %s | FileCheck -check-prefixes=GFX9 %s7 8---9name: test_icmp_s3210body: |11  bb.0:12    liveins: $vgpr013    ; GFX7-LABEL: name: test_icmp_s3214    ; GFX7: liveins: $vgpr015    ; GFX7-NEXT: {{  $}}16    ; GFX7-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 017    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr018    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]]19    ; GFX7-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]]20    ; GFX7-NEXT: $vgpr0 = COPY [[SELECT]](s32)21    ;22    ; GFX8-LABEL: name: test_icmp_s3223    ; GFX8: liveins: $vgpr024    ; GFX8-NEXT: {{  $}}25    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 026    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr027    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]]28    ; GFX8-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]]29    ; GFX8-NEXT: $vgpr0 = COPY [[SELECT]](s32)30    ;31    ; GFX9-LABEL: name: test_icmp_s3232    ; GFX9: liveins: $vgpr033    ; GFX9-NEXT: {{  $}}34    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 035    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr036    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]]37    ; GFX9-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]]38    ; GFX9-NEXT: $vgpr0 = COPY [[SELECT]](s32)39    %0:_(s32) = G_CONSTANT i32 040    %1:_(s32) = COPY $vgpr041    %2:_(s1) = G_ICMP intpred(ne), %0, %142    %3:_(s32) = G_SELECT %2, %0, %143    $vgpr0 = COPY %344...45 46---47name: test_icmp_s6448body: |49  bb.0:50    liveins: $vgpr0_vgpr151    ; GFX7-LABEL: name: test_icmp_s6452    ; GFX7: liveins: $vgpr0_vgpr153    ; GFX7-NEXT: {{  $}}54    ; GFX7-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 055    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr156    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s64), [[COPY]]57    ; GFX7-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]]58    ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[SELECT]](s64)59    ;60    ; GFX8-LABEL: name: test_icmp_s6461    ; GFX8: liveins: $vgpr0_vgpr162    ; GFX8-NEXT: {{  $}}63    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 064    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr165    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s64), [[COPY]]66    ; GFX8-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]]67    ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[SELECT]](s64)68    ;69    ; GFX9-LABEL: name: test_icmp_s6470    ; GFX9: liveins: $vgpr0_vgpr171    ; GFX9-NEXT: {{  $}}72    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 073    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr174    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s64), [[COPY]]75    ; GFX9-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]]76    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[SELECT]](s64)77    %0:_(s64) = G_CONSTANT i64 078    %1:_(s64) = COPY $vgpr0_vgpr179    %2:_(s1) = G_ICMP intpred(ne), %0, %180    %3:_(s64) = G_SELECT %2, %0, %181    $vgpr0_vgpr1 = COPY %382...83 84---85name: test_icmp_s1686body: |87  bb.0:88    liveins: $vgpr089    ; GFX7-LABEL: name: test_icmp_s1690    ; GFX7: liveins: $vgpr091    ; GFX7-NEXT: {{  $}}92    ; GFX7-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 093    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr094    ; GFX7-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)95    ; GFX7-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 096    ; GFX7-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 6553597    ; GFX7-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C2]]98    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C1]](s32), [[AND]]99    ; GFX7-NEXT: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[C]], [[TRUNC]]100    ; GFX7-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16)101    ; GFX7-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)102    ;103    ; GFX8-LABEL: name: test_icmp_s16104    ; GFX8: liveins: $vgpr0105    ; GFX8-NEXT: {{  $}}106    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 0107    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0108    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)109    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s16), [[TRUNC]]110    ; GFX8-NEXT: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[C]], [[TRUNC]]111    ; GFX8-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16)112    ; GFX8-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)113    ;114    ; GFX9-LABEL: name: test_icmp_s16115    ; GFX9: liveins: $vgpr0116    ; GFX9-NEXT: {{  $}}117    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 0118    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0119    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)120    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s16), [[TRUNC]]121    ; GFX9-NEXT: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[C]], [[TRUNC]]122    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16)123    ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)124    %0:_(s16) = G_CONSTANT i16 0125    %1:_(s32) = COPY $vgpr0126    %2:_(s16) = G_TRUNC %1127    %3:_(s1) = G_ICMP intpred(ne), %0, %2128    %4:_(s16) = G_SELECT %3, %0, %2129    %5:_(s32) = G_ANYEXT %4130    $vgpr0 = COPY %5131...132 133---134name: test_icmp_s8135body: |136  bb.0:137    liveins: $vgpr0138    ; GFX7-LABEL: name: test_icmp_s8139    ; GFX7: liveins: $vgpr0140    ; GFX7-NEXT: {{  $}}141    ; GFX7-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0142    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0143    ; GFX7-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 255144    ; GFX7-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]145    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[AND]]146    ; GFX7-NEXT: [[C2:%[0-9]+]]:_(s16) = G_CONSTANT i16 0147    ; GFX7-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)148    ; GFX7-NEXT: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[C2]], [[TRUNC]]149    ; GFX7-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16)150    ; GFX7-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)151    ;152    ; GFX8-LABEL: name: test_icmp_s8153    ; GFX8: liveins: $vgpr0154    ; GFX8-NEXT: {{  $}}155    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0156    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0157    ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 255158    ; GFX8-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]159    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[AND]]160    ; GFX8-NEXT: [[C2:%[0-9]+]]:_(s16) = G_CONSTANT i16 0161    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)162    ; GFX8-NEXT: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[C2]], [[TRUNC]]163    ; GFX8-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16)164    ; GFX8-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)165    ;166    ; GFX9-LABEL: name: test_icmp_s8167    ; GFX9: liveins: $vgpr0168    ; GFX9-NEXT: {{  $}}169    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0170    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0171    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 255172    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]173    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[AND]]174    ; GFX9-NEXT: [[C2:%[0-9]+]]:_(s16) = G_CONSTANT i16 0175    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)176    ; GFX9-NEXT: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[C2]], [[TRUNC]]177    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16)178    ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)179    %0:_(s8) = G_CONSTANT i8 0180    %1:_(s32) = COPY $vgpr0181    %2:_(s8) = G_TRUNC %1182    %3:_(s1) = G_ICMP intpred(ne), %0, %2183    %4:_(s8) = G_SELECT %3, %0, %2184    %5:_(s32) = G_ANYEXT %4185    $vgpr0 = COPY %5186...187 188---189name: test_icmp_s24190body: |191  bb.0:192    liveins: $vgpr0193    ; GFX7-LABEL: name: test_icmp_s24194    ; GFX7: liveins: $vgpr0195    ; GFX7-NEXT: {{  $}}196    ; GFX7-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0197    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0198    ; GFX7-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16777215199    ; GFX7-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]200    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[AND]]201    ; GFX7-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]]202    ; GFX7-NEXT: $vgpr0 = COPY [[SELECT]](s32)203    ;204    ; GFX8-LABEL: name: test_icmp_s24205    ; GFX8: liveins: $vgpr0206    ; GFX8-NEXT: {{  $}}207    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0208    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0209    ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16777215210    ; GFX8-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]211    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[AND]]212    ; GFX8-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]]213    ; GFX8-NEXT: $vgpr0 = COPY [[SELECT]](s32)214    ;215    ; GFX9-LABEL: name: test_icmp_s24216    ; GFX9: liveins: $vgpr0217    ; GFX9-NEXT: {{  $}}218    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0219    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0220    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16777215221    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]222    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[AND]]223    ; GFX9-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]]224    ; GFX9-NEXT: $vgpr0 = COPY [[SELECT]](s32)225    %0:_(s24) = G_CONSTANT i24 0226    %1:_(s32) = COPY $vgpr0227    %2:_(s24) = G_TRUNC %1228    %3:_(s1) = G_ICMP intpred(ne), %0, %2229    %4:_(s24) = G_SELECT %3, %0, %2230    %5:_(s32) = G_ANYEXT %4231    $vgpr0 = COPY %5232...233 234---235name: test_icmp_v2s32236body: |237  bb.0:238    liveins: $vgpr0_vgpr1239    ; GFX7-LABEL: name: test_icmp_v2s32240    ; GFX7: liveins: $vgpr0_vgpr1241    ; GFX7-NEXT: {{  $}}242    ; GFX7-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0243    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1244    ; GFX7-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)245    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[UV]]246    ; GFX7-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[UV1]]247    ; GFX7-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1)248    ; GFX7-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1)249    ; GFX7-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1250    ; GFX7-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C1]]251    ; GFX7-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C1]]252    ; GFX7-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32)253    ; GFX7-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>)254    ;255    ; GFX8-LABEL: name: test_icmp_v2s32256    ; GFX8: liveins: $vgpr0_vgpr1257    ; GFX8-NEXT: {{  $}}258    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0259    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1260    ; GFX8-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)261    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[UV]]262    ; GFX8-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[UV1]]263    ; GFX8-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1)264    ; GFX8-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1)265    ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1266    ; GFX8-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C1]]267    ; GFX8-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C1]]268    ; GFX8-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32)269    ; GFX8-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>)270    ;271    ; GFX9-LABEL: name: test_icmp_v2s32272    ; GFX9: liveins: $vgpr0_vgpr1273    ; GFX9-NEXT: {{  $}}274    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0275    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1276    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)277    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[UV]]278    ; GFX9-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[UV1]]279    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1)280    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1281    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C1]]282    ; GFX9-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1)283    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C1]]284    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32)285    ; GFX9-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>)286    %0:_(s32) = G_CONSTANT i32 0287    %1:_(<2 x s32>) = G_BUILD_VECTOR %0, %0288    %2:_(<2 x s32>) = COPY $vgpr0_vgpr1289    %3:_(<2 x s1>) = G_ICMP intpred(ne), %1, %2290    %4:_(<2 x s32>) = G_ZEXT %3291    S_NOP 0, implicit %4292...293 294---295name: test_icmp_v3s32296body: |297  bb.0:298    liveins: $vgpr0_vgpr1_vgpr2299 300    ; GFX7-LABEL: name: test_icmp_v3s32301    ; GFX7: liveins: $vgpr0_vgpr1_vgpr2302    ; GFX7-NEXT: {{  $}}303    ; GFX7-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF304    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2305    ; GFX7-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)306    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[DEF]](s32), [[UV]]307    ; GFX7-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[DEF]](s32), [[UV1]]308    ; GFX7-NEXT: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[DEF]](s32), [[UV2]]309    ; GFX7-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1)310    ; GFX7-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1)311    ; GFX7-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP2]](s1)312    ; GFX7-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1313    ; GFX7-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]]314    ; GFX7-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C]]315    ; GFX7-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[ANYEXT2]], [[C]]316    ; GFX7-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32), [[AND2]](s32)317    ; GFX7-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s32>)318    ;319    ; GFX8-LABEL: name: test_icmp_v3s32320    ; GFX8: liveins: $vgpr0_vgpr1_vgpr2321    ; GFX8-NEXT: {{  $}}322    ; GFX8-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF323    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2324    ; GFX8-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)325    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[DEF]](s32), [[UV]]326    ; GFX8-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[DEF]](s32), [[UV1]]327    ; GFX8-NEXT: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[DEF]](s32), [[UV2]]328    ; GFX8-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1)329    ; GFX8-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1)330    ; GFX8-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP2]](s1)331    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1332    ; GFX8-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]]333    ; GFX8-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C]]334    ; GFX8-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[ANYEXT2]], [[C]]335    ; GFX8-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32), [[AND2]](s32)336    ; GFX8-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s32>)337    ;338    ; GFX9-LABEL: name: test_icmp_v3s32339    ; GFX9: liveins: $vgpr0_vgpr1_vgpr2340    ; GFX9-NEXT: {{  $}}341    ; GFX9-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF342    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2343    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)344    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[DEF]](s32), [[UV]]345    ; GFX9-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[DEF]](s32), [[UV1]]346    ; GFX9-NEXT: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[DEF]](s32), [[UV2]]347    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1)348    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1349    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]]350    ; GFX9-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1)351    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C]]352    ; GFX9-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP2]](s1)353    ; GFX9-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[ANYEXT2]], [[C]]354    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32), [[AND2]](s32)355    ; GFX9-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s32>)356    %0:_(<3 x s32>) = G_IMPLICIT_DEF357    %1:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2358    %2:_(<3 x s1>) = G_ICMP intpred(ne), %0, %1359    %3:_(<3 x s32>) = G_ZEXT %2360    S_NOP 0, implicit %3361...362 363---364name: test_icmp_v4s32365body: |366  bb.0:367    liveins: $vgpr0_vgpr1_vgpr2_vgpr3368 369    ; GFX7-LABEL: name: test_icmp_v4s32370    ; GFX7: liveins: $vgpr0_vgpr1_vgpr2_vgpr3371    ; GFX7-NEXT: {{  $}}372    ; GFX7-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF373    ; GFX7-NEXT: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[DEF]](p1) :: (volatile load (<4 x s32>))374    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3375    ; GFX7-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<4 x s32>)376    ; GFX7-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)377    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV4]]378    ; GFX7-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV5]]379    ; GFX7-NEXT: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV2]](s32), [[UV6]]380    ; GFX7-NEXT: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV3]](s32), [[UV7]]381    ; GFX7-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1)382    ; GFX7-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1)383    ; GFX7-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP2]](s1)384    ; GFX7-NEXT: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP3]](s1)385    ; GFX7-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1386    ; GFX7-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]]387    ; GFX7-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C]]388    ; GFX7-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[ANYEXT2]], [[C]]389    ; GFX7-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[ANYEXT3]], [[C]]390    ; GFX7-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32), [[AND2]](s32), [[AND3]](s32)391    ; GFX7-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<4 x s32>)392    ;393    ; GFX8-LABEL: name: test_icmp_v4s32394    ; GFX8: liveins: $vgpr0_vgpr1_vgpr2_vgpr3395    ; GFX8-NEXT: {{  $}}396    ; GFX8-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF397    ; GFX8-NEXT: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[DEF]](p1) :: (volatile load (<4 x s32>))398    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3399    ; GFX8-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<4 x s32>)400    ; GFX8-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)401    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV4]]402    ; GFX8-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV5]]403    ; GFX8-NEXT: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV2]](s32), [[UV6]]404    ; GFX8-NEXT: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV3]](s32), [[UV7]]405    ; GFX8-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1)406    ; GFX8-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1)407    ; GFX8-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP2]](s1)408    ; GFX8-NEXT: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP3]](s1)409    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1410    ; GFX8-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]]411    ; GFX8-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C]]412    ; GFX8-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[ANYEXT2]], [[C]]413    ; GFX8-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[ANYEXT3]], [[C]]414    ; GFX8-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32), [[AND2]](s32), [[AND3]](s32)415    ; GFX8-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<4 x s32>)416    ;417    ; GFX9-LABEL: name: test_icmp_v4s32418    ; GFX9: liveins: $vgpr0_vgpr1_vgpr2_vgpr3419    ; GFX9-NEXT: {{  $}}420    ; GFX9-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF421    ; GFX9-NEXT: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[DEF]](p1) :: (volatile load (<4 x s32>))422    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3423    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<4 x s32>)424    ; GFX9-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)425    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV4]]426    ; GFX9-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV5]]427    ; GFX9-NEXT: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV2]](s32), [[UV6]]428    ; GFX9-NEXT: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV3]](s32), [[UV7]]429    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1)430    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1431    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]]432    ; GFX9-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1)433    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C]]434    ; GFX9-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP2]](s1)435    ; GFX9-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[ANYEXT2]], [[C]]436    ; GFX9-NEXT: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP3]](s1)437    ; GFX9-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[ANYEXT3]], [[C]]438    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32), [[AND2]](s32), [[AND3]](s32)439    ; GFX9-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<4 x s32>)440    %0:_(p1) = G_IMPLICIT_DEF441    %1:_(<4 x s32>) = G_LOAD %0 :: (volatile load (<4 x s32>))442    %2:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3443    %3:_(<4 x s1>) = G_ICMP intpred(ne), %1, %2444    %4:_(<4 x s32>) = G_ZEXT %3445    S_NOP 0, implicit %4446 447...448 449---450name: test_icmp_p0451body: |452  bb.0:453    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3454    ; GFX7-LABEL: name: test_icmp_p0455    ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3456    ; GFX7-NEXT: {{  $}}457    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1458    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1459    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p0), [[COPY1]]460    ; GFX7-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)461    ; GFX7-NEXT: $vgpr0 = COPY [[SEXT]](s32)462    ;463    ; GFX8-LABEL: name: test_icmp_p0464    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3465    ; GFX8-NEXT: {{  $}}466    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1467    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1468    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p0), [[COPY1]]469    ; GFX8-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)470    ; GFX8-NEXT: $vgpr0 = COPY [[SEXT]](s32)471    ;472    ; GFX9-LABEL: name: test_icmp_p0473    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3474    ; GFX9-NEXT: {{  $}}475    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1476    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1477    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p0), [[COPY1]]478    ; GFX9-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)479    ; GFX9-NEXT: $vgpr0 = COPY [[SEXT]](s32)480    %0:_(p0) = COPY $vgpr0_vgpr1481    %1:_(p0) = COPY $vgpr0_vgpr1482    %2:_(s1) = G_ICMP intpred(ne), %0, %1483    %3:_(s32) = G_SEXT %2484    $vgpr0 = COPY %3485...486 487---488name: test_icmp_p1489body: |490  bb.0:491    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3492    ; GFX7-LABEL: name: test_icmp_p1493    ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3494    ; GFX7-NEXT: {{  $}}495    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1496    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1497    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p1), [[COPY1]]498    ; GFX7-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)499    ; GFX7-NEXT: $vgpr0 = COPY [[SEXT]](s32)500    ;501    ; GFX8-LABEL: name: test_icmp_p1502    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3503    ; GFX8-NEXT: {{  $}}504    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1505    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1506    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p1), [[COPY1]]507    ; GFX8-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)508    ; GFX8-NEXT: $vgpr0 = COPY [[SEXT]](s32)509    ;510    ; GFX9-LABEL: name: test_icmp_p1511    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3512    ; GFX9-NEXT: {{  $}}513    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1514    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1515    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p1), [[COPY1]]516    ; GFX9-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)517    ; GFX9-NEXT: $vgpr0 = COPY [[SEXT]](s32)518    %0:_(p1) = COPY $vgpr0_vgpr1519    %1:_(p1) = COPY $vgpr0_vgpr1520    %2:_(s1) = G_ICMP intpred(ne), %0, %1521    %3:_(s32) = G_SEXT %2522    $vgpr0 = COPY %3523...524 525---526name: test_icmp_p2527body: |528  bb.0:529    liveins: $vgpr0, $vgpr1530 531    ; GFX7-LABEL: name: test_icmp_p2532    ; GFX7: liveins: $vgpr0, $vgpr1533    ; GFX7-NEXT: {{  $}}534    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(p2) = COPY $vgpr0535    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:_(p2) = COPY $vgpr1536    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p2), [[COPY1]]537    ; GFX7-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)538    ; GFX7-NEXT: $vgpr0 = COPY [[SEXT]](s32)539    ;540    ; GFX8-LABEL: name: test_icmp_p2541    ; GFX8: liveins: $vgpr0, $vgpr1542    ; GFX8-NEXT: {{  $}}543    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p2) = COPY $vgpr0544    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:_(p2) = COPY $vgpr1545    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p2), [[COPY1]]546    ; GFX8-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)547    ; GFX8-NEXT: $vgpr0 = COPY [[SEXT]](s32)548    ;549    ; GFX9-LABEL: name: test_icmp_p2550    ; GFX9: liveins: $vgpr0, $vgpr1551    ; GFX9-NEXT: {{  $}}552    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(p2) = COPY $vgpr0553    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(p2) = COPY $vgpr1554    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p2), [[COPY1]]555    ; GFX9-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)556    ; GFX9-NEXT: $vgpr0 = COPY [[SEXT]](s32)557    %0:_(p2) = COPY $vgpr0558    %1:_(p2) = COPY $vgpr1559    %2:_(s1) = G_ICMP intpred(ne), %0, %1560    %3:_(s32) = G_SEXT %2561    $vgpr0 = COPY %3562...563 564---565name: test_icmp_p3566body: |567  bb.0:568    liveins: $vgpr0, $vgpr1569 570    ; GFX7-LABEL: name: test_icmp_p3571    ; GFX7: liveins: $vgpr0, $vgpr1572    ; GFX7-NEXT: {{  $}}573    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0574    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1575    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p3), [[COPY1]]576    ; GFX7-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)577    ; GFX7-NEXT: $vgpr0 = COPY [[SEXT]](s32)578    ;579    ; GFX8-LABEL: name: test_icmp_p3580    ; GFX8: liveins: $vgpr0, $vgpr1581    ; GFX8-NEXT: {{  $}}582    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0583    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1584    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p3), [[COPY1]]585    ; GFX8-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)586    ; GFX8-NEXT: $vgpr0 = COPY [[SEXT]](s32)587    ;588    ; GFX9-LABEL: name: test_icmp_p3589    ; GFX9: liveins: $vgpr0, $vgpr1590    ; GFX9-NEXT: {{  $}}591    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0592    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1593    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p3), [[COPY1]]594    ; GFX9-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)595    ; GFX9-NEXT: $vgpr0 = COPY [[SEXT]](s32)596    %0:_(p3) = COPY $vgpr0597    %1:_(p3) = COPY $vgpr1598    %2:_(s1) = G_ICMP intpred(ne), %0, %1599    %3:_(s32) = G_SEXT %2600    $vgpr0 = COPY %3601...602 603---604name: test_icmp_p4605body: |606  bb.0:607    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3608    ; GFX7-LABEL: name: test_icmp_p4609    ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3610    ; GFX7-NEXT: {{  $}}611    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1612    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1613    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p4), [[COPY1]]614    ; GFX7-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)615    ; GFX7-NEXT: $vgpr0 = COPY [[SEXT]](s32)616    ;617    ; GFX8-LABEL: name: test_icmp_p4618    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3619    ; GFX8-NEXT: {{  $}}620    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1621    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1622    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p4), [[COPY1]]623    ; GFX8-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)624    ; GFX8-NEXT: $vgpr0 = COPY [[SEXT]](s32)625    ;626    ; GFX9-LABEL: name: test_icmp_p4627    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3628    ; GFX9-NEXT: {{  $}}629    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1630    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1631    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p4), [[COPY1]]632    ; GFX9-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)633    ; GFX9-NEXT: $vgpr0 = COPY [[SEXT]](s32)634    %0:_(p4) = COPY $vgpr0_vgpr1635    %1:_(p4) = COPY $vgpr0_vgpr1636    %2:_(s1) = G_ICMP intpred(ne), %0, %1637    %3:_(s32) = G_SEXT %2638    $vgpr0 = COPY %3639...640 641---642name: test_icmp_p5643body: |644  bb.0:645    liveins: $vgpr0, $vgpr1646 647    ; GFX7-LABEL: name: test_icmp_p5648    ; GFX7: liveins: $vgpr0, $vgpr1649    ; GFX7-NEXT: {{  $}}650    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0651    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:_(p5) = COPY $vgpr1652    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p5), [[COPY1]]653    ; GFX7-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)654    ; GFX7-NEXT: $vgpr0 = COPY [[SEXT]](s32)655    ;656    ; GFX8-LABEL: name: test_icmp_p5657    ; GFX8: liveins: $vgpr0, $vgpr1658    ; GFX8-NEXT: {{  $}}659    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0660    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:_(p5) = COPY $vgpr1661    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p5), [[COPY1]]662    ; GFX8-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)663    ; GFX8-NEXT: $vgpr0 = COPY [[SEXT]](s32)664    ;665    ; GFX9-LABEL: name: test_icmp_p5666    ; GFX9: liveins: $vgpr0, $vgpr1667    ; GFX9-NEXT: {{  $}}668    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0669    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(p5) = COPY $vgpr1670    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p5), [[COPY1]]671    ; GFX9-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)672    ; GFX9-NEXT: $vgpr0 = COPY [[SEXT]](s32)673    %0:_(p5) = COPY $vgpr0674    %1:_(p5) = COPY $vgpr1675    %2:_(s1) = G_ICMP intpred(ne), %0, %1676    %3:_(s32) = G_SEXT %2677    $vgpr0 = COPY %3678...679 680---681name: test_icmp_p999682body: |683  bb.0:684    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3685    ; GFX7-LABEL: name: test_icmp_p999686    ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3687    ; GFX7-NEXT: {{  $}}688    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1689    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1690    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p999), [[COPY1]]691    ; GFX7-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)692    ; GFX7-NEXT: $vgpr0 = COPY [[SEXT]](s32)693    ;694    ; GFX8-LABEL: name: test_icmp_p999695    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3696    ; GFX8-NEXT: {{  $}}697    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1698    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1699    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p999), [[COPY1]]700    ; GFX8-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)701    ; GFX8-NEXT: $vgpr0 = COPY [[SEXT]](s32)702    ;703    ; GFX9-LABEL: name: test_icmp_p999704    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3705    ; GFX9-NEXT: {{  $}}706    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1707    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1708    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p999), [[COPY1]]709    ; GFX9-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1)710    ; GFX9-NEXT: $vgpr0 = COPY [[SEXT]](s32)711    %0:_(p999) = COPY $vgpr0_vgpr1712    %1:_(p999) = COPY $vgpr0_vgpr1713    %2:_(s1) = G_ICMP intpred(ne), %0, %1714    %3:_(s32) = G_SEXT %2715    $vgpr0 = COPY %3716...717 718---719name: test_icmp_v2p3720body: |721  bb.0:722    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3723    ; GFX7-LABEL: name: test_icmp_v2p3724    ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3725    ; GFX7-NEXT: {{  $}}726    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1727    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1728    ; GFX7-NEXT: [[UV:%[0-9]+]]:_(p3), [[UV1:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY]](<2 x p3>)729    ; GFX7-NEXT: [[UV2:%[0-9]+]]:_(p3), [[UV3:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY1]](<2 x p3>)730    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p3), [[UV2]]731    ; GFX7-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p3), [[UV3]]732    ; GFX7-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1)733    ; GFX7-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1)734    ; GFX7-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT]], 1735    ; GFX7-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT1]], 1736    ; GFX7-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SEXT_INREG]](s32), [[SEXT_INREG1]](s32)737    ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)738    ;739    ; GFX8-LABEL: name: test_icmp_v2p3740    ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3741    ; GFX8-NEXT: {{  $}}742    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1743    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1744    ; GFX8-NEXT: [[UV:%[0-9]+]]:_(p3), [[UV1:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY]](<2 x p3>)745    ; GFX8-NEXT: [[UV2:%[0-9]+]]:_(p3), [[UV3:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY1]](<2 x p3>)746    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p3), [[UV2]]747    ; GFX8-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p3), [[UV3]]748    ; GFX8-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1)749    ; GFX8-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1)750    ; GFX8-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT]], 1751    ; GFX8-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT1]], 1752    ; GFX8-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SEXT_INREG]](s32), [[SEXT_INREG1]](s32)753    ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)754    ;755    ; GFX9-LABEL: name: test_icmp_v2p3756    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3757    ; GFX9-NEXT: {{  $}}758    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1759    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1760    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(p3), [[UV1:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY]](<2 x p3>)761    ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(p3), [[UV3:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY1]](<2 x p3>)762    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p3), [[UV2]]763    ; GFX9-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p3), [[UV3]]764    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1)765    ; GFX9-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT]], 1766    ; GFX9-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1)767    ; GFX9-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT1]], 1768    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SEXT_INREG]](s32), [[SEXT_INREG1]](s32)769    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)770    %0:_(<2 x p3>) = COPY $vgpr0_vgpr1771    %1:_(<2 x p3>) = COPY $vgpr0_vgpr1772    %2:_(<2 x s1>) = G_ICMP intpred(ne), %0, %1773    %3:_(<2 x s32>) = G_SEXT %2774    $vgpr0_vgpr1 = COPY %3775...776 777---778name: test_icmp_v2p999779body: |780  bb.0:781    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7782    ; GFX7-LABEL: name: test_icmp_v2p999783    ; GFX7: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7784    ; GFX7-NEXT: {{  $}}785    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(<2 x p999>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3786    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:_(<2 x p999>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7787    ; GFX7-NEXT: [[UV:%[0-9]+]]:_(p999), [[UV1:%[0-9]+]]:_(p999) = G_UNMERGE_VALUES [[COPY]](<2 x p999>)788    ; GFX7-NEXT: [[UV2:%[0-9]+]]:_(p999), [[UV3:%[0-9]+]]:_(p999) = G_UNMERGE_VALUES [[COPY1]](<2 x p999>)789    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p999), [[UV2]]790    ; GFX7-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p999), [[UV3]]791    ; GFX7-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1)792    ; GFX7-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1)793    ; GFX7-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT]], 1794    ; GFX7-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT1]], 1795    ; GFX7-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SEXT_INREG]](s32), [[SEXT_INREG1]](s32)796    ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)797    ;798    ; GFX8-LABEL: name: test_icmp_v2p999799    ; GFX8: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7800    ; GFX8-NEXT: {{  $}}801    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(<2 x p999>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3802    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:_(<2 x p999>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7803    ; GFX8-NEXT: [[UV:%[0-9]+]]:_(p999), [[UV1:%[0-9]+]]:_(p999) = G_UNMERGE_VALUES [[COPY]](<2 x p999>)804    ; GFX8-NEXT: [[UV2:%[0-9]+]]:_(p999), [[UV3:%[0-9]+]]:_(p999) = G_UNMERGE_VALUES [[COPY1]](<2 x p999>)805    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p999), [[UV2]]806    ; GFX8-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p999), [[UV3]]807    ; GFX8-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1)808    ; GFX8-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1)809    ; GFX8-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT]], 1810    ; GFX8-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT1]], 1811    ; GFX8-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SEXT_INREG]](s32), [[SEXT_INREG1]](s32)812    ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)813    ;814    ; GFX9-LABEL: name: test_icmp_v2p999815    ; GFX9: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7816    ; GFX9-NEXT: {{  $}}817    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x p999>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3818    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x p999>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7819    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(p999), [[UV1:%[0-9]+]]:_(p999) = G_UNMERGE_VALUES [[COPY]](<2 x p999>)820    ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(p999), [[UV3:%[0-9]+]]:_(p999) = G_UNMERGE_VALUES [[COPY1]](<2 x p999>)821    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p999), [[UV2]]822    ; GFX9-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p999), [[UV3]]823    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1)824    ; GFX9-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT]], 1825    ; GFX9-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1)826    ; GFX9-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT1]], 1827    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SEXT_INREG]](s32), [[SEXT_INREG1]](s32)828    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)829    %0:_(<2 x p999>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3830    %1:_(<2 x p999>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7831    %2:_(<2 x s1>) = G_ICMP intpred(ne), %0, %1832    %3:_(<2 x s32>) = G_SEXT %2833    $vgpr0_vgpr1 = COPY %3834...835 836---837name: test_icmp_v2s16838body: |839  bb.0:840    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5841    ; GFX7-LABEL: name: test_icmp_v2s16842    ; GFX7: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5843    ; GFX7-NEXT: {{  $}}844    ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0845    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1846    ; GFX7-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3847    ; GFX7-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5848    ; GFX7-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)849    ; GFX7-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16850    ; GFX7-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)851    ; GFX7-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[COPY1]](<2 x s16>)852    ; GFX7-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32)853    ; GFX7-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535854    ; GFX7-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]855    ; GFX7-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST1]], [[C1]]856    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[AND]](s32), [[AND1]]857    ; GFX7-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[LSHR]](s32), [[LSHR1]]858    ; GFX7-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)859    ; GFX7-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>)860    ; GFX7-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]861    ; GFX7-NEXT: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[UV1]], [[UV3]]862    ; GFX7-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32)863    ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)864    ;865    ; GFX8-LABEL: name: test_icmp_v2s16866    ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5867    ; GFX8-NEXT: {{  $}}868    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0869    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1870    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3871    ; GFX8-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5872    ; GFX8-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)873    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST]](s32)874    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16875    ; GFX8-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)876    ; GFX8-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)877    ; GFX8-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[COPY1]](<2 x s16>)878    ; GFX8-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST1]](s32)879    ; GFX8-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32)880    ; GFX8-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR1]](s32)881    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[TRUNC]](s16), [[TRUNC2]]882    ; GFX8-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[TRUNC1]](s16), [[TRUNC3]]883    ; GFX8-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)884    ; GFX8-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>)885    ; GFX8-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]886    ; GFX8-NEXT: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[UV1]], [[UV3]]887    ; GFX8-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32)888    ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)889    ;890    ; GFX9-LABEL: name: test_icmp_v2s16891    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5892    ; GFX9-NEXT: {{  $}}893    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0894    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1895    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3896    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5897    ; GFX9-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)898    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST]](s32)899    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16900    ; GFX9-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)901    ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)902    ; GFX9-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[COPY1]](<2 x s16>)903    ; GFX9-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST1]](s32)904    ; GFX9-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32)905    ; GFX9-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR1]](s32)906    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[TRUNC]](s16), [[TRUNC2]]907    ; GFX9-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[TRUNC1]](s16), [[TRUNC3]]908    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)909    ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>)910    ; GFX9-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]]911    ; GFX9-NEXT: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[UV1]], [[UV3]]912    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32)913    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)914    %0:_(<2 x s16>) = COPY $vgpr0915    %1:_(<2 x s16>) = COPY $vgpr1916    %2:_(<2 x s32>) = COPY $vgpr2_vgpr3917    %3:_(<2 x s32>) = COPY $vgpr4_vgpr5918    %4:_(<2 x s1>) = G_ICMP intpred(ne), %0, %1919    %5:_(<2 x s32>) = G_SELECT %4, %2, %3920    $vgpr0_vgpr1 = COPY %5921...922 923---924name: test_icmp_s33925body: |926  bb.0:927    liveins: $vgpr0_vgpr1928    ; GFX7-LABEL: name: test_icmp_s33929    ; GFX7: liveins: $vgpr0_vgpr1930    ; GFX7-NEXT: {{  $}}931    ; GFX7-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0932    ; GFX7-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s64), [[C]]933    ; GFX7-NEXT: S_ENDPGM 0, implicit [[ICMP]](s1)934    ;935    ; GFX8-LABEL: name: test_icmp_s33936    ; GFX8: liveins: $vgpr0_vgpr1937    ; GFX8-NEXT: {{  $}}938    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0939    ; GFX8-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s64), [[C]]940    ; GFX8-NEXT: S_ENDPGM 0, implicit [[ICMP]](s1)941    ;942    ; GFX9-LABEL: name: test_icmp_s33943    ; GFX9: liveins: $vgpr0_vgpr1944    ; GFX9-NEXT: {{  $}}945    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0946    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s64), [[C]]947    ; GFX9-NEXT: S_ENDPGM 0, implicit [[ICMP]](s1)948    %0:_(s64) = COPY $vgpr0_vgpr1949    %1:_(s33) = G_TRUNC %0950    %2:_(s33) = G_CONSTANT i33 0951    %3:_(s1) = G_ICMP intpred(ne), %2, %2952    S_ENDPGM 0, implicit %3953...954