brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.9 KiB · 60757c5 Raw
160 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 42; RUN: opt < %s -passes=instcombine -S | FileCheck %s3 4define void @test_ult_rhsc(i8 %x) {5; CHECK-LABEL: define void @test_ult_rhsc(6; CHECK-SAME: i8 [[X:%.*]]) {7; CHECK-NEXT:    switch i8 [[X]], label [[BB1:%.*]] [8; CHECK-NEXT:      i8 2, label [[BB2:%.*]]9; CHECK-NEXT:      i8 12, label [[BB3:%.*]]10; CHECK-NEXT:    ]11; CHECK:       bb1:12; CHECK-NEXT:    call void @func1()13; CHECK-NEXT:    unreachable14; CHECK:       bb2:15; CHECK-NEXT:    call void @func2()16; CHECK-NEXT:    unreachable17; CHECK:       bb3:18; CHECK-NEXT:    call void @func3()19; CHECK-NEXT:    unreachable20;21  %val = add nsw i8 %x, -222  %cmp = icmp ult i8 %val, 1123  %cond = select i1 %cmp, i8 %val, i8 624  switch i8 %cond, label %bb1 [25  i8 0, label %bb226  i8 10, label %bb327  ]28 29bb1:30  call void @func1()31  unreachable32bb2:33  call void @func2()34  unreachable35bb3:36  call void @func3()37  unreachable38}39 40define void @test_eq_lhsc(i8 %x) {41; CHECK-LABEL: define void @test_eq_lhsc(42; CHECK-SAME: i8 [[X:%.*]]) {43; CHECK-NEXT:    switch i8 [[X]], label [[BB1:%.*]] [44; CHECK-NEXT:      i8 0, label [[BB2:%.*]]45; CHECK-NEXT:      i8 10, label [[BB3:%.*]]46; CHECK-NEXT:    ]47; CHECK:       bb1:48; CHECK-NEXT:    call void @func1()49; CHECK-NEXT:    unreachable50; CHECK:       bb2:51; CHECK-NEXT:    call void @func2()52; CHECK-NEXT:    unreachable53; CHECK:       bb3:54; CHECK-NEXT:    call void @func3()55; CHECK-NEXT:    unreachable56;57  %cmp = icmp eq i8 %x, 458  %cond = select i1 %cmp, i8 6, i8 %x59  switch i8 %cond, label %bb1 [60  i8 0, label %bb261  i8 10, label %bb362  ]63 64bb1:65  call void @func1()66  unreachable67bb2:68  call void @func2()69  unreachable70bb3:71  call void @func3()72  unreachable73}74 75define void @test_ult_rhsc_invalid_cond(i8 %x, i8 %y) {76; CHECK-LABEL: define void @test_ult_rhsc_invalid_cond(77; CHECK-SAME: i8 [[X:%.*]], i8 [[Y:%.*]]) {78; CHECK-NEXT:    [[VAL:%.*]] = add nsw i8 [[X]], -279; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[Y]], 1180; CHECK-NEXT:    [[COND:%.*]] = select i1 [[CMP]], i8 [[VAL]], i8 681; CHECK-NEXT:    switch i8 [[COND]], label [[BB1:%.*]] [82; CHECK-NEXT:      i8 0, label [[BB2:%.*]]83; CHECK-NEXT:      i8 10, label [[BB3:%.*]]84; CHECK-NEXT:      i8 13, label [[BB3]]85; CHECK-NEXT:    ]86; CHECK:       bb1:87; CHECK-NEXT:    call void @func1()88; CHECK-NEXT:    unreachable89; CHECK:       bb2:90; CHECK-NEXT:    call void @func2()91; CHECK-NEXT:    unreachable92; CHECK:       bb3:93; CHECK-NEXT:    call void @func3()94; CHECK-NEXT:    unreachable95;96  %val = add nsw i8 %x, -297  %cmp = icmp ult i8 %y, 1198  %cond = select i1 %cmp, i8 %val, i8 699  switch i8 %cond, label %bb1 [100  i8 0, label %bb2101  i8 10, label %bb3102  i8 13, label %bb3103  ]104 105bb1:106  call void @func1()107  unreachable108bb2:109  call void @func2()110  unreachable111bb3:112  call void @func3()113  unreachable114}115 116define void @test_ult_rhsc_fail(i8 %x) {117; CHECK-LABEL: define void @test_ult_rhsc_fail(118; CHECK-SAME: i8 [[X:%.*]]) {119; CHECK-NEXT:    [[VAL:%.*]] = add nsw i8 [[X]], -2120; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[VAL]], 11121; CHECK-NEXT:    [[COND:%.*]] = select i1 [[CMP]], i8 [[VAL]], i8 6122; CHECK-NEXT:    switch i8 [[COND]], label [[BB1:%.*]] [123; CHECK-NEXT:      i8 0, label [[BB2:%.*]]124; CHECK-NEXT:      i8 10, label [[BB3:%.*]]125; CHECK-NEXT:      i8 13, label [[BB3]]126; CHECK-NEXT:    ]127; CHECK:       bb1:128; CHECK-NEXT:    call void @func1()129; CHECK-NEXT:    unreachable130; CHECK:       bb2:131; CHECK-NEXT:    call void @func2()132; CHECK-NEXT:    unreachable133; CHECK:       bb3:134; CHECK-NEXT:    call void @func3()135; CHECK-NEXT:    unreachable136;137  %val = add nsw i8 %x, -2138  %cmp = icmp ult i8 %val, 11139  %cond = select i1 %cmp, i8 %val, i8 6140  switch i8 %cond, label %bb1 [141  i8 0, label %bb2142  i8 10, label %bb3143  i8 13, label %bb3144  ]145 146bb1:147  call void @func1()148  unreachable149bb2:150  call void @func2()151  unreachable152bb3:153  call void @func3()154  unreachable155}156 157declare void @func1()158declare void @func2()159declare void @func3()160