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