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