485 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=hawaii -run-pass=regbankselect -regbankselect-fast -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX7 %s3# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=regbankselect -regbankselect-fast -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX8 %s4# RUN: llc -mtriple=amdgcn -mcpu=hawaii -run-pass=regbankselect -regbankselect-greedy -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX7 %s5# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=regbankselect -regbankselect-greedy -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX8 %s6 7---8name: icmp_eq_s32_ss9legalized: true10 11body: |12 bb.0:13 liveins: $sgpr0, $sgpr114 ; GFX7-LABEL: name: icmp_eq_s32_ss15 ; GFX7: liveins: $sgpr0, $sgpr116 ; GFX7-NEXT: {{ $}}17 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr018 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr119 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]20 ; GFX7-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32)21 ; GFX8-LABEL: name: icmp_eq_s32_ss22 ; GFX8: liveins: $sgpr0, $sgpr123 ; GFX8-NEXT: {{ $}}24 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr025 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr126 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]27 ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32)28 %0:_(s32) = COPY $sgpr029 %1:_(s32) = COPY $sgpr130 %2:_(s1) = G_ICMP intpred(eq), %0, %131...32 33---34name: icmp_eq_s32_sv35legalized: true36 37body: |38 bb.0:39 liveins: $sgpr0, $vgpr040 ; GFX7-LABEL: name: icmp_eq_s32_sv41 ; GFX7: liveins: $sgpr0, $vgpr042 ; GFX7-NEXT: {{ $}}43 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr044 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr045 ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)46 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY1]]47 ; GFX8-LABEL: name: icmp_eq_s32_sv48 ; GFX8: liveins: $sgpr0, $vgpr049 ; GFX8-NEXT: {{ $}}50 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr051 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr052 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)53 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY1]]54 %0:_(s32) = COPY $sgpr055 %1:_(s32) = COPY $vgpr056 %2:_(s1) = G_ICMP intpred(eq), %0, %157...58 59---60name: icmp_eq_s32_vs61legalized: true62 63body: |64 bb.0:65 liveins: $sgpr0, $vgpr066 ; GFX7-LABEL: name: icmp_eq_s32_vs67 ; GFX7: liveins: $sgpr0, $vgpr068 ; GFX7-NEXT: {{ $}}69 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr070 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr071 ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)72 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY2]]73 ; GFX8-LABEL: name: icmp_eq_s32_vs74 ; GFX8: liveins: $sgpr0, $vgpr075 ; GFX8-NEXT: {{ $}}76 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr077 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr078 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)79 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY2]]80 %0:_(s32) = COPY $sgpr081 %1:_(s32) = COPY $vgpr082 %2:_(s1) = G_ICMP intpred(eq), %1, %083...84 85---86name: icmp_eq_s32_vv87legalized: true88 89body: |90 bb.0:91 liveins: $vgpr0, $vgpr192 ; GFX7-LABEL: name: icmp_eq_s32_vv93 ; GFX7: liveins: $vgpr0, $vgpr194 ; GFX7-NEXT: {{ $}}95 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr096 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr197 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]98 ; GFX8-LABEL: name: icmp_eq_s32_vv99 ; GFX8: liveins: $vgpr0, $vgpr1100 ; GFX8-NEXT: {{ $}}101 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0102 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1103 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]104 %0:_(s32) = COPY $vgpr0105 %1:_(s32) = COPY $vgpr1106 %2:_(s1) = G_ICMP intpred(eq), %0, %1107...108 109---110name: icmp_eq_s64_ss111legalized: true112 113body: |114 bb.0:115 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3116 ; GFX7-LABEL: name: icmp_eq_s64_ss117 ; GFX7: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3118 ; GFX7-NEXT: {{ $}}119 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1120 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3121 ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)122 ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)123 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s64), [[COPY3]]124 ; GFX8-LABEL: name: icmp_eq_s64_ss125 ; GFX8: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3126 ; GFX8-NEXT: {{ $}}127 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1128 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3129 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s64), [[COPY1]]130 ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32)131 %0:_(s64) = COPY $sgpr0_sgpr1132 %1:_(s64) = COPY $sgpr2_sgpr3133 %2:_(s1) = G_ICMP intpred(eq), %0, %1134...135 136---137name: icmp_eq_s64_sv138legalized: true139 140body: |141 bb.0:142 liveins: $sgpr0_sgpr1, $vgpr0_vgpr1143 ; GFX7-LABEL: name: icmp_eq_s64_sv144 ; GFX7: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1145 ; GFX7-NEXT: {{ $}}146 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1147 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1148 ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)149 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s64), [[COPY1]]150 ; GFX8-LABEL: name: icmp_eq_s64_sv151 ; GFX8: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1152 ; GFX8-NEXT: {{ $}}153 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1154 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1155 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)156 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s64), [[COPY1]]157 %0:_(s64) = COPY $sgpr0_sgpr1158 %1:_(s64) = COPY $vgpr0_vgpr1159 %2:_(s1) = G_ICMP intpred(eq), %0, %1160...161 162---163name: icmp_eq_s64_vs164legalized: true165 166body: |167 bb.0:168 liveins: $sgpr0_sgpr1, $vgpr0_vgpr1169 ; GFX7-LABEL: name: icmp_eq_s64_vs170 ; GFX7: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1171 ; GFX7-NEXT: {{ $}}172 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1173 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1174 ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)175 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s64), [[COPY2]]176 ; GFX8-LABEL: name: icmp_eq_s64_vs177 ; GFX8: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1178 ; GFX8-NEXT: {{ $}}179 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1180 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1181 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)182 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s64), [[COPY2]]183 %0:_(s64) = COPY $sgpr0_sgpr1184 %1:_(s64) = COPY $vgpr0_vgpr1185 %2:_(s1) = G_ICMP intpred(eq), %1, %0186...187 188---189name: icmp_eq_s64_vv190legalized: true191 192body: |193 bb.0:194 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3195 ; GFX7-LABEL: name: icmp_eq_s64_vv196 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3197 ; GFX7-NEXT: {{ $}}198 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1199 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3200 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s64), [[COPY1]]201 ; GFX8-LABEL: name: icmp_eq_s64_vv202 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3203 ; GFX8-NEXT: {{ $}}204 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1205 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3206 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s64), [[COPY1]]207 %0:_(s64) = COPY $vgpr0_vgpr1208 %1:_(s64) = COPY $vgpr2_vgpr3209 %2:_(s1) = G_ICMP intpred(eq), %0, %1210...211 212---213name: icmp_ne_s64_ss214legalized: true215 216body: |217 bb.0:218 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3219 ; GFX7-LABEL: name: icmp_ne_s64_ss220 ; GFX7: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3221 ; GFX7-NEXT: {{ $}}222 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1223 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3224 ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)225 ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)226 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s64), [[COPY3]]227 ; GFX8-LABEL: name: icmp_ne_s64_ss228 ; GFX8: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3229 ; GFX8-NEXT: {{ $}}230 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1231 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3232 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s64), [[COPY1]]233 ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32)234 %0:_(s64) = COPY $sgpr0_sgpr1235 %1:_(s64) = COPY $sgpr2_sgpr3236 %2:_(s1) = G_ICMP intpred(ne), %0, %1237...238 239---240name: icmp_ne_s64_sv241legalized: true242 243body: |244 bb.0:245 liveins: $sgpr0_sgpr1, $vgpr0_vgpr1246 ; GFX7-LABEL: name: icmp_ne_s64_sv247 ; GFX7: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1248 ; GFX7-NEXT: {{ $}}249 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1250 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1251 ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)252 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s64), [[COPY1]]253 ; GFX8-LABEL: name: icmp_ne_s64_sv254 ; GFX8: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1255 ; GFX8-NEXT: {{ $}}256 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1257 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1258 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)259 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s64), [[COPY1]]260 %0:_(s64) = COPY $sgpr0_sgpr1261 %1:_(s64) = COPY $vgpr0_vgpr1262 %2:_(s1) = G_ICMP intpred(ne), %0, %1263...264 265---266name: icmp_ne_s64_vs267legalized: true268 269body: |270 bb.0:271 liveins: $sgpr0_sgpr1, $vgpr0_vgpr1272 ; GFX7-LABEL: name: icmp_ne_s64_vs273 ; GFX7: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1274 ; GFX7-NEXT: {{ $}}275 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1276 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1277 ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)278 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s64), [[COPY2]]279 ; GFX8-LABEL: name: icmp_ne_s64_vs280 ; GFX8: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1281 ; GFX8-NEXT: {{ $}}282 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1283 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1284 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)285 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s64), [[COPY2]]286 %0:_(s64) = COPY $sgpr0_sgpr1287 %1:_(s64) = COPY $vgpr0_vgpr1288 %2:_(s1) = G_ICMP intpred(ne), %1, %0289...290 291---292name: icmp_ne_s64_vv293legalized: true294 295body: |296 bb.0:297 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3298 ; GFX7-LABEL: name: icmp_ne_s64_vv299 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3300 ; GFX7-NEXT: {{ $}}301 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1302 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3303 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s64), [[COPY1]]304 ; GFX8-LABEL: name: icmp_ne_s64_vv305 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3306 ; GFX8-NEXT: {{ $}}307 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1308 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3309 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s64), [[COPY1]]310 %0:_(s64) = COPY $vgpr0_vgpr1311 %1:_(s64) = COPY $vgpr2_vgpr3312 %2:_(s1) = G_ICMP intpred(ne), %0, %1313...314 315---316name: icmp_slt_s64_ss317legalized: true318 319body: |320 bb.0:321 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3322 ; GFX7-LABEL: name: icmp_slt_s64_ss323 ; GFX7: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3324 ; GFX7-NEXT: {{ $}}325 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1326 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3327 ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)328 ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)329 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY2]](s64), [[COPY3]]330 ; GFX8-LABEL: name: icmp_slt_s64_ss331 ; GFX8: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3332 ; GFX8-NEXT: {{ $}}333 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1334 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3335 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)336 ; GFX8-NEXT: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)337 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY2]](s64), [[COPY3]]338 %0:_(s64) = COPY $sgpr0_sgpr1339 %1:_(s64) = COPY $sgpr2_sgpr3340 %2:_(s1) = G_ICMP intpred(slt), %0, %1341...342 343---344name: icmp_slt_s64_sv345legalized: true346 347body: |348 bb.0:349 liveins: $sgpr0_sgpr1, $vgpr0_vgpr1350 ; GFX7-LABEL: name: icmp_slt_s64_sv351 ; GFX7: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1352 ; GFX7-NEXT: {{ $}}353 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1354 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1355 ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)356 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY2]](s64), [[COPY1]]357 ; GFX8-LABEL: name: icmp_slt_s64_sv358 ; GFX8: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1359 ; GFX8-NEXT: {{ $}}360 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1361 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1362 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)363 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY2]](s64), [[COPY1]]364 %0:_(s64) = COPY $sgpr0_sgpr1365 %1:_(s64) = COPY $vgpr0_vgpr1366 %2:_(s1) = G_ICMP intpred(slt), %0, %1367...368 369---370name: icmp_slt_s64_vs371legalized: true372 373body: |374 bb.0:375 liveins: $sgpr0_sgpr1, $vgpr0_vgpr1376 ; GFX7-LABEL: name: icmp_slt_s64_vs377 ; GFX7: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1378 ; GFX7-NEXT: {{ $}}379 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1380 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1381 ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)382 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY1]](s64), [[COPY2]]383 ; GFX8-LABEL: name: icmp_slt_s64_vs384 ; GFX8: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1385 ; GFX8-NEXT: {{ $}}386 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1387 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1388 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)389 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY1]](s64), [[COPY2]]390 %0:_(s64) = COPY $sgpr0_sgpr1391 %1:_(s64) = COPY $vgpr0_vgpr1392 %2:_(s1) = G_ICMP intpred(slt), %1, %0393...394 395---396name: icmp_slt_s64_vv397legalized: true398 399body: |400 bb.0:401 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3402 ; GFX7-LABEL: name: icmp_slt_s64_vv403 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3404 ; GFX7-NEXT: {{ $}}405 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1406 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3407 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY]](s64), [[COPY1]]408 ; GFX8-LABEL: name: icmp_slt_s64_vv409 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3410 ; GFX8-NEXT: {{ $}}411 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1412 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3413 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(slt), [[COPY]](s64), [[COPY1]]414 %0:_(s64) = COPY $vgpr0_vgpr1415 %1:_(s64) = COPY $vgpr2_vgpr3416 %2:_(s1) = G_ICMP intpred(slt), %0, %1417...418 419# Result is already constrained to be VCC bank, despite scalar inputs.420---421name: map_icmp_already_vcc_bank_sgpr_inputs422legalized: true423tracksRegLiveness: true424body: |425 bb.0:426 liveins: $sgpr0, $sgpr1427 428 ; GFX7-LABEL: name: map_icmp_already_vcc_bank_sgpr_inputs429 ; GFX7: liveins: $sgpr0, $sgpr1430 ; GFX7-NEXT: {{ $}}431 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0432 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1433 ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)434 ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)435 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]]436 ; GFX7-NEXT: S_ENDPGM 0, implicit [[ICMP]](s1)437 ; GFX8-LABEL: name: map_icmp_already_vcc_bank_sgpr_inputs438 ; GFX8: liveins: $sgpr0, $sgpr1439 ; GFX8-NEXT: {{ $}}440 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0441 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1442 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)443 ; GFX8-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)444 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]]445 ; GFX8-NEXT: S_ENDPGM 0, implicit [[ICMP]](s1)446 %0:_(s32) = COPY $sgpr0447 %1:_(s32) = COPY $sgpr1448 %2:vcc(s1) = G_ICMP intpred(eq), %0, %1449 S_ENDPGM 0, implicit %2450...451 452# Result is already con strained to be VCC bank, despite scalar inputs453# and also has a register class.454---455name: map_icmp_already_vcc_regclass_sgpr_inputs456legalized: true457tracksRegLiveness: true458body: |459 bb.0:460 liveins: $sgpr0, $sgpr1461 462 ; GFX7-LABEL: name: map_icmp_already_vcc_regclass_sgpr_inputs463 ; GFX7: liveins: $sgpr0, $sgpr1464 ; GFX7-NEXT: {{ $}}465 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0466 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1467 ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)468 ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)469 ; GFX7-NEXT: [[ICMP:%[0-9]+]]:sreg_64_xexec(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]]470 ; GFX7-NEXT: S_ENDPGM 0, implicit [[ICMP]](s1)471 ; GFX8-LABEL: name: map_icmp_already_vcc_regclass_sgpr_inputs472 ; GFX8: liveins: $sgpr0, $sgpr1473 ; GFX8-NEXT: {{ $}}474 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0475 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1476 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)477 ; GFX8-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)478 ; GFX8-NEXT: [[ICMP:%[0-9]+]]:sreg_64_xexec(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]]479 ; GFX8-NEXT: S_ENDPGM 0, implicit [[ICMP]](s1)480 %0:_(s32) = COPY $sgpr0481 %1:_(s32) = COPY $sgpr1482 %2:sreg_64_xexec(s1) = G_ICMP intpred(eq), %0, %1483 S_ENDPGM 0, implicit %2484...485