; This test makes sure that these instructions are properly eliminated.

; RUN: opt < %s -instcombine -S | not grep select


define i41 @test1(i1 %C) {
	%V = select i1 %C, i41 1, i41 0  ; V = C
	ret i41 %V
}

define i999 @test2(i1 %C) {
	%V = select i1 %C, i999 0, i999 1  ; V = C
	ret i999 %V
}

define i41 @test3(i41 %X) {
    ;; (x <s 0) ? -1 : 0 -> ashr x, 31
    %t = icmp slt i41 %X, 0
    %V = select i1 %t, i41 -1, i41 0
    ret i41 %V
}

define i1023 @test4(i1023 %X) {
    ;; (x <s 0) ? -1 : 0 -> ashr x, 31
    %t = icmp slt i1023 %X, 0
    %V = select i1 %t, i1023 -1, i1023 0
    ret i1023 %V
}

define i41 @test5(i41 %X) {
    ;; ((X & 27) ? 27 : 0)
    %Y = and i41 %X, 32
    %t = icmp ne i41 %Y, 0
    %V = select i1 %t, i41 32, i41 0
    ret i41 %V
}

define i1023 @test6(i1023 %X) {
    ;; ((X & 27) ? 27 : 0)
    %Y = and i1023 %X, 64 
    %t = icmp ne i1023 %Y, 0
    %V = select i1 %t, i1023 64, i1023 0
    ret i1023 %V
}
