[llvm] bce6c53 - [InstSimplify] Add pre-commit tests for PR65910. NFC.

Yingwei Zheng via llvm-commits llvm-commits at lists.llvm.org
Sat Sep 16 05:07:54 PDT 2023


Author: Yingwei Zheng
Date: 2023-09-16T20:07:04+08:00
New Revision: bce6c53464c115f5f83a57284e409b1db8c2b03f

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

LOG: [InstSimplify] Add pre-commit tests for PR65910. NFC.

Added: 
    

Modified: 
    llvm/test/Transforms/InstSimplify/and-or-implied-cond.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/InstSimplify/and-or-implied-cond.ll b/llvm/test/Transforms/InstSimplify/and-or-implied-cond.ll
index 90b0abd40cb4400..4a6610250df559a 100644
--- a/llvm/test/Transforms/InstSimplify/and-or-implied-cond.ll
+++ b/llvm/test/Transforms/InstSimplify/and-or-implied-cond.ll
@@ -126,3 +126,123 @@ define i1 @and_not_implied(i8 %x, i1 %c) {
   %and = and i1 %or, %cmp2
   ret i1 %and
 }
+
+define i1 @uaddo_and(i64 %a, i64 %b){
+; CHECK-LABEL: @uaddo_and(
+; CHECK-NEXT:    [[S:%.*]] = add i64 [[A:%.*]], [[B:%.*]]
+; CHECK-NEXT:    [[COND_A:%.*]] = icmp uge i64 [[S]], [[A]]
+; CHECK-NEXT:    [[COND_B:%.*]] = icmp uge i64 [[S]], [[B]]
+; CHECK-NEXT:    [[COND:%.*]] = and i1 [[COND_A]], [[COND_B]]
+; CHECK-NEXT:    ret i1 [[COND]]
+;
+  %s = add i64 %a, %b
+  %cond_a = icmp uge i64 %s, %a
+  %cond_b = icmp uge i64 %s, %b
+  %cond = and i1 %cond_a, %cond_b
+  ret i1 %cond
+}
+
+define i1 @uaddo_and_commuted1(i64 %a, i64 %b){
+; CHECK-LABEL: @uaddo_and_commuted1(
+; CHECK-NEXT:    [[S:%.*]] = add i64 [[A:%.*]], [[B:%.*]]
+; CHECK-NEXT:    [[COND_A:%.*]] = icmp ule i64 [[A]], [[S]]
+; CHECK-NEXT:    [[COND_B:%.*]] = icmp uge i64 [[S]], [[B]]
+; CHECK-NEXT:    [[COND:%.*]] = and i1 [[COND_A]], [[COND_B]]
+; CHECK-NEXT:    ret i1 [[COND]]
+;
+  %s = add i64 %a, %b
+  %cond_a = icmp ule i64 %a, %s
+  %cond_b = icmp uge i64 %s, %b
+  %cond = and i1 %cond_a, %cond_b
+  ret i1 %cond
+}
+
+define i1 @uaddo_and_commuted2(i64 %a, i64 %b){
+; CHECK-LABEL: @uaddo_and_commuted2(
+; CHECK-NEXT:    [[S:%.*]] = add i64 [[A:%.*]], [[B:%.*]]
+; CHECK-NEXT:    [[COND_A:%.*]] = icmp uge i64 [[S]], [[A]]
+; CHECK-NEXT:    [[COND_B:%.*]] = icmp ule i64 [[B]], [[S]]
+; CHECK-NEXT:    [[COND:%.*]] = and i1 [[COND_A]], [[COND_B]]
+; CHECK-NEXT:    ret i1 [[COND]]
+;
+  %s = add i64 %a, %b
+  %cond_a = icmp uge i64 %s, %a
+  %cond_b = icmp ule i64 %b, %s
+  %cond = and i1 %cond_a, %cond_b
+  ret i1 %cond
+}
+
+define i1 @uaddo_and_commuted3(i64 %a, i64 %b){
+; CHECK-LABEL: @uaddo_and_commuted3(
+; CHECK-NEXT:    [[S:%.*]] = add i64 [[A:%.*]], [[B:%.*]]
+; CHECK-NEXT:    [[COND_A:%.*]] = icmp ule i64 [[A]], [[S]]
+; CHECK-NEXT:    [[COND_B:%.*]] = icmp ule i64 [[B]], [[S]]
+; CHECK-NEXT:    [[COND:%.*]] = and i1 [[COND_A]], [[COND_B]]
+; CHECK-NEXT:    ret i1 [[COND]]
+;
+  %s = add i64 %a, %b
+  %cond_a = icmp ule i64 %a, %s
+  %cond_b = icmp ule i64 %b, %s
+  %cond = and i1 %cond_a, %cond_b
+  ret i1 %cond
+}
+
+define i1 @uaddo_or(i64 %a, i64 %b){
+; CHECK-LABEL: @uaddo_or(
+; CHECK-NEXT:    [[S:%.*]] = add i64 [[A:%.*]], [[B:%.*]]
+; CHECK-NEXT:    [[COND_A:%.*]] = icmp ult i64 [[S]], [[A]]
+; CHECK-NEXT:    [[COND_B:%.*]] = icmp ult i64 [[S]], [[B]]
+; CHECK-NEXT:    [[COND:%.*]] = or i1 [[COND_A]], [[COND_B]]
+; CHECK-NEXT:    ret i1 [[COND]]
+;
+  %s = add i64 %a, %b
+  %cond_a = icmp ult i64 %s, %a
+  %cond_b = icmp ult i64 %s, %b
+  %cond = or i1 %cond_a, %cond_b
+  ret i1 %cond
+}
+
+define i1 @uaddo_or_commuted1(i64 %a, i64 %b){
+; CHECK-LABEL: @uaddo_or_commuted1(
+; CHECK-NEXT:    [[S:%.*]] = add i64 [[A:%.*]], [[B:%.*]]
+; CHECK-NEXT:    [[COND_A:%.*]] = icmp ugt i64 [[A]], [[S]]
+; CHECK-NEXT:    [[COND_B:%.*]] = icmp ult i64 [[S]], [[B]]
+; CHECK-NEXT:    [[COND:%.*]] = or i1 [[COND_A]], [[COND_B]]
+; CHECK-NEXT:    ret i1 [[COND]]
+;
+  %s = add i64 %a, %b
+  %cond_a = icmp ugt i64 %a, %s
+  %cond_b = icmp ult i64 %s, %b
+  %cond = or i1 %cond_a, %cond_b
+  ret i1 %cond
+}
+
+define i1 @uaddo_or_commuted2(i64 %a, i64 %b){
+; CHECK-LABEL: @uaddo_or_commuted2(
+; CHECK-NEXT:    [[S:%.*]] = add i64 [[A:%.*]], [[B:%.*]]
+; CHECK-NEXT:    [[COND_A:%.*]] = icmp ult i64 [[S]], [[A]]
+; CHECK-NEXT:    [[COND_B:%.*]] = icmp ugt i64 [[B]], [[S]]
+; CHECK-NEXT:    [[COND:%.*]] = or i1 [[COND_A]], [[COND_B]]
+; CHECK-NEXT:    ret i1 [[COND]]
+;
+  %s = add i64 %a, %b
+  %cond_a = icmp ult i64 %s, %a
+  %cond_b = icmp ugt i64 %b, %s
+  %cond = or i1 %cond_a, %cond_b
+  ret i1 %cond
+}
+
+define i1 @uaddo_or_commuted3(i64 %a, i64 %b){
+; CHECK-LABEL: @uaddo_or_commuted3(
+; CHECK-NEXT:    [[S:%.*]] = add i64 [[A:%.*]], [[B:%.*]]
+; CHECK-NEXT:    [[COND_A:%.*]] = icmp ugt i64 [[A]], [[S]]
+; CHECK-NEXT:    [[COND_B:%.*]] = icmp ugt i64 [[B]], [[S]]
+; CHECK-NEXT:    [[COND:%.*]] = or i1 [[COND_A]], [[COND_B]]
+; CHECK-NEXT:    ret i1 [[COND]]
+;
+  %s = add i64 %a, %b
+  %cond_a = icmp ugt i64 %a, %s
+  %cond_b = icmp ugt i64 %b, %s
+  %cond = or i1 %cond_a, %cond_b
+  ret i1 %cond
+}


        


More information about the llvm-commits mailing list