; This test makes sure that or instructions are properly eliminated.
; This test is for Integer BitWidth > 64 && BitWidth <= 1024.
;
; RUN: opt < %s -instcombine -S | not grep or


define i777 @test0(i777 %X) {
    %Y = or i777 %X, 0
    ret i777 %Y
}

define i117 @test1(i117 %X) {
    %Y = or i117 %X, -1
    ret i117 %Y
} 

define i1023 @test2(i1023 %A) {
    ;; A | ~A == -1
    %NotA = xor i1023 -1, %A
    %B = or i1023 %A, %NotA
    ret i1023 %B
}

define i399 @test3(i399 %V, i399 %M) {
    ;; If we have: ((V + N) & C1) | (V & C2)
    ;; .. and C2 = ~C1 and C2 is 0+1+ and (N & C2) == 0
    ;; replace with V+N.
    %C1 = xor i399 274877906943, -1 ;; C2 = 274877906943
    %N = and i399 %M, 18446742974197923840
    %A = add i399 %V, %N
    %B = and i399 %A, %C1
    %D = and i399 %V, 274877906943
    %R = or i399 %B, %D
    ret i399 %R
}
