449 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 62; RUN: opt -S -O3 < %s | FileCheck %s3 4target datalayout = "n64:32:16:8"5 6define i8 @test(i8 %x) {7; CHECK-LABEL: define range(i8 0, 53) i8 @test(8; CHECK-SAME: i8 [[X:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {9; CHECK-NEXT: [[START:.*:]]10; CHECK-NEXT: [[X_:%.*]] = tail call i8 @llvm.umin.i8(i8 [[X]], i8 52)11; CHECK-NEXT: ret i8 [[X_]]12;13start:14 %_0 = alloca [1 x i8], align 115 %0 = icmp eq i8 %x, 016 br i1 %0, label %bb1, label %bb217 18bb1: ; preds = %start19 store i8 0, ptr %_0, align 120 br label %bb10521 22bb2: ; preds = %start23 %1 = icmp eq i8 %x, 124 br i1 %1, label %bb3, label %bb425 26bb105: ; preds = %bb104, %bb103, %bb101, %bb99, %bb97, %bb95, %bb93, %bb91, %bb89, %bb87, %bb85, %bb83, %bb81, %bb79, %bb77, %bb75, %bb73, %bb71, %bb69, %bb67, %bb65, %bb63, %bb61, %bb59, %bb57, %bb55, %bb53, %bb51, %bb49, %bb47, %bb45, %bb43, %bb41, %bb39, %bb37, %bb35, %bb33, %bb31, %bb29, %bb27, %bb25, %bb23, %bb21, %bb19, %bb17, %bb15, %bb13, %bb11, %bb9, %bb7, %bb5, %bb3, %bb127 %2 = load i8, ptr %_0, align 128 ret i8 %229 30bb3: ; preds = %bb231 store i8 1, ptr %_0, align 132 br label %bb10533 34bb4: ; preds = %bb235 %3 = icmp eq i8 %x, 236 br i1 %3, label %bb5, label %bb637 38bb5: ; preds = %bb439 store i8 2, ptr %_0, align 140 br label %bb10541 42bb6: ; preds = %bb443 %4 = icmp eq i8 %x, 344 br i1 %4, label %bb7, label %bb845 46bb7: ; preds = %bb647 store i8 3, ptr %_0, align 148 br label %bb10549 50bb8: ; preds = %bb651 %5 = icmp eq i8 %x, 452 br i1 %5, label %bb9, label %bb1053 54bb9: ; preds = %bb855 store i8 4, ptr %_0, align 156 br label %bb10557 58bb10: ; preds = %bb859 %6 = icmp eq i8 %x, 560 br i1 %6, label %bb11, label %bb1261 62bb11: ; preds = %bb1063 store i8 5, ptr %_0, align 164 br label %bb10565 66bb12: ; preds = %bb1067 %7 = icmp eq i8 %x, 668 br i1 %7, label %bb13, label %bb1469 70bb13: ; preds = %bb1271 store i8 6, ptr %_0, align 172 br label %bb10573 74bb14: ; preds = %bb1275 %8 = icmp eq i8 %x, 776 br i1 %8, label %bb15, label %bb1677 78bb15: ; preds = %bb1479 store i8 7, ptr %_0, align 180 br label %bb10581 82bb16: ; preds = %bb1483 %9 = icmp eq i8 %x, 884 br i1 %9, label %bb17, label %bb1885 86bb17: ; preds = %bb1687 store i8 8, ptr %_0, align 188 br label %bb10589 90bb18: ; preds = %bb1691 %10 = icmp eq i8 %x, 992 br i1 %10, label %bb19, label %bb2093 94bb19: ; preds = %bb1895 store i8 9, ptr %_0, align 196 br label %bb10597 98bb20: ; preds = %bb1899 %11 = icmp eq i8 %x, 10100 br i1 %11, label %bb21, label %bb22101 102bb21: ; preds = %bb20103 store i8 10, ptr %_0, align 1104 br label %bb105105 106bb22: ; preds = %bb20107 %12 = icmp eq i8 %x, 11108 br i1 %12, label %bb23, label %bb24109 110bb23: ; preds = %bb22111 store i8 11, ptr %_0, align 1112 br label %bb105113 114bb24: ; preds = %bb22115 %13 = icmp eq i8 %x, 12116 br i1 %13, label %bb25, label %bb26117 118bb25: ; preds = %bb24119 store i8 12, ptr %_0, align 1120 br label %bb105121 122bb26: ; preds = %bb24123 %14 = icmp eq i8 %x, 13124 br i1 %14, label %bb27, label %bb28125 126bb27: ; preds = %bb26127 store i8 13, ptr %_0, align 1128 br label %bb105129 130bb28: ; preds = %bb26131 %15 = icmp eq i8 %x, 14132 br i1 %15, label %bb29, label %bb30133 134bb29: ; preds = %bb28135 store i8 14, ptr %_0, align 1136 br label %bb105137 138bb30: ; preds = %bb28139 %16 = icmp eq i8 %x, 15140 br i1 %16, label %bb31, label %bb32141 142bb31: ; preds = %bb30143 store i8 15, ptr %_0, align 1144 br label %bb105145 146bb32: ; preds = %bb30147 %17 = icmp eq i8 %x, 16148 br i1 %17, label %bb33, label %bb34149 150bb33: ; preds = %bb32151 store i8 16, ptr %_0, align 1152 br label %bb105153 154bb34: ; preds = %bb32155 %18 = icmp eq i8 %x, 17156 br i1 %18, label %bb35, label %bb36157 158bb35: ; preds = %bb34159 store i8 17, ptr %_0, align 1160 br label %bb105161 162bb36: ; preds = %bb34163 %19 = icmp eq i8 %x, 18164 br i1 %19, label %bb37, label %bb38165 166bb37: ; preds = %bb36167 store i8 18, ptr %_0, align 1168 br label %bb105169 170bb38: ; preds = %bb36171 %20 = icmp eq i8 %x, 19172 br i1 %20, label %bb39, label %bb40173 174bb39: ; preds = %bb38175 store i8 19, ptr %_0, align 1176 br label %bb105177 178bb40: ; preds = %bb38179 %21 = icmp eq i8 %x, 20180 br i1 %21, label %bb41, label %bb42181 182bb41: ; preds = %bb40183 store i8 20, ptr %_0, align 1184 br label %bb105185 186bb42: ; preds = %bb40187 %22 = icmp eq i8 %x, 21188 br i1 %22, label %bb43, label %bb44189 190bb43: ; preds = %bb42191 store i8 21, ptr %_0, align 1192 br label %bb105193 194bb44: ; preds = %bb42195 %23 = icmp eq i8 %x, 22196 br i1 %23, label %bb45, label %bb46197 198bb45: ; preds = %bb44199 store i8 22, ptr %_0, align 1200 br label %bb105201 202bb46: ; preds = %bb44203 %24 = icmp eq i8 %x, 23204 br i1 %24, label %bb47, label %bb48205 206bb47: ; preds = %bb46207 store i8 23, ptr %_0, align 1208 br label %bb105209 210bb48: ; preds = %bb46211 %25 = icmp eq i8 %x, 24212 br i1 %25, label %bb49, label %bb50213 214bb49: ; preds = %bb48215 store i8 24, ptr %_0, align 1216 br label %bb105217 218bb50: ; preds = %bb48219 %26 = icmp eq i8 %x, 25220 br i1 %26, label %bb51, label %bb52221 222bb51: ; preds = %bb50223 store i8 25, ptr %_0, align 1224 br label %bb105225 226bb52: ; preds = %bb50227 %27 = icmp eq i8 %x, 26228 br i1 %27, label %bb53, label %bb54229 230bb53: ; preds = %bb52231 store i8 26, ptr %_0, align 1232 br label %bb105233 234bb54: ; preds = %bb52235 %28 = icmp eq i8 %x, 27236 br i1 %28, label %bb55, label %bb56237 238bb55: ; preds = %bb54239 store i8 27, ptr %_0, align 1240 br label %bb105241 242bb56: ; preds = %bb54243 %29 = icmp eq i8 %x, 28244 br i1 %29, label %bb57, label %bb58245 246bb57: ; preds = %bb56247 store i8 28, ptr %_0, align 1248 br label %bb105249 250bb58: ; preds = %bb56251 %30 = icmp eq i8 %x, 29252 br i1 %30, label %bb59, label %bb60253 254bb59: ; preds = %bb58255 store i8 29, ptr %_0, align 1256 br label %bb105257 258bb60: ; preds = %bb58259 %31 = icmp eq i8 %x, 30260 br i1 %31, label %bb61, label %bb62261 262bb61: ; preds = %bb60263 store i8 30, ptr %_0, align 1264 br label %bb105265 266bb62: ; preds = %bb60267 %32 = icmp eq i8 %x, 31268 br i1 %32, label %bb63, label %bb64269 270bb63: ; preds = %bb62271 store i8 31, ptr %_0, align 1272 br label %bb105273 274bb64: ; preds = %bb62275 %33 = icmp eq i8 %x, 32276 br i1 %33, label %bb65, label %bb66277 278bb65: ; preds = %bb64279 store i8 32, ptr %_0, align 1280 br label %bb105281 282bb66: ; preds = %bb64283 %34 = icmp eq i8 %x, 33284 br i1 %34, label %bb67, label %bb68285 286bb67: ; preds = %bb66287 store i8 33, ptr %_0, align 1288 br label %bb105289 290bb68: ; preds = %bb66291 %35 = icmp eq i8 %x, 34292 br i1 %35, label %bb69, label %bb70293 294bb69: ; preds = %bb68295 store i8 34, ptr %_0, align 1296 br label %bb105297 298bb70: ; preds = %bb68299 %36 = icmp eq i8 %x, 35300 br i1 %36, label %bb71, label %bb72301 302bb71: ; preds = %bb70303 store i8 35, ptr %_0, align 1304 br label %bb105305 306bb72: ; preds = %bb70307 %37 = icmp eq i8 %x, 36308 br i1 %37, label %bb73, label %bb74309 310bb73: ; preds = %bb72311 store i8 36, ptr %_0, align 1312 br label %bb105313 314bb74: ; preds = %bb72315 %38 = icmp eq i8 %x, 37316 br i1 %38, label %bb75, label %bb76317 318bb75: ; preds = %bb74319 store i8 37, ptr %_0, align 1320 br label %bb105321 322bb76: ; preds = %bb74323 %39 = icmp eq i8 %x, 38324 br i1 %39, label %bb77, label %bb78325 326bb77: ; preds = %bb76327 store i8 38, ptr %_0, align 1328 br label %bb105329 330bb78: ; preds = %bb76331 %40 = icmp eq i8 %x, 39332 br i1 %40, label %bb79, label %bb80333 334bb79: ; preds = %bb78335 store i8 39, ptr %_0, align 1336 br label %bb105337 338bb80: ; preds = %bb78339 %41 = icmp eq i8 %x, 40340 br i1 %41, label %bb81, label %bb82341 342bb81: ; preds = %bb80343 store i8 40, ptr %_0, align 1344 br label %bb105345 346bb82: ; preds = %bb80347 %42 = icmp eq i8 %x, 41348 br i1 %42, label %bb83, label %bb84349 350bb83: ; preds = %bb82351 store i8 41, ptr %_0, align 1352 br label %bb105353 354bb84: ; preds = %bb82355 %43 = icmp eq i8 %x, 42356 br i1 %43, label %bb85, label %bb86357 358bb85: ; preds = %bb84359 store i8 42, ptr %_0, align 1360 br label %bb105361 362bb86: ; preds = %bb84363 %44 = icmp eq i8 %x, 43364 br i1 %44, label %bb87, label %bb88365 366bb87: ; preds = %bb86367 store i8 43, ptr %_0, align 1368 br label %bb105369 370bb88: ; preds = %bb86371 %45 = icmp eq i8 %x, 44372 br i1 %45, label %bb89, label %bb90373 374bb89: ; preds = %bb88375 store i8 44, ptr %_0, align 1376 br label %bb105377 378bb90: ; preds = %bb88379 %46 = icmp eq i8 %x, 45380 br i1 %46, label %bb91, label %bb92381 382bb91: ; preds = %bb90383 store i8 45, ptr %_0, align 1384 br label %bb105385 386bb92: ; preds = %bb90387 %47 = icmp eq i8 %x, 46388 br i1 %47, label %bb93, label %bb94389 390bb93: ; preds = %bb92391 store i8 46, ptr %_0, align 1392 br label %bb105393 394bb94: ; preds = %bb92395 %48 = icmp eq i8 %x, 47396 br i1 %48, label %bb95, label %bb96397 398bb95: ; preds = %bb94399 store i8 47, ptr %_0, align 1400 br label %bb105401 402bb96: ; preds = %bb94403 %49 = icmp eq i8 %x, 48404 br i1 %49, label %bb97, label %bb98405 406bb97: ; preds = %bb96407 store i8 48, ptr %_0, align 1408 br label %bb105409 410bb98: ; preds = %bb96411 %50 = icmp eq i8 %x, 49412 br i1 %50, label %bb99, label %bb100413 414bb99: ; preds = %bb98415 store i8 49, ptr %_0, align 1416 br label %bb105417 418bb100: ; preds = %bb98419 %51 = icmp eq i8 %x, 50420 br i1 %51, label %bb101, label %bb102421 422bb101: ; preds = %bb100423 store i8 50, ptr %_0, align 1424 br label %bb105425 426bb102: ; preds = %bb100427 %52 = icmp eq i8 %x, 51428 br i1 %52, label %bb103, label %bb104429 430bb103: ; preds = %bb102431 store i8 51, ptr %_0, align 1432 br label %bb105433 434bb104: ; preds = %bb102435 store i8 52, ptr %_0, align 1436 br label %bb105437}438 439; Make sure the call is inlined.440define i8 @test2(i8 %x) {441; CHECK-LABEL: define range(i8 0, 53) i8 @test2(442; CHECK-SAME: i8 [[X:%.*]]) local_unnamed_addr #[[ATTR0]] {443; CHECK-NEXT: [[CALL:%.*]] = tail call range(i8 0, 53) i8 @llvm.umin.i8(i8 [[X]], i8 52)444; CHECK-NEXT: ret i8 [[CALL]]445;446 %call = call i8 @test(i8 %x)447 ret i8 %call448}449