brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.7 KiB · a14ef35 Raw
151 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes=instcombine < %s | FileCheck %s3 4define i1 @sdiv_by_zero_indirect_is_poison(i1 %c, i1 %x, i1 %y) {5; CHECK-LABEL: @sdiv_by_zero_indirect_is_poison(6; CHECK-NEXT:    br i1 [[C:%.*]], label [[TRUE:%.*]], label [[FALSE:%.*]]7; CHECK:       true:8; CHECK-NEXT:    br label [[DONE:%.*]]9; CHECK:       false:10; CHECK-NEXT:    br label [[DONE]]11; CHECK:       done:12; CHECK-NEXT:    ret i1 poison13;14  br i1 %c, label %true, label %false15true:16  %y_true = and i1 %y, 017  br label %done18false:19  %y_false = and i1 %y, 020  br label %done21done:22  %yy = phi i1 [ %y_false, %false ], [ %y_true, %true ]23  %r = sdiv i1 %x, %yy24  ret i1 %r25}26 27define i1 @udiv_by_zero_indirect_is_poison(i1 %c, i1 %x, i1 %y) {28; CHECK-LABEL: @udiv_by_zero_indirect_is_poison(29; CHECK-NEXT:    br i1 [[C:%.*]], label [[TRUE:%.*]], label [[FALSE:%.*]]30; CHECK:       true:31; CHECK-NEXT:    br label [[DONE:%.*]]32; CHECK:       false:33; CHECK-NEXT:    br label [[DONE]]34; CHECK:       done:35; CHECK-NEXT:    ret i1 poison36;37  br i1 %c, label %true, label %false38true:39  %y_true = and i1 %y, 040  br label %done41false:42  %y_false = and i1 %y, 043  br label %done44done:45  %yy = phi i1 [ %y_false, %false ], [ %y_true, %true ]46  %r = udiv i1 %x, %yy47  ret i1 %r48}49 50define i1 @srem_by_zero_indirect_is_poison(i1 %c, i1 %x, i1 %y) {51; CHECK-LABEL: @srem_by_zero_indirect_is_poison(52; CHECK-NEXT:    br i1 [[C:%.*]], label [[TRUE:%.*]], label [[FALSE:%.*]]53; CHECK:       true:54; CHECK-NEXT:    br label [[DONE:%.*]]55; CHECK:       false:56; CHECK-NEXT:    br label [[DONE]]57; CHECK:       done:58; CHECK-NEXT:    ret i1 poison59;60  br i1 %c, label %true, label %false61true:62  %y_true = and i1 %y, 063  br label %done64false:65  %y_false = and i1 %y, 066  br label %done67done:68  %yy = phi i1 [ %y_false, %false ], [ %y_true, %true ]69  %r = srem i1 %x, %yy70  ret i1 %r71}72 73define i1 @urem_by_zero_indirect_is_poison(i1 %c, i1 %x, i1 %y) {74; CHECK-LABEL: @urem_by_zero_indirect_is_poison(75; CHECK-NEXT:    br i1 [[C:%.*]], label [[TRUE:%.*]], label [[FALSE:%.*]]76; CHECK:       true:77; CHECK-NEXT:    br label [[DONE:%.*]]78; CHECK:       false:79; CHECK-NEXT:    br label [[DONE]]80; CHECK:       done:81; CHECK-NEXT:    ret i1 poison82;83  br i1 %c, label %true, label %false84true:85  %y_true = and i1 %y, 086  br label %done87false:88  %y_false = and i1 %y, 089  br label %done90done:91  %yy = phi i1 [ %y_false, %false ], [ %y_true, %true ]92  %r = urem i1 %x, %yy93  ret i1 %r94}95 96define i1 @sdiv_i1_is_op0(i1 %x, i1 %y) {97; CHECK-LABEL: @sdiv_i1_is_op0(98; CHECK-NEXT:    ret i1 [[X:%.*]]99;100  %r = sdiv i1 %x, %y101  ret i1 %r102}103 104define i1 @udiv_i1_is_op0(i1 %x, i1 %y) {105; CHECK-LABEL: @udiv_i1_is_op0(106; CHECK-NEXT:    ret i1 [[X:%.*]]107;108  %r = udiv i1 %x, %y109  ret i1 %r110}111 112define i1 @srem_i1_is_zero(i1 %x, i1 %y) {113; CHECK-LABEL: @srem_i1_is_zero(114; CHECK-NEXT:    ret i1 false115;116  %r = srem i1 %x, %y117  ret i1 %r118}119 120define i1 @urem_i1_is_zero(i1 %x, i1 %y) {121; CHECK-LABEL: @urem_i1_is_zero(122; CHECK-NEXT:    ret i1 false123;124  %r = urem i1 %x, %y125  ret i1 %r126}127 128declare void @llvm.assume(i1 noundef)129 130define i1 @pt62607() {131; CHECK-LABEL: @pt62607(132; CHECK-NEXT:  entry_1:133; CHECK-NEXT:    br label [[LOOP_5:%.*]]134; CHECK:       loop_5:135; CHECK-NEXT:    br i1 poison, label [[LOOP_5]], label [[LOOP_EXIT_8:%.*]]136; CHECK:       loop_exit_8:137; CHECK-NEXT:    ret i1 false138;139entry_1:140  %val_i1_38 = trunc i8 109 to i1141  br label %loop_5142loop_5:  ; preds = %loop_5, %entry_1143  %loop_cnt_i1_26.0 = phi i1 [ false, %entry_1 ], [ %val_i1_55, %loop_5 ]144  %val_i1_55 = add i1 %loop_cnt_i1_26.0, true145  call void @llvm.assume(i1 %val_i1_55)146  %val_i1_67 = udiv i1 %val_i1_38, %loop_cnt_i1_26.0147  br i1 %val_i1_67, label %loop_5, label %loop_exit_8148loop_exit_8:  ; preds = %loop_5149  ret i1 false150}151