brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · 7101244 Raw
143 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -S -passes=correlated-propagation %s | FileCheck %s3 4declare void @use(i1)5 6define void @ctpop1(i8 %v) {7; CHECK-LABEL: define void @ctpop1(8; CHECK-SAME: i8 [[V:%.*]]) {9; CHECK-NEXT:  [[ENTRY:.*:]]10; CHECK-NEXT:    [[RES:%.*]] = call range(i8 0, 9) i8 @llvm.ctpop.i8(i8 [[V]])11; CHECK-NEXT:    [[C0_0:%.*]] = icmp samesign uge i8 [[RES]], 312; CHECK-NEXT:    [[C0_1:%.*]] = icmp samesign ule i8 [[RES]], 713; CHECK-NEXT:    [[C0:%.*]] = and i1 [[C0_0]], [[C0_1]]14; CHECK-NEXT:    br i1 [[C0]], label %[[RANGE_3_8:.*]], label %[[ED:.*]]15; CHECK:       [[RANGE_3_8]]:16; CHECK-NEXT:    call void @use(i1 true)17; CHECK-NEXT:    [[CMP1:%.*]] = icmp uge i8 [[V]], 818; CHECK-NEXT:    call void @use(i1 [[CMP1]])19; CHECK-NEXT:    call void @use(i1 true)20; CHECK-NEXT:    [[CMP3:%.*]] = icmp ule i8 [[V]], -321; CHECK-NEXT:    call void @use(i1 [[CMP3]])22; CHECK-NEXT:    ret void23; CHECK:       [[ED]]:24; CHECK-NEXT:    ret void25;26entry:27  %res = call range(i8 0, 9) i8 @llvm.ctpop.i8(i8 %v)28  %c0.0 = icmp uge i8 %res, 329  %c0.1 = icmp ule i8 %res, 730  %c0 = and i1 %c0.0, %c0.131  br i1 %c0, label %range.3.8, label %ed32 33range.3.8:34  %cmp0 = icmp uge i8 %v, 735  call void @use(i1 %cmp0) ; true36  %cmp1 = icmp uge i8 %v, 837  call void @use(i1 %cmp1) ; unknown38  %cmp2 = icmp ule i8 %v, 25439  call void @use(i1 %cmp2) ; true40  %cmp3 = icmp ule i8 %v, 25341  call void @use(i1 %cmp3) ; unknown42  ret void43 44ed:45  ret void46}47 48define void @ctpop2(i8 %v) {49; CHECK-LABEL: define void @ctpop2(50; CHECK-SAME: i8 [[V:%.*]]) {51; CHECK-NEXT:  [[ENTRY:.*:]]52; CHECK-NEXT:    [[RES:%.*]] = call range(i8 0, 9) i8 @llvm.ctpop.i8(i8 [[V]])53; CHECK-NEXT:    [[C2_0:%.*]] = icmp samesign uge i8 [[RES]], 154; CHECK-NEXT:    [[C2_1:%.*]] = icmp samesign ule i8 [[RES]], 455; CHECK-NEXT:    [[C2:%.*]] = and i1 [[C2_0]], [[C2_1]]56; CHECK-NEXT:    br i1 [[C2]], label %[[RANGE_1_5:.*]], label %[[ED:.*]]57; CHECK:       [[RANGE_1_5]]:58; CHECK-NEXT:    call void @use(i1 true)59; CHECK-NEXT:    [[CMP9:%.*]] = icmp uge i8 [[V]], 260; CHECK-NEXT:    call void @use(i1 [[CMP9]])61; CHECK-NEXT:    call void @use(i1 true)62; CHECK-NEXT:    [[CMP11:%.*]] = icmp ule i8 [[V]], -1763; CHECK-NEXT:    call void @use(i1 [[CMP11]])64; CHECK-NEXT:    ret void65; CHECK:       [[ED]]:66; CHECK-NEXT:    ret void67;68entry:69  %res = call range(i8 0, 9) i8 @llvm.ctpop.i8(i8 %v)70  %c2.0 = icmp uge i8 %res, 171  %c2.1 = icmp ule i8 %res, 472  %c2 = and i1 %c2.0, %c2.173  br i1 %c2, label %range.1.5, label %ed74 75range.1.5:76  %cmp8 = icmp uge i8 %v, 177  call void @use(i1 %cmp8) ; true78  %cmp9 = icmp uge i8 %v, 279  call void @use(i1 %cmp9) ; unknown80  %cmp10 = icmp ule i8 %v, 24081  call void @use(i1 %cmp10) ; true82  %cmp11 = icmp ule i8 %v, 23983  call void @use(i1 %cmp11) ; unknown84  ret void85 86ed:87  ret void88}89 90define void @ctpop3(i8 %v) {91; CHECK-LABEL: define void @ctpop3(92; CHECK-SAME: i8 [[V:%.*]]) {93; CHECK-NEXT:  [[ENTRY:.*:]]94; CHECK-NEXT:    [[RES:%.*]] = call i8 @llvm.ctpop.i8(i8 [[V]])95; CHECK-NEXT:    [[C3:%.*]] = icmp samesign uge i8 [[RES]], 896; CHECK-NEXT:    br i1 [[C3]], label %[[RANGE_8_9:.*]], label %[[ED:.*]]97; CHECK:       [[RANGE_8_9]]:98; CHECK-NEXT:    call void @use(i1 true)99; CHECK-NEXT:    ret void100; CHECK:       [[ED]]:101; CHECK-NEXT:    ret void102;103entry:104  %res = call i8 @llvm.ctpop.i8(i8 %v)105  %c3 = icmp uge i8 %res, 8106  br i1 %c3, label %range.8.9, label %ed107 108range.8.9:109  %cmp4 = icmp eq i8 %v, -1110  call void @use(i1 %cmp4) ; true111  ret void112 113ed:114  ret void115}116 117define void @ctpop4(i8 %v) {118; CHECK-LABEL: define void @ctpop4(119; CHECK-SAME: i8 [[V:%.*]]) {120; CHECK-NEXT:  [[TEST4:.*:]]121; CHECK-NEXT:    [[RES:%.*]] = call i8 @llvm.ctpop.i8(i8 [[V]])122; CHECK-NEXT:    [[C4:%.*]] = icmp eq i8 [[RES]], 0123; CHECK-NEXT:    br i1 [[C4]], label %[[RANGE_0_1:.*]], label %[[ED:.*]]124; CHECK:       [[RANGE_0_1]]:125; CHECK-NEXT:    call void @use(i1 true)126; CHECK-NEXT:    ret void127; CHECK:       [[ED]]:128; CHECK-NEXT:    ret void129;130test4:131  %res = call i8 @llvm.ctpop.i8(i8 %v)132  %c4 = icmp eq i8 %res, 0133  br i1 %c4, label %range.0.1, label %ed134 135range.0.1:136  %cmp5 = icmp eq i8 %v, 0137  call void @use(i1 %cmp5) ; true138  ret void139 140ed:141  ret void142}143