diff options
author | Sanjay Patel <spatel@rotateright.com> | 2019-05-03 13:25:06 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2019-05-03 13:25:06 +0000 |
commit | d3cfaae24301afc85d80524ca4064695f7c5c001 (patch) | |
tree | 266a7f80f5d7af7dd42866237e5bf197b2d240a9 /llvm/test/Transforms/LICM | |
parent | ec026532d62476a23ab4a84e9e9d44f74bcbcfb9 (diff) | |
download | bcm5719-llvm-d3cfaae24301afc85d80524ca4064695f7c5c001.tar.gz bcm5719-llvm-d3cfaae24301afc85d80524ca4064695f7c5c001.zip |
[LICM] auto-generate complete test checks; NFC
llvm-svn: 359881
Diffstat (limited to 'llvm/test/Transforms/LICM')
-rw-r--r-- | llvm/test/Transforms/LICM/hoist-mustexec.ll | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/llvm/test/Transforms/LICM/hoist-mustexec.ll b/llvm/test/Transforms/LICM/hoist-mustexec.ll index 53f78e88f72..521d3529657 100644 --- a/llvm/test/Transforms/LICM/hoist-mustexec.ll +++ b/llvm/test/Transforms/LICM/hoist-mustexec.ll @@ -133,6 +133,32 @@ fail: ; pointers; should handle integers too define i32 @test4(i32* noalias nocapture readonly %a) nounwind uwtable { ; CHECK-LABEL: @test4( +; CHECK-NEXT: entry: +; CHECK-NEXT: [[LEN:%.*]] = load i32, i32* [[A:%.*]], align 4, !range !0 +; CHECK-NEXT: [[IS_ZERO:%.*]] = icmp eq i32 [[LEN]], 0 +; CHECK-NEXT: br i1 [[IS_ZERO]], label [[FAIL:%.*]], label [[PREHEADER:%.*]] +; CHECK: preheader: +; CHECK-NEXT: br label [[FOR_BODY:%.*]] +; CHECK: for.body: +; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[PREHEADER]] ], [ [[INC:%.*]], [[CONTINUE:%.*]] ] +; CHECK-NEXT: [[ACC:%.*]] = phi i32 [ 0, [[PREHEADER]] ], [ [[ADD:%.*]], [[CONTINUE]] ] +; CHECK-NEXT: [[R_CHK:%.*]] = icmp ult i32 [[IV]], [[LEN]] +; CHECK-NEXT: br i1 [[R_CHK]], label [[CONTINUE]], label [[FAIL_LOOPEXIT:%.*]] +; CHECK: continue: +; CHECK-NEXT: [[I1:%.*]] = load i32, i32* [[A]], align 4 +; CHECK-NEXT: [[ADD]] = add nsw i32 [[I1]], [[ACC]] +; CHECK-NEXT: [[INC]] = add nuw nsw i32 [[IV]], 1 +; CHECK-NEXT: [[EXITCOND:%.*]] = icmp eq i32 [[INC]], 1000 +; CHECK-NEXT: br i1 [[EXITCOND]], label [[FOR_COND_CLEANUP:%.*]], label [[FOR_BODY]] +; CHECK: for.cond.cleanup: +; CHECK-NEXT: [[ADD_LCSSA:%.*]] = phi i32 [ [[ADD]], [[CONTINUE]] ] +; CHECK-NEXT: ret i32 [[ADD_LCSSA]] +; CHECK: fail.loopexit: +; CHECK-NEXT: br label [[FAIL]] +; CHECK: fail: +; CHECK-NEXT: call void @f() +; CHECK-NEXT: ret i32 -1 +; entry: %len = load i32, i32* %a, align 4, !range !{i32 0, i32 512} %is.zero = icmp eq i32 %len, 0 @@ -145,8 +171,6 @@ for.body: %r.chk = icmp ult i32 %iv, %len br i1 %r.chk, label %continue, label %fail continue: -; CHECK-LABEL: continue -; CHECK: %i1 = load i32, i32* %a, align 4 %i1 = load i32, i32* %a, align 4 %add = add nsw i32 %i1, %acc %inc = add nuw nsw i32 %iv, 1 @@ -221,7 +245,7 @@ define i32 @test-wrongphi(i32* noalias nocapture readonly %a) nounwind uwtable { ; CHECK-LABEL: @test-wrongphi( entry: br label %for.body - + for.body: %iv = phi i32 [ 0, %entry ], [ %inc, %continue ] %acc = phi i32 [ 0, %entry ], [ %add, %continue ] |