[llvm] 1a27238 - [CVP] Additional tests for comparison with offset (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 20 13:14:41 PDT 2020
Author: Nikita Popov
Date: 2020-09-20T22:10:34+02:00
New Revision: 1a2723809839a888f03ba69e36a358ba18c0c8ae
URL: https://github.com/llvm/llvm-project/commit/1a2723809839a888f03ba69e36a358ba18c0c8ae
DIFF: https://github.com/llvm/llvm-project/commit/1a2723809839a888f03ba69e36a358ba18c0c8ae.diff
LOG: [CVP] Additional tests for comparison with offset (NFC)
Both icmps have an additional offset here. We would fold this if
the second one didn't.
Added:
Modified:
llvm/test/Transforms/CorrelatedValuePropagation/icmp.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/CorrelatedValuePropagation/icmp.ll b/llvm/test/Transforms/CorrelatedValuePropagation/icmp.ll
index cdc5140b6548..b871fa8cab05 100644
--- a/llvm/test/Transforms/CorrelatedValuePropagation/icmp.ll
+++ b/llvm/test/Transforms/CorrelatedValuePropagation/icmp.ll
@@ -7,6 +7,7 @@ target triple = "x86_64-apple-macosx10.10.0"
declare void @check1(i1) #1
declare void @check2(i1) #1
+declare void @llvm.assume(i1)
; Make sure we propagate the value of %tmp35 to the true/false cases
@@ -16,10 +17,10 @@ define void @test1(i64 %tmp35) {
; CHECK-NEXT: [[TMP36:%.*]] = icmp sgt i64 [[TMP35:%.*]], 0
; CHECK-NEXT: br i1 [[TMP36]], label [[BB_TRUE:%.*]], label [[BB_FALSE:%.*]]
; CHECK: bb_true:
-; CHECK-NEXT: tail call void @check1(i1 false) [[ATTR0:#.*]]
+; CHECK-NEXT: tail call void @check1(i1 false) [[ATTR1:#.*]]
; CHECK-NEXT: unreachable
; CHECK: bb_false:
-; CHECK-NEXT: tail call void @check2(i1 true) [[ATTR0]]
+; CHECK-NEXT: tail call void @check2(i1 true) [[ATTR1]]
; CHECK-NEXT: unreachable
;
bb:
@@ -55,7 +56,7 @@ define void @test2(i64 %tmp35, i1 %inner_cmp) {
; CHECK-NEXT: tail call void @check1(i1 false)
; CHECK-NEXT: unreachable
; CHECK: bb_false:
-; CHECK-NEXT: tail call void @check2(i1 true) [[ATTR0]]
+; CHECK-NEXT: tail call void @check2(i1 true) [[ATTR1]]
; CHECK-NEXT: unreachable
;
bb:
@@ -619,6 +620,48 @@ exit:
ret i1 %iv
}
+define i1 @test_br_cmp_with_offset(i64 %idx) {
+; CHECK-LABEL: @test_br_cmp_with_offset(
+; CHECK-NEXT: [[IDX_OFF1:%.*]] = add i64 [[IDX:%.*]], -5
+; CHECK-NEXT: [[CMP1:%.*]] = icmp ult i64 [[IDX_OFF1]], 3
+; CHECK-NEXT: br i1 [[CMP1]], label [[IF_TRUE:%.*]], label [[IF_FALSE:%.*]]
+; CHECK: if.true:
+; CHECK-NEXT: [[IDX_OFF2:%.*]] = add nsw i64 [[IDX]], -1
+; CHECK-NEXT: [[CMP2:%.*]] = icmp ult i64 [[IDX_OFF2]], 10
+; CHECK-NEXT: ret i1 [[CMP2]]
+; CHECK: if.false:
+; CHECK-NEXT: ret i1 undef
+;
+ %idx.off1 = add i64 %idx, -5
+ %cmp1 = icmp ult i64 %idx.off1, 3
+ br i1 %cmp1, label %if.true, label %if.false
+
+if.true:
+ %idx.off2 = add i64 %idx, -1
+ %cmp2 = icmp ult i64 %idx.off2, 10
+ ret i1 %cmp2
+
+if.false:
+ ret i1 undef
+}
+
+define i1 @test_assume_cmp_with_offset(i64 %idx) {
+; CHECK-LABEL: @test_assume_cmp_with_offset(
+; CHECK-NEXT: [[IDX_OFF1:%.*]] = add i64 [[IDX:%.*]], -5
+; CHECK-NEXT: [[CMP1:%.*]] = icmp ult i64 [[IDX_OFF1]], 3
+; CHECK-NEXT: tail call void @llvm.assume(i1 [[CMP1]])
+; CHECK-NEXT: [[IDX_OFF2:%.*]] = add i64 [[IDX]], -1
+; CHECK-NEXT: [[CMP2:%.*]] = icmp ult i64 [[IDX_OFF2]], 10
+; CHECK-NEXT: ret i1 [[CMP2]]
+;
+ %idx.off1 = add i64 %idx, -5
+ %cmp1 = icmp ult i64 %idx.off1, 3
+ tail call void @llvm.assume(i1 %cmp1)
+ %idx.off2 = add i64 %idx, -1
+ %cmp2 = icmp ult i64 %idx.off2, 10
+ ret i1 %cmp2
+}
+
define void @test_cmp_phi(i8 %a) {
; CHECK-LABEL: @test_cmp_phi(
; CHECK-NEXT: entry:
More information about the llvm-commits
mailing list