Skip to content

Commit 56d3f4e

Browse files
committed
VT: pre-commit tests for implies-false
1 parent 7e01a32 commit 56d3f4e

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

llvm/test/Analysis/ValueTracking/implied-condition-samesign.ll

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,20 @@ define i1 @sgt_implies_ge_via_assume(i32 %i, i32 %j) {
126126
ret i1 %i.ge.j
127127
}
128128

129+
define i1 @sgt_implies_false_le_via_assume(i32 %i, i32 %j) {
130+
; CHECK-LABEL: define i1 @sgt_implies_false_le_via_assume(
131+
; CHECK-SAME: i32 [[I:%.*]], i32 [[J:%.*]]) {
132+
; CHECK-NEXT: [[I_SGT_J:%.*]] = icmp sgt i32 [[I]], [[J]]
133+
; CHECK-NEXT: call void @llvm.assume(i1 [[I_SGT_J]])
134+
; CHECK-NEXT: [[I_LE_J:%.*]] = icmp samesign ule i32 [[I]], [[J]]
135+
; CHECK-NEXT: ret i1 [[I_LE_J]]
136+
;
137+
%i.sgt.j = icmp sgt i32 %i, %j
138+
call void @llvm.assume(i1 %i.sgt.j)
139+
%i.le.j = icmp samesign ule i32 %i, %j
140+
ret i1 %i.le.j
141+
}
142+
129143
define i32 @gt_implies_sge_dominating(i32 %a, i32 %len) {
130144
; CHECK-LABEL: define i32 @gt_implies_sge_dominating(
131145
; CHECK-SAME: i32 [[A:%.*]], i32 [[LEN:%.*]]) {
@@ -150,6 +164,30 @@ end:
150164
ret i32 -1
151165
}
152166

167+
define i32 @gt_implies_false_sle_dominating(i32 %a, i32 %len) {
168+
; CHECK-LABEL: define i32 @gt_implies_false_sle_dominating(
169+
; CHECK-SAME: i32 [[A:%.*]], i32 [[LEN:%.*]]) {
170+
; CHECK-NEXT: [[ENTRY:.*:]]
171+
; CHECK-NEXT: [[A_GT_LEN:%.*]] = icmp samesign ugt i32 [[A]], [[LEN]]
172+
; CHECK-NEXT: br i1 [[A_GT_LEN]], label %[[TAKEN:.*]], label %[[END:.*]]
173+
; CHECK: [[TAKEN]]:
174+
; CHECK-NEXT: ret i32 0
175+
; CHECK: [[END]]:
176+
; CHECK-NEXT: ret i32 -1
177+
;
178+
entry:
179+
%a.gt.len = icmp samesign ugt i32 %a, %len
180+
br i1 %a.gt.len, label %taken, label %end
181+
182+
taken:
183+
%a.sle.len = icmp sle i32 %a, %len
184+
%res = select i1 %a.sle.len, i32 30, i32 0
185+
ret i32 %res
186+
187+
end:
188+
ret i32 -1
189+
}
190+
153191
define i32 @gt_implies_sge_dominating_cr(i32 %a, i32 %len) {
154192
; CHECK-LABEL: define i32 @gt_implies_sge_dominating_cr(
155193
; CHECK-SAME: i32 [[A:%.*]], i32 [[LEN:%.*]]) {

0 commit comments

Comments
 (0)