brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · 0a6fecd Raw
109 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=instcombine -S | FileCheck %s3 4declare void @use.i8(i8)5define i1 @sdiv_exact_eq_0(i8 %x, i8 %y) {6; CHECK-LABEL: @sdiv_exact_eq_0(7; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[X:%.*]], 08; CHECK-NEXT:    ret i1 [[R]]9;10  %d = sdiv exact i8 %x, %y11  %r = icmp eq i8 %d, 012  ret i1 %r13}14 15define i1 @udiv_exact_ne_0(i8 %x, i8 %y) {16; CHECK-LABEL: @udiv_exact_ne_0(17; CHECK-NEXT:    [[R:%.*]] = icmp ne i8 [[X:%.*]], 018; CHECK-NEXT:    ret i1 [[R]]19;20  %d = udiv exact i8 %x, %y21  %r = icmp ne i8 %d, 022  ret i1 %r23}24 25define i1 @sdiv_exact_ne_1(i8 %x, i8 %y) {26; CHECK-LABEL: @sdiv_exact_ne_1(27; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[X:%.*]], 028; CHECK-NEXT:    ret i1 [[R]]29;30  %d = sdiv exact i8 %x, %y31  %r = icmp eq i8 %d, 032  ret i1 %r33}34 35define i1 @udiv_exact_eq_1(i8 %x, i8 %y) {36; CHECK-LABEL: @udiv_exact_eq_1(37; CHECK-NEXT:    [[R:%.*]] = icmp ne i8 [[X:%.*]], [[Y:%.*]]38; CHECK-NEXT:    ret i1 [[R]]39;40  %d = udiv exact i8 %x, %y41  %r = icmp ne i8 %d, 142  ret i1 %r43}44 45define i1 @sdiv_exact_eq_9_no_of(i8 %x, i8 %y) {46; CHECK-LABEL: @sdiv_exact_eq_9_no_of(47; CHECK-NEXT:    [[YY:%.*]] = and i8 [[Y:%.*]], 748; CHECK-NEXT:    [[TMP1:%.*]] = mul nuw nsw i8 [[YY]], 949; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[TMP1]], [[X:%.*]]50; CHECK-NEXT:    ret i1 [[R]]51;52  %yy = and i8 %y, 753  %d = sdiv exact i8 %x, %yy54  %r = icmp eq i8 %d, 955  ret i1 %r56}57 58define i1 @sdiv_exact_eq_9_may_of(i8 %x, i8 %y) {59; CHECK-LABEL: @sdiv_exact_eq_9_may_of(60; CHECK-NEXT:    [[D:%.*]] = sdiv exact i8 [[X:%.*]], [[Y:%.*]]61; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[D]], 962; CHECK-NEXT:    ret i1 [[R]]63;64  %d = sdiv exact i8 %x, %y65  %r = icmp eq i8 %d, 966  ret i1 %r67}68 69define i1 @sdiv_exact_eq_9_no_of_fail_multiuse(i8 %x, i8 %y) {70; CHECK-LABEL: @sdiv_exact_eq_9_no_of_fail_multiuse(71; CHECK-NEXT:    [[YY:%.*]] = and i8 [[Y:%.*]], 772; CHECK-NEXT:    [[D:%.*]] = sdiv exact i8 [[X:%.*]], [[YY]]73; CHECK-NEXT:    call void @use.i8(i8 [[D]])74; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[D]], 975; CHECK-NEXT:    ret i1 [[R]]76;77  %yy = and i8 %y, 778  %d = sdiv exact i8 %x, %yy79  call void @use.i8(i8 %d)80  %r = icmp eq i8 %d, 981  ret i1 %r82}83 84define i1 @sdiv_exact_eq_9_must_of_todo_is_false(i8 %x, i8 %y) {85; CHECK-LABEL: @sdiv_exact_eq_9_must_of_todo_is_false(86; CHECK-NEXT:    [[YY:%.*]] = or i8 [[Y:%.*]], 5587; CHECK-NEXT:    [[D:%.*]] = sdiv exact i8 [[X:%.*]], [[YY]]88; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[D]], 989; CHECK-NEXT:    ret i1 [[R]]90;91  %yy = or i8 %y, 5592  %d = sdiv exact i8 %x, %yy93  %r = icmp eq i8 %d, 994  ret i1 %r95}96 97define i1 @udiv_exact_ne_30_no_of(i8 %x, i8 %y) {98; CHECK-LABEL: @udiv_exact_ne_30_no_of(99; CHECK-NEXT:    [[YY:%.*]] = and i8 [[Y:%.*]], 7100; CHECK-NEXT:    [[TMP1:%.*]] = mul nuw i8 [[YY]], 30101; CHECK-NEXT:    [[R:%.*]] = icmp ne i8 [[TMP1]], [[X:%.*]]102; CHECK-NEXT:    ret i1 [[R]]103;104  %yy = and i8 %y, 7105  %d = udiv exact i8 %x, %yy106  %r = icmp ne i8 %d, 30107  ret i1 %r108}109