; This test makes sure that add instructions are properly eliminated.
; This test is for Integer BitWidth <= 64 && BitWidth % 8 != 0.

; RUN: opt < %s -instcombine -S | \
; RUN:    grep -v OK | not grep add


define i1 @test1(i1 %x) {
        %tmp.2 = xor i1 %x, 1
        ;; Add of sign bit -> xor of sign bit.
        %tmp.4 = add i1 %tmp.2, 1
        ret i1 %tmp.4
}

define i47 @test2(i47 %x) {
        %tmp.2 = xor i47 %x, 70368744177664
        ;; Add of sign bit -> xor of sign bit.
        %tmp.4 = add i47 %tmp.2, 70368744177664
        ret i47 %tmp.4
}

define i15 @test3(i15 %x) {
        %tmp.2 = xor i15 %x, 16384
        ;; Add of sign bit -> xor of sign bit.
        %tmp.4 = add i15 %tmp.2, 16384
        ret i15 %tmp.4
}

define i49 @test6(i49 %x) {
        ;; (x & 254)+1 -> (x & 254)|1
        %tmp.2 = and i49 %x, 562949953421310
        %tmp.4 = add i49 %tmp.2, 1
        ret i49 %tmp.4
}
