056d8c97dc05704cd85c253a1039f31991f31ae6
[oota-llvm.git] / test / Transforms / PredicateSimplifier / predsimplify.ll
1 ; RUN: llvm-as < %s | opt -predsimplify -instcombine -simplifycfg | llvm-dis | grep -v declare | not grep fail
2
3 void %test1(int %x) {
4 entry:
5   %A = seteq int %x, 0
6   br bool %A, label %then.1, label %else.1
7 then.1:
8   %B = seteq int %x, 1
9   br bool %B, label %then.2, label %else.1
10 then.2:
11   call void (...)* %fail( )
12   ret void
13 else.1:
14   ret void
15 }
16
17 void %test2(int %x) {
18 entry:
19   %A = seteq int %x, 0
20   %B = seteq int %x, 1
21   br bool %A, label %then.1, label %else.1
22 then.1:
23   br bool %B, label %then.2, label %else.1
24 then.2:
25   call void (...)* %fail( )
26   ret void
27 else.1:
28   ret void
29 }
30
31 void %test3(int %x) {
32 entry:
33   %A = seteq int %x, 0
34   %B = seteq int %x, 1
35   br bool %A, label %then.1, label %else.1
36 then.1:
37   br bool %B, label %then.2, label %else.1
38 then.2:
39   call void (...)* %fail( )
40   ret void
41 else.1:
42   ret void
43 }
44
45 void %test4(int %x, int %y) {
46 entry:
47   %A = seteq int %x, 0
48   %B = seteq int %y, 0
49   %C = and bool %A, %B
50   br bool %C, label %then.1, label %else.1
51 then.1:
52   %D = seteq int %x, 0
53   br bool %D, label %then.2, label %else.2
54 then.2:
55   %E = seteq int %y, 0
56   br bool %E, label %else.1, label %else.2
57 else.1:
58   ret void
59 else.2:
60   call void (...)* %fail( )
61   ret void
62 }
63
64 void %test5(int %x) {
65 entry:
66   %A = seteq int %x, 0
67   br bool %A, label %then.1, label %else.1
68 then.1:
69   ret void
70 then.2:
71   call void (...)* %fail( )
72   ret void
73 else.1:
74   %B = seteq int %x, 0
75   br bool %B, label %then.2, label %then.1
76 }
77
78 void %test6(int %x, int %y) {
79 entry:
80   %A = seteq int %x, 0
81   %B = seteq int %y, 0
82   %C = or bool %A, %B
83   br bool %C, label %then.1, label %else.1
84 then.1:
85   ret void
86 then.2:
87   call void (...)* %fail( )
88   ret void
89 else.1:
90   %D = seteq int %x, 0
91   br bool %D, label %then.2, label %else.2
92 else.2:
93   %E = setne int %y, 0
94   br bool %E, label %then.1, label %then.2
95 }
96
97 void %test7(int %x) {
98 entry:
99   %A = setne int %x, 0
100   %B = xor bool %A, true
101   br bool %B, label %then.1, label %else.1
102 then.1:
103   %C = seteq int %x, 1
104   br bool %C, label %then.2, label %else.1
105 then.2:
106   call void (...)* %fail( )
107   ret void
108 else.1:
109   ret void
110 }
111
112 void %test8(int %x) {
113 entry:
114   %A = add int %x, 1
115   %B = seteq int %x, 0
116   br bool %B, label %then.1, label %then.2
117 then.1:
118   %C = seteq int %A, 1
119   br bool %C, label %then.2, label %else.2
120 then.2:
121   ret void
122 else.2:
123   call void (...)* %fail( )
124   ret void
125 }
126
127
128 declare void %fail(...)
129
130 declare void %pass(...)