; This test ensures that "strength reduction" of conditional expressions are
; working.  Basically this boils down to converting setlt,gt,le,ge instructions
; into equivalent setne,eq instructions.
;
; RUN: opt < %s -instcombine -S | \
; RUN:    grep -v {icmp eq} | grep -v {icmp ne} | not grep icmp
; END.

define i1 @test1(i32 %A) {
        ; setne %A, 0
        %B = icmp uge i32 %A, 1         ; <i1> [#uses=1]
        ret i1 %B
}

define i1 @test2(i32 %A) {
       ; setne %A, 0
        %B = icmp ugt i32 %A, 0         ; <i1> [#uses=1]
        ret i1 %B
}

define i1 @test3(i8 %A) {
        ; setne %A, -128
        %B = icmp sge i8 %A, -127               ; <i1> [#uses=1]
        ret i1 %B
}

define i1 @test4(i8 %A) {
        ; setne %A, 127 
        %B = icmp sle i8 %A, 126                ; <i1> [#uses=1]
        ret i1 %B
}

define i1 @test5(i8 %A) {
        ; setne %A, 127
        %B = icmp slt i8 %A, 127                ; <i1> [#uses=1]
        ret i1 %B
}
