1 ; RUN: opt < %s -instcombine -S > %t
2 ; RUN: grep select %t | count 5
6 define i32 @foo(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
7 %e = icmp slt i32 %a, %b
15 define i32 @bar(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
16 %e = icmp slt i32 %a, %b
17 %f = sext i1 %e to i32
24 define i32 @goo(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
26 %0 = icmp slt i32 %a, %b
27 %iftmp.0.0 = select i1 %0, i32 -1, i32 0
28 %1 = and i32 %iftmp.0.0, %c
29 %not = xor i32 %iftmp.0.0, -1
34 define i32 @poo(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
36 %0 = icmp slt i32 %a, %b
37 %iftmp.0.0 = select i1 %0, i32 -1, i32 0
38 %1 = and i32 %iftmp.0.0, %c
39 %iftmp = select i1 %0, i32 0, i32 -1
40 %2 = and i32 %iftmp, %d
45 define i32 @par(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
47 %0 = icmp slt i32 %a, %b
48 %iftmp.1.0 = select i1 %0, i32 -1, i32 0
49 %1 = and i32 %iftmp.1.0, %c
50 %not = xor i32 %iftmp.1.0, -1