diff options
author | David Majnemer <david.majnemer@gmail.com> | 2014-12-26 09:10:14 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2014-12-26 09:10:14 +0000 |
commit | 54c2ca25392d242fcf1e5cdc3d97737c8b002384 (patch) | |
tree | 5c6c018a438ea98ddc5274fd43f9d0f358ddba94 /llvm/test/Transforms/InstCombine/mul.ll | |
parent | ee9eef2fd865632d7ae8f8f8f05b37b2cc518afe (diff) | |
download | bcm5719-llvm-54c2ca25392d242fcf1e5cdc3d97737c8b002384.tar.gz bcm5719-llvm-54c2ca25392d242fcf1e5cdc3d97737c8b002384.zip |
InstCombe: Infer nsw for multiplies
We already utilize this logic for reducing overflow intrinsics, it makes
sense to reuse it for normal multiplies as well.
llvm-svn: 224847
Diffstat (limited to 'llvm/test/Transforms/InstCombine/mul.ll')
-rw-r--r-- | llvm/test/Transforms/InstCombine/mul.ll | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/mul.ll b/llvm/test/Transforms/InstCombine/mul.ll index a52c31ab4af..d19338a3c8f 100644 --- a/llvm/test/Transforms/InstCombine/mul.ll +++ b/llvm/test/Transforms/InstCombine/mul.ll @@ -255,3 +255,15 @@ define i32 @test28(i32 %A) { ; CHECK-NEXT: %[[shl2:.*]] = shl i32 %[[shl1]], %A ; CHECK-NEXT: ret i32 %[[shl2]] } + +define i64 @test29(i31 %A, i31 %B) { +; CHECK-LABEL: @test29( + %C = zext i31 %A to i64 + %D = zext i31 %B to i64 + %E = mul i64 %C, %D + ret i64 %E +; CHECK: %[[zext1:.*]] = zext i31 %A to i64 +; CHECK-NEXT: %[[zext2:.*]] = zext i31 %B to i64 +; CHECK-NEXT: %[[mul:.*]] = mul nsw i64 %[[zext1]], %[[zext2]] +; CHECK-NEXT: ret i64 %[[mul]] +} |