; This tests for various complex cast elimination cases instcombine should
; handle.

target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"

; RUN: opt < %s -instcombine -S | FileCheck %s

define i1 @test1(i32 %X) {
        %A = bitcast i32 %X to i32              ; <i32> [#uses=1]
        ; Convert to setne int %X, 12
        %c = icmp ne i32 %A, 12         ; <i1> [#uses=1]
        ret i1 %c
; CHECK: %c = icmp ne i32 %X, 12
; CHECK: ret i1 %c
}

define i1 @test2(i32 %X, i32 %Y) {
        %A = bitcast i32 %X to i32              ; <i32> [#uses=1]
        %B = bitcast i32 %Y to i32              ; <i32> [#uses=1]
        ; Convert to setne int %X, %Y
        %c = icmp ne i32 %A, %B         ; <i1> [#uses=1]
        ret i1 %c
; CHECK: %c = icmp ne i32 %X, %Y
; CHECK: ret i1 %c
}

define i32 @test4(i32 %A) {
        %B = bitcast i32 %A to i32              ; <i32> [#uses=1]
        %C = shl i32 %B, 2              ; <i32> [#uses=1]
        %D = bitcast i32 %C to i32              ; <i32> [#uses=1]
        ret i32 %D
; CHECK: %C = shl i32 %A, 2
; CHECK: ret i32 %C
}

define i16 @test5(i16 %A) {
        %B = sext i16 %A to i32         ; <i32> [#uses=1]
        %C = and i32 %B, 15             ; <i32> [#uses=1]
        %D = trunc i32 %C to i16                ; <i16> [#uses=1]
        ret i16 %D
; CHECK: %C = and i16 %A, 15
; CHECK: ret i16 %C
}

define i1 @test6(i1 %A) {
        %B = zext i1 %A to i32          ; <i32> [#uses=1]
        %C = icmp ne i32 %B, 0          ; <i1> [#uses=1]
        ret i1 %C
; CHECK: ret i1 %A
}

define i1 @test6a(i1 %A) {
        %B = zext i1 %A to i32          ; <i32> [#uses=1]
        %C = icmp ne i32 %B, -1         ; <i1> [#uses=1]
        ret i1 %C
; CHECK: ret i1 true
}

define i1 @test7(i8* %A) {
        %B = bitcast i8* %A to i32*             ; <i32*> [#uses=1]
        %C = icmp eq i32* %B, null              ; <i1> [#uses=1]
        ret i1 %C
; CHECK: %C = icmp eq i8* %A, null
; CHECK: ret i1 %C
}
