Skip to content

Commit

Permalink
[InstSimplify] Add pre-commit tests for PR65910. NFC.
Browse files Browse the repository at this point in the history
  • Loading branch information
dtcxzyw committed Sep 16, 2023
1 parent a59870a commit bce6c53
Showing 1 changed file with 120 additions and 0 deletions.
120 changes: 120 additions & 0 deletions llvm/test/Transforms/InstSimplify/and-or-implied-cond.ll
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

0 comments on commit bce6c53

Please sign in to comment.