93 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=lower-switch -S | FileCheck %s3 4define i64 @f(i1 %bool, i128 %i128) {5; CHECK-LABEL: @f(6; CHECK-NEXT: BB:7; CHECK-NEXT: br label [[NODEBLOCK1:%.*]]8; CHECK: NodeBlock1:9; CHECK-NEXT: [[PIVOT2:%.*]] = icmp slt i128 [[I128:%.*]], 1620131029101800844610; CHECK-NEXT: br i1 [[PIVOT2]], label [[LEAFBLOCK:%.*]], label [[NODEBLOCK:%.*]]11; CHECK: NodeBlock:12; CHECK-NEXT: [[PIVOT:%.*]] = icmp slt i128 [[I128]], 1620131029101800844713; CHECK-NEXT: br i1 [[PIVOT]], label [[SW_C3:%.*]], label [[SW_C2:%.*]]14; CHECK: LeafBlock:15; CHECK-NEXT: [[SWITCHLEAF:%.*]] = icmp eq i128 [[I128]], 1620131029101800844516; CHECK-NEXT: br i1 [[SWITCHLEAF]], label [[SW_C4:%.*]], label [[SW_C1:%.*]]17; CHECK: BB1:18; CHECK-NEXT: unreachable19; CHECK: SW_C1:20; CHECK-NEXT: br i1 [[BOOL:%.*]], label [[BB1:%.*]], label [[SW_C1]]21; CHECK: SW_C2:22; CHECK-NEXT: ret i64 023; CHECK: SW_C3:24; CHECK-NEXT: ret i64 125; CHECK: SW_C4:26; CHECK-NEXT: ret i64 227;28BB:29 switch i128 %i128, label %BB1 [30 i128 627, label %SW_C131 i128 16201310291018008447, label %SW_C232 i128 16201310291018008446, label %SW_C333 i128 16201310291018008445, label %SW_C434 ]35 36BB1: ; preds = %SW_C1, %BB37 unreachable38 39SW_C1: ; preds = %SW_C1, %BB40 br i1 %bool, label %BB1, label %SW_C141 42SW_C2: ; preds = %BB43 ret i64 044 45SW_C3: ; preds = %BB46 ret i64 147 48SW_C4: ; preds = %BB49 ret i64 250}51 52define i64 @f_empty(i1 %bool, i128 %i128) {53; CHECK-LABEL: @f_empty(54; CHECK-NEXT: BB:55; CHECK-NEXT: br label [[BB1:%.*]]56; CHECK: BB1:57; CHECK-NEXT: unreachable58;59BB:60 switch i128 %i128, label %BB1 []61 62BB1: ; preds = %BB63 unreachable64}65 66define void @f_i1() {67entry:68 switch i1 false, label %sw.bb [69 i1 false, label %sw.bb1270 ]71 72sw.bb: ; preds = %entry73 unreachable74 75sw.bb12: ; preds = %entry76 unreachable77}78 79define void @f_i2(i2 %cond) {80entry:81 switch i2 %cond, label %sw.bb [82 i2 0, label %sw.bb1283 i2 1, label %sw.bb1284 i2 2, label %sw.bb1285 i2 3, label %sw.bb1286 ]87 88sw.bb: ; preds = %entry89 unreachable90 91sw.bb12: ; preds = %entry92 unreachable93}