1; RUN: opt < %s -instcombine -S | grep "and i32 %x, %y" | count 4
2; RUN: opt < %s -instcombine -S | not grep "or"
3
4define i32 @func1(i32 %x, i32 %y) nounwind {
5entry:
6	%n = xor i32 %y, -1
7	%o = or i32 %n, %x
8	%a = and i32 %o, %y
9	ret i32 %a
10}
11
12define i32 @func2(i32 %x, i32 %y) nounwind {
13entry:
14	%n = xor i32 %y, -1
15	%o = or i32 %x, %n
16	%a = and i32 %o, %y
17	ret i32 %a
18}
19
20define i32 @func3(i32 %x, i32 %y) nounwind {
21entry:
22	%n = xor i32 %y, -1
23	%o = or i32 %n, %x
24	%a = and i32 %y, %o
25	ret i32 %a
26}
27
28define i32 @func4(i32 %x, i32 %y) nounwind {
29entry:
30	%n = xor i32 %y, -1
31	%o = or i32 %x, %n
32	%a = and i32 %y, %o
33	ret i32 %a
34}
35