blob: 78e225a8d1c8a57cc1ce11637679bdceb833b719 [file] [log] [blame]
Duncan Sands9d32f602011-01-20 13:21:55 +00001; RUN: opt < %s -instsimplify -S | FileCheck %s
2target datalayout = "p:32:32"
3
4define i1 @ptrtoint() {
5; CHECK: @ptrtoint
6 %a = alloca i8
7 %tmp = ptrtoint i8* %a to i32
8 %r = icmp eq i32 %tmp, 0
9 ret i1 %r
10; CHECK: ret i1 false
11}
12
13define i1 @zext(i32 %x) {
14; CHECK: @zext
15 %e1 = zext i32 %x to i64
16 %e2 = zext i32 %x to i64
17 %r = icmp eq i64 %e1, %e2
18 ret i1 %r
19; CHECK: ret i1 true
20}
21
22define i1 @zext2(i1 %x) {
23; CHECK: @zext2
24 %e = zext i1 %x to i32
25 %c = icmp ne i32 %e, 0
26 ret i1 %c
27; CHECK: ret i1 %x
28}
29
Duncan Sandsd70d1a52011-01-25 09:38:29 +000030define i1 @zext3() {
31; CHECK: @zext3
32 %e = zext i1 1 to i32
33 %c = icmp ne i32 %e, 0
34 ret i1 %c
35; CHECK: ret i1 true
36}
37
Duncan Sands9d32f602011-01-20 13:21:55 +000038define i1 @sext(i32 %x) {
39; CHECK: @sext
40 %e1 = sext i32 %x to i64
41 %e2 = sext i32 %x to i64
42 %r = icmp eq i64 %e1, %e2
43 ret i1 %r
44; CHECK: ret i1 true
45}
46
47define i1 @sext2(i1 %x) {
48; CHECK: @sext2
49 %e = sext i1 %x to i32
50 %c = icmp ne i32 %e, 0
51 ret i1 %c
52; CHECK: ret i1 %x
53}
Duncan Sandsd70d1a52011-01-25 09:38:29 +000054
55define i1 @sext3() {
56; CHECK: @sext3
57 %e = sext i1 1 to i32
58 %c = icmp ne i32 %e, 0
59 ret i1 %c
60; CHECK: ret i1 true
61}
62
63define i1 @add(i32 %x, i32 %y) {
64; CHECK: @add
65 %l = lshr i32 %x, 1
66 %r = lshr i32 %y, 1
67 %s = add i32 %l, %r
68 %c = icmp eq i32 %s, 0
69 ret i1 %c
70; CHECK: ret i1 false
71}
72
73define i1 @add2(i8 %x, i8 %y) {
74; CHECK: @add2
75 %l = or i8 %x, 128
76 %r = or i8 %y, 129
77 %s = add i8 %l, %r
78 %c = icmp eq i8 %s, 0
79 ret i1 %c
80; CHECK: ret i1 false
81}
82
83define i1 @addpowtwo(i32 %x, i32 %y) {
84; CHECK: @addpowtwo
85 %l = lshr i32 %x, 1
86 %r = shl i32 1, %y
87 %s = add i32 %l, %r
88 %c = icmp eq i32 %s, 0
89 ret i1 %c
90; CHECK: ret i1 false
91}
92
93define i1 @or(i32 %x) {
94; CHECK: @or
95 %o = or i32 %x, 1
96 %c = icmp eq i32 %o, 0
97 ret i1 %c
98; CHECK: ret i1 false
99}