1 ; RUN: opt < %s -instcombine -S | grep {and i32 %x, %y} | count 4 2 ; RUN: opt < %s -instcombine -S | not grep {or} 3 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 10 } 11 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 18 } 19 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 26 } 27 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 34 } 35