; This test makes sure that xor instructions are properly eliminated.
; This test is for Integer BitWidth > 64 && BitWidth <= 1024.

; RUN: opt < %s -instcombine -S | not grep "xor "
; END.


define i447 @test1(i447 %A, i447 %B) {
        ;; (A & C1)^(B & C2) -> (A & C1)|(B & C2) iff C1&C2 == 0
        %A1 = and i447 %A, 70368744177664
        %B1 = and i447 %B, 70368744177663
        %C1 = xor i447 %A1, %B1
        ret i447 %C1
}

define i1005 @test2(i1005 %x) {
        %tmp.2 = xor i1005 %x, 0
        ret i1005 %tmp.2
}

define i123 @test3(i123 %x) {
        %tmp.2 = xor i123 %x, %x
        ret i123 %tmp.2
}

define i737 @test4(i737 %x) {
        ; x ^ ~x == -1
        %NotX = xor i737 -1, %x
        %B = xor i737 %x, %NotX
        ret i737 %B
}

define i700 @test5(i700 %A) {
        ;; (A|B)^B == A & (~B)
        %t1 = or i700 %A, 288230376151711743 
        %r = xor i700 %t1, 288230376151711743 
        ret i700 %r
}

define i77 @test6(i77 %A) {
        %t1 = xor i77 %A, 23
        %r = xor i77 %t1, 23
        ret i77 %r
}

define i1023 @test7(i1023 %A) {
        ;; (A | C1) ^ C2 -> (A | C1) & ~C2 iff (C1&C2) == C2
        %B1 = or i1023 %A,   70368744177663
        %C1 = xor i1023 %B1, 703687463
        ret i1023 %C1
}
