New predicate simplifier!
[oota-llvm.git] / test / Transforms / PredicateSimplifier / 2006-10-22-IntOr.ll
1 ; RUN: llvm-upgrade < %s | llvm-as | opt -predsimplify -instcombine -simplifycfg -disable-output &&
2 ; RUN: llvm-upgrade < %s | llvm-as | opt -predsimplify -instcombine -simplifycfg | llvm-dis | grep -v declare | not grep fail &&
3 ; RUN: llvm-upgrade < %s | llvm-as | opt -predsimplify -instcombine -simplifycfg | llvm-dis | grep -v declare | grep -c pass | grep 3
4
5 int %test1(int %x, int %y) {
6 entry:
7         %tmp2 = or int %x, %y           ; <int> [#uses=1]
8         %tmp = seteq int %tmp2, 0               ; <bool> [#uses=1]
9         br bool %tmp, label %cond_true, label %return
10
11 cond_true:              ; preds = %entry
12         %tmp4 = seteq int %x, 0         ; <bool> [#uses=1]
13         br bool %tmp4, label %cond_true5, label %cond_false
14
15 cond_true5:             ; preds = %cond_true
16         %tmp6 = call int %pass( )               ; <int> [#uses=1]
17         ret int %tmp6
18
19 cond_false:
20         %tmp8 = call int %fail ( )              ; <int> [#uses=1]
21         ret int %tmp8
22
23 return:         ; preds = %cond_next7
24         ret int 0
25 }
26
27 int %test2(int %x, int %y) {
28 entry:
29         %tmp2 = or int %x, %y           ; <int> [#uses=1]
30         %tmp = setne int %tmp2, 0               ; <bool> [#uses=1]
31         br bool %tmp, label %cond_true, label %return
32
33 cond_true:              ; preds = %entry
34         %tmp4 = seteq int %x, 0         ; <bool> [#uses=1]
35         br bool %tmp4, label %cond_true5, label %cond_false
36
37 cond_true5:             ; preds = %cond_true
38         %tmp6 = call int %pass1( )              ; <int> [#uses=1]
39         ret int %tmp6
40
41 cond_false:
42         %tmp8 = call int %pass2( )              ; <int> [#uses=1]
43         ret int %tmp8
44
45 return:         ; preds = %cond_next7
46         ret int 0
47 }
48
49 declare int %fail()
50 declare int %pass()
51 declare int %pass1()
52 declare int %pass2()