blob: 52d59217b495c507fa577e811515bf9218a526cd [file] [log] [blame]
Chris Lattner28250982009-10-05 05:26:04 +00001; RUN: opt < %s -constprop -S | FileCheck %s
2
3%i8i1 = type {i8, i1}
4
5;;-----------------------------
6;; uadd
7;;-----------------------------
8
9define {i8, i1} @uadd_1() nounwind {
10entry:
11 %t = call {i8, i1} @llvm.uadd.with.overflow.i8(i8 42, i8 100)
12 ret {i8, i1} %t
13
14; CHECK: @uadd_1
15; CHECK: ret %i8i1 { i8 -114, i1 false }
16}
17
18define {i8, i1} @uadd_2() nounwind {
19entry:
20 %t = call {i8, i1} @llvm.uadd.with.overflow.i8(i8 142, i8 120)
21 ret {i8, i1} %t
22
23; CHECK: @uadd_2
24; CHECK: ret %i8i1 { i8 6, i1 true }
25}
26
27
28;;-----------------------------
29;; usub
30;;-----------------------------
31
32define {i8, i1} @usub_1() nounwind {
33entry:
34 %t = call {i8, i1} @llvm.usub.with.overflow.i8(i8 4, i8 2)
35 ret {i8, i1} %t
36
37; CHECK: @usub_1
38; CHECK: ret %i8i1 { i8 2, i1 false }
39}
40
41define {i8, i1} @usub_2() nounwind {
42entry:
43 %t = call {i8, i1} @llvm.usub.with.overflow.i8(i8 4, i8 6)
44 ret {i8, i1} %t
45
46; CHECK: @usub_2
47; CHECK: ret %i8i1 { i8 -2, i1 true }
48}
49
50
51
52declare {i8, i1} @llvm.uadd.with.overflow.i8(i8, i8)
53declare {i8, i1} @llvm.usub.with.overflow.i8(i8, i8)