[llvm] 6446c11 - [InstSimplify] Add additional abs intrinsic icmp tests (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 12 13:30:38 PDT 2020


Author: Nikita Popov
Date: 2020-08-12T22:28:46+02:00
New Revision: 6446c1184001ae7ec3ab83062a61661dc41fe29a

URL: https://github.com/llvm/llvm-project/commit/6446c1184001ae7ec3ab83062a61661dc41fe29a
DIFF: https://github.com/llvm/llvm-project/commit/6446c1184001ae7ec3ab83062a61661dc41fe29a.diff

LOG: [InstSimplify] Add additional abs intrinsic icmp tests (NFC)

While abs >= 0 already folds, some variations thereon don't.

Added: 
    

Modified: 
    llvm/test/Transforms/InstSimplify/abs_intrinsic.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/InstSimplify/abs_intrinsic.ll b/llvm/test/Transforms/InstSimplify/abs_intrinsic.ll
index aceaa5ccec0f..0fa2176038ea 100644
--- a/llvm/test/Transforms/InstSimplify/abs_intrinsic.ll
+++ b/llvm/test/Transforms/InstSimplify/abs_intrinsic.ll
@@ -1,6 +1,7 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt < %s -instsimplify -S | FileCheck %s
 
+declare i8 @llvm.abs.i8(i8, i1)
 declare i32 @llvm.abs.i32(i32, i1)
 declare <3 x i82> @llvm.abs.v3i82(<3 x i82>, i1)
 declare <4 x i32> @llvm.abs.v4i32(<4 x i32>, i1)
@@ -182,3 +183,25 @@ define <4 x i1> @abs_known_not_int_min_vec(<4 x i32> %x) {
   ret <4 x i1> %c2
 }
 
+; If it's >= 0 it should be >= -1 as well.
+define i1 @abs_nsw_sge_neg(i32 %x) {
+; CHECK-LABEL: @abs_nsw_sge_neg(
+; CHECK-NEXT:    [[ABS:%.*]] = call i32 @llvm.abs.i32(i32 [[X:%.*]], i1 true)
+; CHECK-NEXT:    [[C:%.*]] = icmp sge i32 [[ABS]], -1
+; CHECK-NEXT:    ret i1 [[C]]
+;
+  %abs = call i32 @llvm.abs.i32(i32 %x, i1 true)
+  %c = icmp sge i32 %abs, -1
+  ret i1 %c
+}
+
+define i1 @abs_ule_int_min(i8 %x) {
+; CHECK-LABEL: @abs_ule_int_min(
+; CHECK-NEXT:    [[ABS:%.*]] = call i8 @llvm.abs.i8(i8 [[X:%.*]], i1 false)
+; CHECK-NEXT:    [[C:%.*]] = icmp ule i8 [[ABS]], -128
+; CHECK-NEXT:    ret i1 [[C]]
+;
+  %abs = call i8 @llvm.abs.i8(i8 %x, i1 false)
+  %c = icmp ule i8 %abs, 128
+  ret i1 %c
+}


        


More information about the llvm-commits mailing list