472 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -debugify-and-strip-all-safe -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs -mtriple aarch64-unknown-unknown %s -o - | FileCheck %s3---4# icmp (x, 1) && icmp (x, 2) -> x5name: test_icmp_and_icmp6body: |7 bb.1:8 liveins: $x0, $x19 ; CHECK-LABEL: name: test_icmp_and_icmp10 ; CHECK: liveins: $x0, $x111 ; CHECK-NEXT: {{ $}}12 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x013 ; CHECK-NEXT: %one:_(s64) = G_CONSTANT i64 114 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s64), %one15 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT [[ICMP]](s1)16 ; CHECK-NEXT: $x0 = COPY %zext(s64)17 %0:_(s64) = COPY $x018 %1:_(s64) = COPY $x119 %2:_(s64) = COPY $x220 %one:_(s64) = G_CONSTANT i64 121 %two:_(s64) = G_CONSTANT i64 222 %cmp1:_(s1) = G_ICMP intpred(eq), %0(s64), %one23 %cmp2:_(s1) = G_ICMP intpred(ne), %0(s64), %two24 %and:_(s1) = G_AND %cmp1, %cmp225 %zext:_(s64) = G_ZEXT %and(s1)26 $x0 = COPY %zext27...28---29# multi use icmp (x, 1) && icmp (x, 2) -> x30name: multi_use_test_icmp_and_icmp31body: |32 bb.1:33 liveins: $x0, $x134 ; CHECK-LABEL: name: multi_use_test_icmp_and_icmp35 ; CHECK: liveins: $x0, $x136 ; CHECK-NEXT: {{ $}}37 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x038 ; CHECK-NEXT: %one:_(s64) = G_CONSTANT i64 139 ; CHECK-NEXT: %two:_(s64) = G_CONSTANT i64 240 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(eq), [[COPY]](s64), %one41 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(ne), [[COPY]](s64), %two42 ; CHECK-NEXT: %and:_(s1) = G_AND %cmp1, %cmp243 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT %and(s1)44 ; CHECK-NEXT: %cmp1zext:_(s64) = G_ZEXT %cmp1(s1)45 ; CHECK-NEXT: $x0 = COPY %zext(s64)46 ; CHECK-NEXT: $x0 = COPY %cmp1zext(s64)47 %0:_(s64) = COPY $x048 %1:_(s64) = COPY $x149 %2:_(s64) = COPY $x250 %one:_(s64) = G_CONSTANT i64 151 %two:_(s64) = G_CONSTANT i64 252 %cmp1:_(s1) = G_ICMP intpred(eq), %0(s64), %one53 %cmp2:_(s1) = G_ICMP intpred(ne), %0(s64), %two54 %and:_(s1) = G_AND %cmp1, %cmp255 %zext:_(s64) = G_ZEXT %and(s1)56 %cmp1zext:_(s64) = G_ZEXT %cmp1(s1)57 $x0 = COPY %zext58 $x0 = COPY %cmp1zext59...60---61# icmp (x, 1) && icmp (x, add(x, 2)) -> x62name: test_icmp_and_icmp_with_add63body: |64 bb.1:65 liveins: $x0, $x166 ; CHECK-LABEL: name: test_icmp_and_icmp_with_add67 ; CHECK: liveins: $x0, $x168 ; CHECK-NEXT: {{ $}}69 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x070 ; CHECK-NEXT: %one:_(s64) = G_CONSTANT i64 171 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(eq), [[COPY]](s64), %one72 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT %cmp1(s1)73 ; CHECK-NEXT: $x0 = COPY %zext(s64)74 %0:_(s64) = COPY $x075 %1:_(s64) = COPY $x176 %2:_(s64) = COPY $x277 %one:_(s64) = G_CONSTANT i64 178 %two:_(s64) = G_CONSTANT i64 279 %add:_(s64) = G_ADD %0(s64), %two80 %cmp1:_(s1) = G_ICMP intpred(eq), %0(s64), %one81 %cmp2:_(s1) = G_ICMP intpred(ne), %0(s64), %add82 %and:_(s1) = G_AND %cmp1, %cmp283 %zext:_(s64) = G_ZEXT %and(s1)84 $x0 = COPY %zext85...86---87# icmp (x, 1) && icmp (x, add(x, 2000)) -> x88name: test_icmp_or_icmp_with_add_200089body: |90 bb.1:91 liveins: $x0, $x192 ; CHECK-LABEL: name: test_icmp_or_icmp_with_add_200093 ; CHECK: liveins: $x0, $x194 ; CHECK-NEXT: {{ $}}95 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x096 ; CHECK-NEXT: %one:_(s64) = G_CONSTANT i64 -10097 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s64), %one98 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT [[ICMP]](s1)99 ; CHECK-NEXT: $x0 = COPY %zext(s64)100 %0:_(s64) = COPY $x0101 %1:_(s64) = COPY $x1102 %2:_(s64) = COPY $x2103 %one:_(s64) = G_CONSTANT i64 -100104 %two:_(s64) = G_CONSTANT i64 2000105 %cmp1:_(s1) = G_ICMP intpred(eq), %0(s64), %one106 %cmp2:_(s1) = G_ICMP intpred(ne), %0(s64), %two107 %or:_(s1) = G_AND %cmp1, %cmp2108 %zext:_(s64) = G_ZEXT %or(s1)109 $x0 = COPY %zext110...111---112# icmp (x, -100) || icmp (x, 2000) -> x113name: test_icmp_or_icmp114body: |115 bb.1:116 liveins: $x0, $x1117 ; CHECK-LABEL: name: test_icmp_or_icmp118 ; CHECK: liveins: $x0, $x1119 ; CHECK-NEXT: {{ $}}120 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0121 ; CHECK-NEXT: %two:_(s64) = G_CONSTANT i64 2000122 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](s64), %two123 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT [[ICMP]](s1)124 ; CHECK-NEXT: $x0 = COPY %zext(s64)125 %0:_(s64) = COPY $x0126 %1:_(s64) = COPY $x1127 %2:_(s64) = COPY $x2128 %one:_(s64) = G_CONSTANT i64 -100129 %two:_(s64) = G_CONSTANT i64 2000130 %cmp1:_(s1) = G_ICMP intpred(eq), %0(s64), %one131 %cmp2:_(s1) = G_ICMP intpred(ne), %0(s64), %two132 %or:_(s1) = G_OR %cmp1, %cmp2133 %zext:_(s64) = G_ZEXT %or(s1)134 $x0 = COPY %zext135...136---137# offset icmp (x, -100) || icmp (x, 2000) -> x138name: test_icmp_or_icmp_offset139body: |140 bb.1:141 liveins: $x0, $x1142 ; CHECK-LABEL: name: test_icmp_or_icmp_offset143 ; CHECK: liveins: $x0, $x1144 ; CHECK-NEXT: {{ $}}145 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0146 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -2001147 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[COPY]], [[C]]148 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -2101149 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ult), [[ADD]](s64), [[C1]]150 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT [[ICMP]](s1)151 ; CHECK-NEXT: $x0 = COPY %zext(s64)152 %0:_(s64) = COPY $x0153 %1:_(s64) = COPY $x1154 %2:_(s64) = COPY $x2155 %one:_(s64) = G_CONSTANT i64 -100156 %two:_(s64) = G_CONSTANT i64 2000157 %cmp1:_(s1) = G_ICMP intpred(slt), %0(s64), %one158 %cmp2:_(s1) = G_ICMP intpred(sgt), %0(s64), %two159 %or:_(s1) = G_OR %cmp1, %cmp2160 %zext:_(s64) = G_ZEXT %or(s1)161 $x0 = COPY %zext162...163---164# icmp (x, add(x, 9) || icmp (x, add(x, 2)) -> x165name: test_icmp_or_icmp_with_add_and_add166body: |167 bb.1:168 liveins: $x0, $x1169 ; CHECK-LABEL: name: test_icmp_or_icmp_with_add_and_add170 ; CHECK: liveins: $x0, $x1171 ; CHECK-NEXT: {{ $}}172 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0173 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1174 ; CHECK-NEXT: %two:_(s64) = G_CONSTANT i64 2175 ; CHECK-NEXT: %add2:_(s64) = G_ADD [[COPY]], %two176 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(ne), [[COPY1]](s64), %add2177 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT %cmp2(s1)178 ; CHECK-NEXT: $x0 = COPY %zext(s64)179 %0:_(s64) = COPY $x0180 %1:_(s64) = COPY $x1181 %2:_(s64) = COPY $x2182 %nine:_(s64) = G_CONSTANT i64 9183 %two:_(s64) = G_CONSTANT i64 2184 %add1:_(s64) = G_ADD %0(s64), %nine185 %add2:_(s64) = G_ADD %0(s64), %two186 %cmp1:_(s1) = G_ICMP intpred(eq), %0(s64), %add1187 %cmp2:_(s1) = G_ICMP intpred(ne), %1(s64), %add2188 %and:_(s1) = G_OR %cmp1, %cmp2189 %zext:_(s64) = G_ZEXT %and(s1)190 $x0 = COPY %zext191...192---193# icmp (x, 9) && icmp (x, 2)) -> x194# buildConstant 0195# buildICmp ult, R1, NewC196# buildZExtOrTrunc -> COPY197# erase G_AND198# x > 9 && x < 2 => false199name: test_icmp_and_icmp_9_2200body: |201 bb.1:202 liveins: $x0, $x1203 ; CHECK-LABEL: name: test_icmp_and_icmp_9_2204 ; CHECK: liveins: $x0, $x1205 ; CHECK-NEXT: {{ $}}206 ; CHECK-NEXT: %zext:_(s64) = G_CONSTANT i64 0207 ; CHECK-NEXT: $x0 = COPY %zext(s64)208 %0:_(s64) = COPY $x0209 %nine:_(s64) = G_CONSTANT i64 9210 %two:_(s64) = G_CONSTANT i64 2211 %cmp1:_(s1) = G_ICMP intpred(sgt), %0(s64), %nine212 %cmp2:_(s1) = G_ICMP intpred(slt), %0(s64), %two213 %and:_(s1) = G_AND %cmp1, %cmp2214 %zext:_(s64) = G_ZEXT %and(s1)215 $x0 = COPY %zext216...217---218# icmp (x, v1) && icmp (x, v2)) -> x219name: test_icmp_and_icmp_with_vectors220body: |221 bb.1:222 liveins: $x0, $x1223 ; CHECK-LABEL: name: test_icmp_and_icmp_with_vectors224 ; CHECK: liveins: $x0, $x1225 ; CHECK-NEXT: {{ $}}226 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0227 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1228 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2229 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x3230 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $x4231 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $x5232 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $x6233 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s64) = COPY $x7234 ; CHECK-NEXT: %v1:_(<2 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64)235 ; CHECK-NEXT: %v2:_(<2 x s64>) = G_BUILD_VECTOR [[COPY2]](s64), [[COPY3]](s64)236 ; CHECK-NEXT: %v3:_(<2 x s64>) = G_BUILD_VECTOR [[COPY4]](s64), [[COPY5]](s64)237 ; CHECK-NEXT: %v4:_(<2 x s64>) = G_BUILD_VECTOR [[COPY6]](s64), [[COPY7]](s64)238 ; CHECK-NEXT: %cmp1:_(<2 x s1>) = G_ICMP intpred(ne), %v1(<2 x s64>), %v2239 ; CHECK-NEXT: %cmp2:_(<2 x s1>) = G_ICMP intpred(eq), %v3(<2 x s64>), %v4240 ; CHECK-NEXT: %and:_(<2 x s1>) = G_AND %cmp1, %cmp2241 ; CHECK-NEXT: %zext:_(<2 x s64>) = G_ZEXT %and(<2 x s1>)242 ; CHECK-NEXT: $q0 = COPY %zext(<2 x s64>)243 %0:_(s64) = COPY $x0244 %1:_(s64) = COPY $x1245 %2:_(s64) = COPY $x2246 %3:_(s64) = COPY $x3247 %4:_(s64) = COPY $x4248 %5:_(s64) = COPY $x5249 %6:_(s64) = COPY $x6250 %7:_(s64) = COPY $x7251 %nine:_(s64) = G_CONSTANT i64 9252 %two:_(s64) = G_CONSTANT i64 2253 %v1:_(<2 x s64>) = G_BUILD_VECTOR %0(s64), %1(s64)254 %v2:_(<2 x s64>) = G_BUILD_VECTOR %2(s64), %3(s64)255 %v3:_(<2 x s64>) = G_BUILD_VECTOR %4(s64), %5(s64)256 %v4:_(<2 x s64>) = G_BUILD_VECTOR %6(s64), %7(s64)257 %cmp1:_(<2 x s1>) = G_ICMP intpred(ne), %v1(<2 x s64>), %v2258 %cmp2:_(<2 x s1>) = G_ICMP intpred(eq), %v3(<2 x s64>), %v4259 %and:_(<2 x s1>) = G_AND %cmp1, %cmp2260 %zext:_(<2 x s64>) = G_ZEXT %and(<2 x s1>)261 $q0 = COPY %zext262...263---264# fcmp (x, y) || fcmp (x, y) -> fcmp(x, y)265name: test_fcmp_or_fcmp_with_x_y266body: |267 bb.1:268 liveins: $x0, $x1269 ; CHECK-LABEL: name: test_fcmp_or_fcmp_with_x_y270 ; CHECK: liveins: $x0, $x1271 ; CHECK-NEXT: {{ $}}272 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0273 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1274 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s1) = G_FCMP floatpred(ueq), [[COPY]](s64), [[COPY1]]275 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT [[FCMP]](s1)276 ; CHECK-NEXT: $x0 = COPY %zext(s64)277 %0:_(s64) = COPY $x0278 %1:_(s64) = COPY $x1279 %cmp1:_(s1) = G_FCMP floatpred(oeq), %0(s64), %1280 %cmp2:_(s1) = G_FCMP floatpred(uno), %0(s64), %1281 %or:_(s1) = G_OR %cmp1, %cmp2282 %zext:_(s64) = G_ZEXT %or(s1)283 $x0 = COPY %zext284...285---286# fcmp (5, y) || fcmp (y, 5) -> fcmp(x, y)287name: test_fcmp_or_fcmp_with_5_y288body: |289 bb.1:290 liveins: $x0, $x1291 ; CHECK-LABEL: name: test_fcmp_or_fcmp_with_5_y292 ; CHECK: liveins: $x0, $x1293 ; CHECK-NEXT: {{ $}}294 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0295 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 5.000000e+00296 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s1) = G_FCMP floatpred(une), [[COPY]](s64), [[C]]297 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT [[FCMP]](s1)298 ; CHECK-NEXT: $x0 = COPY %zext(s64)299 %0:_(s64) = COPY $x0300 %1:_(s64) = COPY $x1301 %2:_(s64) = G_FCONSTANT double 5.0302 %cmp1:_(s1) = G_FCMP floatpred(one), %0(s64), %2303 %cmp2:_(s1) = G_FCMP floatpred(uno), %0(s64), %2304 %or:_(s1) = G_OR %cmp1, %cmp2305 %zext:_(s64) = G_ZEXT %or(s1)306 $x0 = COPY %zext307...308---309# fcmp (x, y) || fcmp (y, x) -> fcmp(x, y)310name: test_fcmp_or_fcmp_with_anti311body: |312 bb.1:313 liveins: $x0, $x1314 ; CHECK-LABEL: name: test_fcmp_or_fcmp_with_anti315 ; CHECK: liveins: $x0, $x1316 ; CHECK-NEXT: {{ $}}317 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0318 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1319 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s1) = G_FCMP floatpred(une), [[COPY1]](s64), [[COPY]]320 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT [[FCMP]](s1)321 ; CHECK-NEXT: $x0 = COPY %zext(s64)322 %0:_(s64) = COPY $x0323 %1:_(s64) = COPY $x1324 %cmp1:_(s1) = G_FCMP floatpred(one), %1(s64), %0325 %cmp2:_(s1) = G_FCMP floatpred(uno), %0(s64), %1326 %or:_(s1) = G_OR %cmp1, %cmp2327 %zext:_(s64) = G_ZEXT %or(s1)328 $x0 = COPY %zext329...330---331# fcmp (x, y) && fcmp (x, y) -> fcmp(x, y)332name: test_fcmp_and_fcmp_with_x_y333body: |334 bb.1:335 liveins: $x0, $x1336 ; CHECK-LABEL: name: test_fcmp_and_fcmp_with_x_y337 ; CHECK: liveins: $x0, $x1338 ; CHECK-NEXT: {{ $}}339 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0340 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1341 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s1) = G_FCMP floatpred(uno), [[COPY1]](s64), [[COPY]]342 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT [[FCMP]](s1)343 ; CHECK-NEXT: $x0 = COPY %zext(s64)344 %0:_(s64) = COPY $x0345 %1:_(s64) = COPY $x1346 %cmp1:_(s1) = G_FCMP floatpred(une), %1(s64), %0347 %cmp2:_(s1) = G_FCMP floatpred(uno), %0(s64), %1348 %and:_(s1) = G_AND %cmp1, %cmp2349 %zext:_(s64) = G_ZEXT %and(s1)350 $x0 = COPY %zext351...352---353# fcmp (x, y) && fcmp (x, y) -> fcmp(x, y)354name: test_fcmp_and_fcmp_with_x_y_multi_use355body: |356 bb.1:357 liveins: $x0, $x1358 ; CHECK-LABEL: name: test_fcmp_and_fcmp_with_x_y_multi_use359 ; CHECK: liveins: $x0, $x1360 ; CHECK-NEXT: {{ $}}361 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0362 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1363 ; CHECK-NEXT: %cmp1:_(s1) = G_FCMP floatpred(ogt), [[COPY1]](s64), [[COPY]]364 ; CHECK-NEXT: %cmp2:_(s1) = G_FCMP floatpred(ugt), [[COPY]](s64), [[COPY1]]365 ; CHECK-NEXT: %and:_(s1) = G_AND %cmp1, %cmp2366 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT %and(s1)367 ; CHECK-NEXT: %zext2:_(s64) = G_ZEXT %and(s1)368 ; CHECK-NEXT: $x0 = COPY %zext(s64)369 ; CHECK-NEXT: $x2 = COPY %zext2(s64)370 %0:_(s64) = COPY $x0371 %1:_(s64) = COPY $x1372 %cmp1:_(s1) = G_FCMP floatpred(ogt), %1(s64), %0373 %cmp2:_(s1) = G_FCMP floatpred(ugt), %0(s64), %1374 %and:_(s1) = G_AND %cmp1, %cmp2375 %zext:_(s64) = G_ZEXT %and(s1)376 %zext2:_(s64) = G_ZEXT %and(s1)377 $x0 = COPY %zext378 $x2 = COPY %zext2379...380---381# fcmp (x, y) && fcmp (x, y) -> fcmp(x, y)382name: test_fcmp_and_fcmp_with_vectors383body: |384 bb.1:385 liveins: $x0, $x1386 ; CHECK-LABEL: name: test_fcmp_and_fcmp_with_vectors387 ; CHECK: liveins: $x0, $x1388 ; CHECK-NEXT: {{ $}}389 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 false390 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s1>) = G_BUILD_VECTOR [[C]](s1), [[C]](s1)391 ; CHECK-NEXT: %zext:_(<2 x s64>) = G_ZEXT [[BUILD_VECTOR]](<2 x s1>)392 ; CHECK-NEXT: $q0 = COPY %zext(<2 x s64>)393 %0:_(s64) = COPY $x0394 %1:_(s64) = COPY $x1395 %2:_(s64) = COPY $x2396 %3:_(s64) = COPY $x3397 %4:_(s64) = COPY $x4398 %5:_(s64) = COPY $x5399 %6:_(s64) = COPY $x6400 %7:_(s64) = COPY $x7401 %v8:_(<2 x s64>) = G_BUILD_VECTOR %0(s64), %1(s64)402 %v9:_(<2 x s64>) = G_BUILD_VECTOR %2(s64), %3(s64)403 %cmp1:_(<2 x s1>) = G_FCMP floatpred(oeq), %v8(<2 x s64>), %v9404 %cmp2:_(<2 x s1>) = G_FCMP floatpred(olt), %v8(<2 x s64>), %v9405 %and:_(<2 x s1>) = G_AND %cmp1, %cmp2406 %zext:_(<2 x s64>) = G_ZEXT %and(<2 x s1>)407 $q0 = COPY %zext408...409---410name: test_dont_combine_pointers411body: |412 ; CHECK-LABEL: name: test_dont_combine_pointers413 ; CHECK: bb.0:414 ; CHECK-NEXT: successors: %bb.1(0x80000000)415 ; CHECK-NEXT: {{ $}}416 ; CHECK-NEXT: [[C:%[0-9]+]]:_(p0) = G_CONSTANT i64 0417 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -8418 ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:_(p0) = G_INTTOPTR [[C1]](s64)419 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 -16420 ; CHECK-NEXT: [[INTTOPTR1:%[0-9]+]]:_(p0) = G_INTTOPTR [[C2]](s64)421 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s1) = G_CONSTANT i1 false422 ; CHECK-NEXT: {{ $}}423 ; CHECK-NEXT: bb.1:424 ; CHECK-NEXT: successors: %bb.2(0x60000000), %bb.3(0x20000000)425 ; CHECK-NEXT: {{ $}}426 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[C]](p0) :: (load (p0))427 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[LOAD]](p0), [[INTTOPTR]]428 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[LOAD]](p0), [[INTTOPTR1]]429 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s1) = G_AND [[ICMP]], [[ICMP1]]430 ; CHECK-NEXT: G_BRCOND [[AND]](s1), %bb.3431 ; CHECK-NEXT: G_BR %bb.2432 ; CHECK-NEXT: {{ $}}433 ; CHECK-NEXT: bb.2:434 ; CHECK-NEXT: successors: %bb.1(0x55555555), %bb.3(0x2aaaaaab)435 ; CHECK-NEXT: {{ $}}436 ; CHECK-NEXT: G_BRCOND [[C3]](s1), %bb.1437 ; CHECK-NEXT: G_BR %bb.3438 ; CHECK-NEXT: {{ $}}439 ; CHECK-NEXT: bb.3:440 ; CHECK-NEXT: successors: %bb.1(0x80000000)441 ; CHECK-NEXT: {{ $}}442 ; CHECK-NEXT: G_BR %bb.1443 bb.1:444 %1:_(p0) = G_CONSTANT i64 0445 %3:_(s64) = G_CONSTANT i64 -8446 %2:_(p0) = G_INTTOPTR %3(s64)447 %6:_(s64) = G_CONSTANT i64 -16448 %5:_(p0) = G_INTTOPTR %6(s64)449 %10:_(s1) = G_CONSTANT i1 false450 451 bb.2:452 successors: %bb.4(0x60000000), %bb.3(0x20000000)453 454 %0:_(p0) = G_LOAD %1(p0) :: (load (p0))455 %4:_(s1) = G_ICMP intpred(eq), %0(p0), %2456 %7:_(s1) = G_ICMP intpred(eq), %0(p0), %5457 %8:_(s1) = G_OR %4, %7458 %9:_(s1) = G_SELECT %8(s1), %10, %10459 G_BRCOND %8(s1), %bb.4460 G_BR %bb.3461 462 bb.4:463 successors: %bb.2(0x55555555), %bb.3(0x2aaaaaab)464 465 G_BRCOND %10(s1), %bb.2466 G_BR %bb.3467 468 bb.3:469 G_BR %bb.2470 471...472