brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · fc09bab Raw
69 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=instsimplify -S < %s | FileCheck %s3declare i8 @llvm.abs.i8(i8, i1)4 5define i1 @abs_low_bit_set(i8 %x) {6; CHECK-LABEL: @abs_low_bit_set(7; CHECK-NEXT:    ret i1 false8;9  %xx = and i8 %x, 24010  %v = or i8 %xx, 411  %abs = call i8 @llvm.abs.i8(i8 %v, i1 true)12  %and = and i8 %abs, 413  %r = icmp eq i8 %and, 014  ret i1 %r15}16 17define i1 @abs_unknown_low_bit_set_fail(i8 %x) {18; CHECK-LABEL: @abs_unknown_low_bit_set_fail(19; CHECK-NEXT:    [[V:%.*]] = or i8 [[X:%.*]], 220; CHECK-NEXT:    [[ABS:%.*]] = call i8 @llvm.abs.i8(i8 [[V]], i1 true)21; CHECK-NEXT:    [[AND:%.*]] = and i8 [[ABS]], 222; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[AND]], 023; CHECK-NEXT:    ret i1 [[R]]24;25  %v = or i8 %x, 226  %abs = call i8 @llvm.abs.i8(i8 %v, i1 true)27  %and = and i8 %abs, 228  %r = icmp eq i8 %and, 029  ret i1 %r30}31 32define i1 @abs_negative(i8 %x) {33; CHECK-LABEL: @abs_negative(34; CHECK-NEXT:    ret i1 false35;36  %xx = and i8 %x, 24037  %v = or i8 %xx, 13238  %abs = call i8 @llvm.abs.i8(i8 %v, i1 true)39  %and = and i8 %abs, 840  %r = icmp eq i8 %and, 041  ret i1 %r42}43 44define i1 @abs_negative2(i8 %x) {45; CHECK-LABEL: @abs_negative2(46; CHECK-NEXT:    ret i1 false47;48  %v = or i8 %x, 13149  %abs = call i8 @llvm.abs.i8(i8 %v, i1 true)50  %and = and i8 %abs, 251  %r = icmp eq i8 %and, 252  ret i1 %r53}54 55define i1 @abs_negative_no_carry_info_fail(i8 %x) {56; CHECK-LABEL: @abs_negative_no_carry_info_fail(57; CHECK-NEXT:    [[V:%.*]] = or i8 [[X:%.*]], -12658; CHECK-NEXT:    [[ABS:%.*]] = call i8 @llvm.abs.i8(i8 [[V]], i1 true)59; CHECK-NEXT:    [[AND:%.*]] = and i8 [[ABS]], 260; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[AND]], 061; CHECK-NEXT:    ret i1 [[R]]62;63  %v = or i8 %x, 13064  %abs = call i8 @llvm.abs.i8(i8 %v, i1 true)65  %and = and i8 %abs, 266  %r = icmp eq i8 %and, 067  ret i1 %r68}69