aboutsummaryrefslogtreecommitdiff
path: root/test/Transforms/InstSimplify/call.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/Transforms/InstSimplify/call.ll')
-rw-r--r--test/Transforms/InstSimplify/call.ll30
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