diff options
Diffstat (limited to 'test/Transforms/InstSimplify/call.ll')
| -rw-r--r-- | test/Transforms/InstSimplify/call.ll | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/test/Transforms/InstSimplify/call.ll b/test/Transforms/InstSimplify/call.ll index fd854c5b4662..465529aef66a 100644 --- a/test/Transforms/InstSimplify/call.ll +++ b/test/Transforms/InstSimplify/call.ll @@ -1,6 +1,9 @@ ; RUN: opt < %s -instsimplify -S | FileCheck %s declare {i8, i1} @llvm.uadd.with.overflow.i8(i8 %a, i8 %b) +declare {i8, i1} @llvm.usub.with.overflow.i8(i8 %a, i8 %b) +declare {i8, i1} @llvm.ssub.with.overflow.i8(i8 %a, i8 %b) +declare {i8, i1} @llvm.umul.with.overflow.i8(i8 %a, i8 %b) define i1 @test_uadd1() { ; CHECK-LABEL: @test_uadd1( @@ -18,6 +21,27 @@ define i8 @test_uadd2() { ; CHECK-NEXT: ret i8 42 } +define {i8, i1} @test_usub1(i8 %V) { +; CHECK-LABEL: @test_usub1( + %x = call {i8, i1} @llvm.usub.with.overflow.i8(i8 %V, i8 %V) + ret {i8, i1} %x +; CHECK-NEXT: ret { i8, i1 } zeroinitializer +} + +define {i8, i1} @test_ssub1(i8 %V) { +; CHECK-LABEL: @test_ssub1( + %x = call {i8, i1} @llvm.ssub.with.overflow.i8(i8 %V, i8 %V) + ret {i8, i1} %x +; CHECK-NEXT: ret { i8, i1 } zeroinitializer +} + +define {i8, i1} @test_umul1(i8 %V) { +; CHECK-LABEL: @test_umul1( + %x = call {i8, i1} @llvm.umul.with.overflow.i8(i8 %V, i8 0) + ret {i8, i1} %x +; CHECK-NEXT: ret { i8, i1 } zeroinitializer +} + declare i256 @llvm.cttz.i256(i256 %src, i1 %is_zero_undef) define i256 @test_cttz() { @@ -109,7 +133,7 @@ entry: br i1 %cmp, label %cast.end, label %cast.notnull cast.notnull: ; preds = %entry - %add.ptr = getelementptr inbounds i8* %call, i64 4 + %add.ptr = getelementptr inbounds i8, i8* %call, i64 4 br label %cast.end cast.end: ; preds = %cast.notnull, %entry @@ -132,7 +156,7 @@ entry: br i1 %cmp, label %cast.end, label %cast.notnull cast.notnull: ; preds = %entry - %add.ptr = getelementptr inbounds i8* %call, i64 4 + %add.ptr = getelementptr inbounds i8, i8* %call, i64 4 br label %cast.end cast.end: ; preds = %cast.notnull, %entry @@ -152,7 +176,7 @@ entry: br i1 %cmp, label %cast.end, label %cast.notnull cast.notnull: ; preds = %entry - %add.ptr = getelementptr inbounds i8* %call, i64 4 + %add.ptr = getelementptr inbounds i8, i8* %call, i64 4 br label %cast.end cast.end: ; preds = %cast.notnull, %entry |
