Skip to content

Commit fb802ed

Browse files
committed
[ConstraintElim] Add samesign test. NFC
1 parent 5e26fb1 commit fb802ed

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

llvm/test/Transforms/ConstraintElimination/transfer-samesign-facts.ll

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,3 +303,66 @@ define i1 @ugt_assumed_positive_values(i8 %a, i8 %b) {
303303

304304
ret i1 %result
305305
}
306+
307+
define i1 @implied_condition_sgt_ugt(i8 %a, i8 %b) {
308+
; CHECK-LABEL: @implied_condition_sgt_ugt(
309+
; CHECK-NEXT: [[CMP_SGT:%.*]] = icmp sgt i8 [[A:%.*]], [[B:%.*]]
310+
; CHECK-NEXT: br i1 [[CMP_SGT]], label [[GREATER:%.*]], label [[EXIT:%.*]]
311+
; CHECK: greater:
312+
; CHECK-NEXT: [[CMP_UGT:%.*]] = icmp samesign ugt i8 [[A]], [[B]]
313+
; CHECK-NEXT: ret i1 [[CMP_UGT]]
314+
; CHECK: exit:
315+
; CHECK-NEXT: ret i1 false
316+
;
317+
%cmp_sgt = icmp sgt i8 %a, %b
318+
br i1 %cmp_sgt, label %greater, label %exit
319+
320+
greater:
321+
%cmp_ugt = icmp samesign ugt i8 %a, %b
322+
ret i1 %cmp_ugt
323+
324+
exit:
325+
ret i1 false
326+
}
327+
328+
define i1 @implied_condition_sle_ule(i8 %a) {
329+
; CHECK-LABEL: @implied_condition_sle_ule(
330+
; CHECK-NEXT: [[CMP_SLE:%.*]] = icmp sle i8 [[A:%.*]], 42
331+
; CHECK-NEXT: br i1 [[CMP_SLE]], label [[LESS_OR_EQUAL:%.*]], label [[EXIT:%.*]]
332+
; CHECK: less_or_equal:
333+
; CHECK-NEXT: [[CMP_ULE:%.*]] = icmp samesign ule i8 [[A]], 42
334+
; CHECK-NEXT: ret i1 [[CMP_ULE]]
335+
; CHECK: exit:
336+
; CHECK-NEXT: ret i1 false
337+
;
338+
%cmp_sle = icmp sle i8 %a, 42
339+
br i1 %cmp_sle, label %less_or_equal, label %exit
340+
341+
less_or_equal:
342+
%cmp_ule = icmp samesign ule i8 %a, 42
343+
ret i1 %cmp_ule
344+
345+
exit:
346+
ret i1 false
347+
}
348+
349+
define i1 @implied_condition_cannot_simplify(i8 %a, i8 %b) {
350+
; CHECK-LABEL: @implied_condition_cannot_simplify(
351+
; CHECK-NEXT: [[CMP_SGT:%.*]] = icmp ne i8 [[A:%.*]], [[B:%.*]]
352+
; CHECK-NEXT: br i1 [[CMP_SGT]], label [[GREATER:%.*]], label [[EXIT:%.*]]
353+
; CHECK: not_equal:
354+
; CHECK-NEXT: [[CMP_UGT:%.*]] = icmp samesign ugt i8 [[A]], [[B]]
355+
; CHECK-NEXT: ret i1 [[CMP_UGT]]
356+
; CHECK: exit:
357+
; CHECK-NEXT: ret i1 false
358+
;
359+
%cmp_ne = icmp ne i8 %a, %b
360+
br i1 %cmp_ne, label %not_equal, label %exit
361+
362+
not_equal:
363+
%cmp_ugt = icmp samesign ugt i8 %a, %b
364+
ret i1 %cmp_ugt
365+
366+
exit:
367+
ret i1 false
368+
}

0 commit comments

Comments
 (0)