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

; RUN: opt < %s -instcombine -S | FileCheck %s
; CHECK-NOT: xor

define i32 @test1(i32 %A) {
        %B = xor i32 %A, -1
        %C = xor i32 %B, -1
        ret i32 %C
}

define i1 @test2(i32 %A, i32 %B) {
        ; Can change into setge
        %cond = icmp sle i32 %A, %B
        %Ret = xor i1 %cond, true
        ret i1 %Ret
}

; Test that De Morgan's law can be instcombined.
define i32 @test3(i32 %A, i32 %B) {
        %a = xor i32 %A, -1
        %b = xor i32 %B, -1
        %c = and i32 %a, %b
        %d = xor i32 %c, -1
        ret i32 %d
}

; Test that De Morgan's law can work with constants.
define i32 @test4(i32 %A, i32 %B) {
        %a = xor i32 %A, -1
        %c = and i32 %a, 5
        %d = xor i32 %c, -1
        ret i32 %d
}

; Test the mirror of De Morgan's law.
define i32 @test5(i32 %A, i32 %B) {
        %a = xor i32 %A, -1
        %b = xor i32 %B, -1
        %c = or i32 %a, %b
        %d = xor i32 %c, -1
        ret i32 %d
}

; PR2298
define zeroext i8 @test6(i32 %a, i32 %b) {
entry:
	%tmp1not = xor i32 %a, -1
	%tmp2not = xor i32 %b, -1
	%tmp3 = icmp slt i32 %tmp1not, %tmp2not
	%retval67 = zext i1 %tmp3 to i8
	ret i8 %retval67
}

define <2 x i1> @test7(<2 x i32> %A, <2 x i32> %B) {
        %cond = icmp sle <2 x i32> %A, %B
        %Ret = xor <2 x i1> %cond, <i1 true, i1 true>
        ret <2 x i1> %Ret
}

