diff options
| author | Xin Tong <trent.xin.tong@gmail.com> | 2017-01-09 17:57:08 +0000 |
|---|---|---|
| committer | Xin Tong <trent.xin.tong@gmail.com> | 2017-01-09 17:57:08 +0000 |
| commit | c13a8e84d1fac50b99f34d419f53dbb2c5417012 (patch) | |
| tree | e6eab9ef6632cf91f944aa756f23af8c3700759e /llvm/test | |
| parent | 0ac1ce70ba5a70772ea432ffc20ec77968f15a24 (diff) | |
| download | bcm5719-llvm-c13a8e84d1fac50b99f34d419f53dbb2c5417012.tar.gz bcm5719-llvm-c13a8e84d1fac50b99f34d419f53dbb2c5417012.zip | |
Intrinsic::Bitreverse is safe to speculate
Summary: Intrinsic::Bitreverse is safe to speculate
Reviewers: hfinkel, mkuper, arsenm, jmolloy
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28471
llvm-svn: 291456
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/Transforms/LICM/hoisting.ll | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/llvm/test/Transforms/LICM/hoisting.ll b/llvm/test/Transforms/LICM/hoisting.ll index cb6981ede1e..c61131b476b 100644 --- a/llvm/test/Transforms/LICM/hoisting.ll +++ b/llvm/test/Transforms/LICM/hoisting.ll @@ -5,6 +5,8 @@ declare void @foo() +declare i32 @llvm.bitreverse.i32(i32) + ; This testcase tests for a problem where LICM hoists ; potentially trapping instructions when they are not guaranteed to execute. define i32 @test1(i1 %c) { @@ -122,3 +124,28 @@ then: ; preds = %tailrecurse ifend: ; preds = %tailrecurse ret { i32*, i32 } %d } + +; CHECK: define i32 @hoist_bitreverse(i32) +; CHECK: bitreverse +; CHECK: br label %header +define i32 @hoist_bitreverse(i32) { + br label %header + +header: + %sum = phi i32 [ 0, %1 ], [ %5, %latch ] + %2 = phi i32 [ 0, %1 ], [ %6, %latch ] + %3 = icmp slt i32 %2, 1024 + br i1 %3, label %body, label %return + +body: + %4 = call i32 @llvm.bitreverse.i32(i32 %0) + %5 = add i32 %sum, %4 + br label %latch + +latch: + %6 = add nsw i32 %2, 1 + br label %header + +return: + ret i32 %sum +} |

