; RUN: llc < %s -march=c | \
; RUN:   grep __BITCAST | count 14

define i32 @test1(float %F) {
        %X = bitcast float %F to i32            ; <i32> [#uses=1]
        ret i32 %X
}

define float @test2(i32 %I) {
        %X = bitcast i32 %I to float            ; <float> [#uses=1]
        ret float %X
}

define i64 @test3(double %D) {
        %X = bitcast double %D to i64           ; <i64> [#uses=1]
        ret i64 %X
}

define double @test4(i64 %L) {
        %X = bitcast i64 %L to double           ; <double> [#uses=1]
        ret double %X
}

define double @test5(double %D) {
        %X = bitcast double %D to double                ; <double> [#uses=1]
        %Y = fadd double %X, 2.000000e+00                ; <double> [#uses=1]
        %Z = bitcast double %Y to i64           ; <i64> [#uses=1]
        %res = bitcast i64 %Z to double         ; <double> [#uses=1]
        ret double %res
}

define float @test6(float %F) {
        %X = bitcast float %F to float          ; <float> [#uses=1]
        %Y = fadd float %X, 2.000000e+00         ; <float> [#uses=1]
        %Z = bitcast float %Y to i32            ; <i32> [#uses=1]
        %res = bitcast i32 %Z to float          ; <float> [#uses=1]
        ret float %res
}

define i32 @main(i32 %argc, i8** %argv) {
        %a = call i32 @test1( float 0x400921FB40000000 )                ; <i32> [#uses=2]
        %b = call float @test2( i32 %a )                ; <float> [#uses=0]
        %c = call i64 @test3( double 0x400921FB4D12D84A )               ; <i64> [#uses=1]
        %d = call double @test4( i64 %c )               ; <double> [#uses=0]
        %e = call double @test5( double 7.000000e+00 )          ; <double> [#uses=0]
        %f = call float @test6( float 7.000000e+00 )            ; <float> [#uses=0]
        ret i32 %a
}

