When removing a function from the function set and adding it to deferred, we
[llvm.git] / test / Transforms / InstCombine / and-not-or.ll
blob9dce7b4e6fb3962bb660c6dd3801f1fcd593d5e8
1 ; RUN: opt < %s -instcombine -S | grep {and i32 %x, %y} | count 4
2 ; RUN: opt < %s -instcombine -S | not grep {or}
4 define i32 @func1(i32 %x, i32 %y) nounwind {
5 entry:
6         %n = xor i32 %y, -1
7         %o = or i32 %n, %x
8         %a = and i32 %o, %y
9         ret i32 %a
12 define i32 @func2(i32 %x, i32 %y) nounwind {
13 entry:
14         %n = xor i32 %y, -1
15         %o = or i32 %x, %n
16         %a = and i32 %o, %y
17         ret i32 %a
20 define i32 @func3(i32 %x, i32 %y) nounwind {
21 entry:
22         %n = xor i32 %y, -1
23         %o = or i32 %n, %x
24         %a = and i32 %y, %o
25         ret i32 %a
28 define i32 @func4(i32 %x, i32 %y) nounwind {
29 entry:
30         %n = xor i32 %y, -1
31         %o = or i32 %x, %n
32         %a = and i32 %y, %o
33         ret i32 %a