[SimplifyLibCalls] Remove useless bits of this tests.
[oota-llvm.git] / test / Transforms / InstCombine / or-to-xor.ll
1 ; RUN: opt < %s -instcombine -S | grep "xor i32 %a, %b" | count 4
2 ; RUN: opt < %s -instcombine -S | not grep "and"
3
4 define i32 @func1(i32 %a, i32 %b) nounwind readnone {
5 entry:
6         %b_not = xor i32 %b, -1
7         %0 = and i32 %a, %b_not
8         %a_not = xor i32 %a, -1
9         %1 = and i32 %a_not, %b
10         %2 = or i32 %0, %1
11         ret i32 %2
12 }
13
14 define i32 @func2(i32 %a, i32 %b) nounwind readnone {
15 entry:
16         %b_not = xor i32 %b, -1
17         %0 = and i32 %b_not, %a
18         %a_not = xor i32 %a, -1
19         %1 = and i32 %a_not, %b
20         %2 = or i32 %0, %1
21         ret i32 %2
22 }
23
24 define i32 @func3(i32 %a, i32 %b) nounwind readnone {
25 entry:
26         %b_not = xor i32 %b, -1
27         %0 = and i32 %a, %b_not
28         %a_not = xor i32 %a, -1
29         %1 = and i32 %b, %a_not
30         %2 = or i32 %0, %1
31         ret i32 %2
32 }
33
34 define i32 @func4(i32 %a, i32 %b) nounwind readnone {
35 entry:
36         %b_not = xor i32 %b, -1
37         %0 = and i32 %b_not, %a
38         %a_not = xor i32 %a, -1
39         %1 = and i32 %b, %a_not
40         %2 = or i32 %0, %1
41         ret i32 %2
42 }