| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 |
| ; RUN: opt -S -O3 < %s | FileCheck %s |
| |
| target datalayout = "n64:32:16:8" |
| |
| define i8 @test(i8 %x) { |
| ; CHECK-LABEL: define range(i8 0, 53) i8 @test( |
| ; CHECK-SAME: i8 [[X:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] { |
| ; CHECK-NEXT: [[START:.*:]] |
| ; CHECK-NEXT: [[X_:%.*]] = tail call i8 @llvm.umin.i8(i8 [[X]], i8 52) |
| ; CHECK-NEXT: ret i8 [[X_]] |
| ; |
| start: |
| %_0 = alloca [1 x i8], align 1 |
| %0 = icmp eq i8 %x, 0 |
| br i1 %0, label %bb1, label %bb2 |
| |
| bb1: ; preds = %start |
| store i8 0, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb2: ; preds = %start |
| %1 = icmp eq i8 %x, 1 |
| br i1 %1, label %bb3, label %bb4 |
| |
| bb105: ; 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, %bb1 |
| %2 = load i8, ptr %_0, align 1 |
| ret i8 %2 |
| |
| bb3: ; preds = %bb2 |
| store i8 1, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb4: ; preds = %bb2 |
| %3 = icmp eq i8 %x, 2 |
| br i1 %3, label %bb5, label %bb6 |
| |
| bb5: ; preds = %bb4 |
| store i8 2, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb6: ; preds = %bb4 |
| %4 = icmp eq i8 %x, 3 |
| br i1 %4, label %bb7, label %bb8 |
| |
| bb7: ; preds = %bb6 |
| store i8 3, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb8: ; preds = %bb6 |
| %5 = icmp eq i8 %x, 4 |
| br i1 %5, label %bb9, label %bb10 |
| |
| bb9: ; preds = %bb8 |
| store i8 4, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb10: ; preds = %bb8 |
| %6 = icmp eq i8 %x, 5 |
| br i1 %6, label %bb11, label %bb12 |
| |
| bb11: ; preds = %bb10 |
| store i8 5, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb12: ; preds = %bb10 |
| %7 = icmp eq i8 %x, 6 |
| br i1 %7, label %bb13, label %bb14 |
| |
| bb13: ; preds = %bb12 |
| store i8 6, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb14: ; preds = %bb12 |
| %8 = icmp eq i8 %x, 7 |
| br i1 %8, label %bb15, label %bb16 |
| |
| bb15: ; preds = %bb14 |
| store i8 7, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb16: ; preds = %bb14 |
| %9 = icmp eq i8 %x, 8 |
| br i1 %9, label %bb17, label %bb18 |
| |
| bb17: ; preds = %bb16 |
| store i8 8, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb18: ; preds = %bb16 |
| %10 = icmp eq i8 %x, 9 |
| br i1 %10, label %bb19, label %bb20 |
| |
| bb19: ; preds = %bb18 |
| store i8 9, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb20: ; preds = %bb18 |
| %11 = icmp eq i8 %x, 10 |
| br i1 %11, label %bb21, label %bb22 |
| |
| bb21: ; preds = %bb20 |
| store i8 10, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb22: ; preds = %bb20 |
| %12 = icmp eq i8 %x, 11 |
| br i1 %12, label %bb23, label %bb24 |
| |
| bb23: ; preds = %bb22 |
| store i8 11, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb24: ; preds = %bb22 |
| %13 = icmp eq i8 %x, 12 |
| br i1 %13, label %bb25, label %bb26 |
| |
| bb25: ; preds = %bb24 |
| store i8 12, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb26: ; preds = %bb24 |
| %14 = icmp eq i8 %x, 13 |
| br i1 %14, label %bb27, label %bb28 |
| |
| bb27: ; preds = %bb26 |
| store i8 13, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb28: ; preds = %bb26 |
| %15 = icmp eq i8 %x, 14 |
| br i1 %15, label %bb29, label %bb30 |
| |
| bb29: ; preds = %bb28 |
| store i8 14, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb30: ; preds = %bb28 |
| %16 = icmp eq i8 %x, 15 |
| br i1 %16, label %bb31, label %bb32 |
| |
| bb31: ; preds = %bb30 |
| store i8 15, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb32: ; preds = %bb30 |
| %17 = icmp eq i8 %x, 16 |
| br i1 %17, label %bb33, label %bb34 |
| |
| bb33: ; preds = %bb32 |
| store i8 16, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb34: ; preds = %bb32 |
| %18 = icmp eq i8 %x, 17 |
| br i1 %18, label %bb35, label %bb36 |
| |
| bb35: ; preds = %bb34 |
| store i8 17, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb36: ; preds = %bb34 |
| %19 = icmp eq i8 %x, 18 |
| br i1 %19, label %bb37, label %bb38 |
| |
| bb37: ; preds = %bb36 |
| store i8 18, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb38: ; preds = %bb36 |
| %20 = icmp eq i8 %x, 19 |
| br i1 %20, label %bb39, label %bb40 |
| |
| bb39: ; preds = %bb38 |
| store i8 19, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb40: ; preds = %bb38 |
| %21 = icmp eq i8 %x, 20 |
| br i1 %21, label %bb41, label %bb42 |
| |
| bb41: ; preds = %bb40 |
| store i8 20, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb42: ; preds = %bb40 |
| %22 = icmp eq i8 %x, 21 |
| br i1 %22, label %bb43, label %bb44 |
| |
| bb43: ; preds = %bb42 |
| store i8 21, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb44: ; preds = %bb42 |
| %23 = icmp eq i8 %x, 22 |
| br i1 %23, label %bb45, label %bb46 |
| |
| bb45: ; preds = %bb44 |
| store i8 22, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb46: ; preds = %bb44 |
| %24 = icmp eq i8 %x, 23 |
| br i1 %24, label %bb47, label %bb48 |
| |
| bb47: ; preds = %bb46 |
| store i8 23, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb48: ; preds = %bb46 |
| %25 = icmp eq i8 %x, 24 |
| br i1 %25, label %bb49, label %bb50 |
| |
| bb49: ; preds = %bb48 |
| store i8 24, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb50: ; preds = %bb48 |
| %26 = icmp eq i8 %x, 25 |
| br i1 %26, label %bb51, label %bb52 |
| |
| bb51: ; preds = %bb50 |
| store i8 25, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb52: ; preds = %bb50 |
| %27 = icmp eq i8 %x, 26 |
| br i1 %27, label %bb53, label %bb54 |
| |
| bb53: ; preds = %bb52 |
| store i8 26, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb54: ; preds = %bb52 |
| %28 = icmp eq i8 %x, 27 |
| br i1 %28, label %bb55, label %bb56 |
| |
| bb55: ; preds = %bb54 |
| store i8 27, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb56: ; preds = %bb54 |
| %29 = icmp eq i8 %x, 28 |
| br i1 %29, label %bb57, label %bb58 |
| |
| bb57: ; preds = %bb56 |
| store i8 28, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb58: ; preds = %bb56 |
| %30 = icmp eq i8 %x, 29 |
| br i1 %30, label %bb59, label %bb60 |
| |
| bb59: ; preds = %bb58 |
| store i8 29, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb60: ; preds = %bb58 |
| %31 = icmp eq i8 %x, 30 |
| br i1 %31, label %bb61, label %bb62 |
| |
| bb61: ; preds = %bb60 |
| store i8 30, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb62: ; preds = %bb60 |
| %32 = icmp eq i8 %x, 31 |
| br i1 %32, label %bb63, label %bb64 |
| |
| bb63: ; preds = %bb62 |
| store i8 31, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb64: ; preds = %bb62 |
| %33 = icmp eq i8 %x, 32 |
| br i1 %33, label %bb65, label %bb66 |
| |
| bb65: ; preds = %bb64 |
| store i8 32, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb66: ; preds = %bb64 |
| %34 = icmp eq i8 %x, 33 |
| br i1 %34, label %bb67, label %bb68 |
| |
| bb67: ; preds = %bb66 |
| store i8 33, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb68: ; preds = %bb66 |
| %35 = icmp eq i8 %x, 34 |
| br i1 %35, label %bb69, label %bb70 |
| |
| bb69: ; preds = %bb68 |
| store i8 34, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb70: ; preds = %bb68 |
| %36 = icmp eq i8 %x, 35 |
| br i1 %36, label %bb71, label %bb72 |
| |
| bb71: ; preds = %bb70 |
| store i8 35, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb72: ; preds = %bb70 |
| %37 = icmp eq i8 %x, 36 |
| br i1 %37, label %bb73, label %bb74 |
| |
| bb73: ; preds = %bb72 |
| store i8 36, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb74: ; preds = %bb72 |
| %38 = icmp eq i8 %x, 37 |
| br i1 %38, label %bb75, label %bb76 |
| |
| bb75: ; preds = %bb74 |
| store i8 37, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb76: ; preds = %bb74 |
| %39 = icmp eq i8 %x, 38 |
| br i1 %39, label %bb77, label %bb78 |
| |
| bb77: ; preds = %bb76 |
| store i8 38, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb78: ; preds = %bb76 |
| %40 = icmp eq i8 %x, 39 |
| br i1 %40, label %bb79, label %bb80 |
| |
| bb79: ; preds = %bb78 |
| store i8 39, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb80: ; preds = %bb78 |
| %41 = icmp eq i8 %x, 40 |
| br i1 %41, label %bb81, label %bb82 |
| |
| bb81: ; preds = %bb80 |
| store i8 40, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb82: ; preds = %bb80 |
| %42 = icmp eq i8 %x, 41 |
| br i1 %42, label %bb83, label %bb84 |
| |
| bb83: ; preds = %bb82 |
| store i8 41, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb84: ; preds = %bb82 |
| %43 = icmp eq i8 %x, 42 |
| br i1 %43, label %bb85, label %bb86 |
| |
| bb85: ; preds = %bb84 |
| store i8 42, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb86: ; preds = %bb84 |
| %44 = icmp eq i8 %x, 43 |
| br i1 %44, label %bb87, label %bb88 |
| |
| bb87: ; preds = %bb86 |
| store i8 43, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb88: ; preds = %bb86 |
| %45 = icmp eq i8 %x, 44 |
| br i1 %45, label %bb89, label %bb90 |
| |
| bb89: ; preds = %bb88 |
| store i8 44, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb90: ; preds = %bb88 |
| %46 = icmp eq i8 %x, 45 |
| br i1 %46, label %bb91, label %bb92 |
| |
| bb91: ; preds = %bb90 |
| store i8 45, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb92: ; preds = %bb90 |
| %47 = icmp eq i8 %x, 46 |
| br i1 %47, label %bb93, label %bb94 |
| |
| bb93: ; preds = %bb92 |
| store i8 46, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb94: ; preds = %bb92 |
| %48 = icmp eq i8 %x, 47 |
| br i1 %48, label %bb95, label %bb96 |
| |
| bb95: ; preds = %bb94 |
| store i8 47, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb96: ; preds = %bb94 |
| %49 = icmp eq i8 %x, 48 |
| br i1 %49, label %bb97, label %bb98 |
| |
| bb97: ; preds = %bb96 |
| store i8 48, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb98: ; preds = %bb96 |
| %50 = icmp eq i8 %x, 49 |
| br i1 %50, label %bb99, label %bb100 |
| |
| bb99: ; preds = %bb98 |
| store i8 49, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb100: ; preds = %bb98 |
| %51 = icmp eq i8 %x, 50 |
| br i1 %51, label %bb101, label %bb102 |
| |
| bb101: ; preds = %bb100 |
| store i8 50, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb102: ; preds = %bb100 |
| %52 = icmp eq i8 %x, 51 |
| br i1 %52, label %bb103, label %bb104 |
| |
| bb103: ; preds = %bb102 |
| store i8 51, ptr %_0, align 1 |
| br label %bb105 |
| |
| bb104: ; preds = %bb102 |
| store i8 52, ptr %_0, align 1 |
| br label %bb105 |
| } |
| |
| ; Make sure the call is inlined. |
| define i8 @test2(i8 %x) { |
| ; CHECK-LABEL: define range(i8 0, 53) i8 @test2( |
| ; CHECK-SAME: i8 [[X:%.*]]) local_unnamed_addr #[[ATTR0]] { |
| ; CHECK-NEXT: [[CALL:%.*]] = tail call range(i8 0, 53) i8 @llvm.umin.i8(i8 [[X]], i8 52) |
| ; CHECK-NEXT: ret i8 [[CALL]] |
| ; |
| %call = call i8 @test(i8 %x) |
| ret i8 %call |
| } |