[llvm] r355220 - [InstCombine] add tests for umin/umax narrowing (PR14613); NFC

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 1 11:42:35 PST 2019


Author: spatel
Date: Fri Mar  1 11:42:34 2019
New Revision: 355220

URL: http://llvm.org/viewvc/llvm-project?rev=355220&view=rev
Log:
[InstCombine] add tests for umin/umax narrowing (PR14613); NFC

Modified:
    llvm/trunk/test/Transforms/InstCombine/minmax-fold.ll

Modified: llvm/trunk/test/Transforms/InstCombine/minmax-fold.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/minmax-fold.ll?rev=355220&r1=355219&r2=355220&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/minmax-fold.ll (original)
+++ llvm/trunk/test/Transforms/InstCombine/minmax-fold.ll Fri Mar  1 11:42:34 2019
@@ -1134,3 +1134,37 @@ define <2 x i33> @add_umax_vec(<2 x i33>
   %r = select <2 x i1> %c, <2 x i33> %a, <2 x i33> <i33 240, i33 240>
   ret <2 x i33> %r
 }
+
+define i8 @PR14613_umin(i8 %x) {
+; CHECK-LABEL: @PR14613_umin(
+; CHECK-NEXT:    [[U4:%.*]] = zext i8 [[X:%.*]] to i32
+; CHECK-NEXT:    [[U5:%.*]] = add nuw nsw i32 [[U4]], 15
+; CHECK-NEXT:    [[U6:%.*]] = icmp ult i32 [[U5]], 255
+; CHECK-NEXT:    [[U7:%.*]] = select i1 [[U6]], i32 [[U5]], i32 255
+; CHECK-NEXT:    [[R:%.*]] = trunc i32 [[U7]] to i8
+; CHECK-NEXT:    ret i8 [[R]]
+;
+  %u4 = zext i8 %x to i32
+  %u5 = add nuw nsw i32 %u4, 15
+  %u6 = icmp ult i32 %u5, 255
+  %u7 = select i1 %u6, i32 %u5, i32 255
+  %r = trunc i32 %u7 to i8
+  ret i8 %r
+}
+
+define i8 @PR14613_umax(i8 %x) {
+; CHECK-LABEL: @PR14613_umax(
+; CHECK-NEXT:    [[U4:%.*]] = zext i8 [[X:%.*]] to i32
+; CHECK-NEXT:    [[U5:%.*]] = add nuw nsw i32 [[U4]], 15
+; CHECK-NEXT:    [[U6:%.*]] = icmp ugt i32 [[U5]], 255
+; CHECK-NEXT:    [[U7:%.*]] = select i1 [[U6]], i32 [[U5]], i32 255
+; CHECK-NEXT:    [[R:%.*]] = trunc i32 [[U7]] to i8
+; CHECK-NEXT:    ret i8 [[R]]
+;
+  %u4 = zext i8 %x to i32
+  %u5 = add nuw nsw i32 %u4, 15
+  %u6 = icmp ugt i32 %u5, 255
+  %u7 = select i1 %u6, i32 %u5, i32 255
+  %r = trunc i32 %u7 to i8
+  ret i8 %r
+}




More information about the llvm-commits mailing list